1(export (rename (boot boot)
2                (1/bound-identifier=? bound-identifier=?)
3                (1/compile compile)
4                (compile-keep-source-locations! compile-keep-source-locations!)
5                (1/compiled-expression-recompile compiled-expression-recompile)
6                (1/current-compile current-compile)
7                (1/current-compiled-file-roots current-compiled-file-roots)
8                (1/current-eval current-eval)
9                (1/current-library-collection-links
10                 current-library-collection-links)
11                (1/current-library-collection-paths
12                 current-library-collection-paths)
13                (1/current-load current-load)
14                (1/current-load/use-compiled current-load/use-compiled)
15                (1/current-namespace current-namespace)
16                (datum->kernel-syntax datum->kernel-syntax)
17                (1/datum->syntax datum->syntax)
18                (declare-primitive-module! declare-primitive-module!)
19                (1/dynamic-require dynamic-require)
20                (embedded-load embedded-load)
21                (1/eval eval)
22                (eval$1 eval-top-level)
23                (expand$1 expand)
24                (expander-place-init! expander-place-init!)
25                (1/find-compiled-file-roots find-compiled-file-roots)
26                (1/find-library-collection-links find-library-collection-links)
27                (1/find-library-collection-paths find-library-collection-paths)
28                (find-main-config find-main-config)
29                (1/identifier-binding identifier-binding)
30                (identifier? identifier?)
31                (1/load load)
32                (1/load-extension load-extension)
33                (1/load/use-compiled load/use-compiled)
34                (make-namespace make-namespace)
35                (maybe-raise-missing-module maybe-raise-missing-module)
36                (maybe-syntax->datum maybe-syntax->datum)
37                (1/module->language-info module->language-info)
38                (1/module-compiled-exports module-compiled-exports)
39                (1/module-compiled-indirect-exports
40                 module-compiled-indirect-exports)
41                (1/module-declared? module-declared?)
42                (1/module-path-index-join module-path-index-join)
43                (1/module-path-index? module-path-index?)
44                (1/module-path? module-path?)
45                (1/module-predefined? module-predefined?)
46                (namespace->instance namespace->instance)
47                (1/namespace-attach-module namespace-attach-module)
48                (1/namespace-attach-module-declaration
49                 namespace-attach-module-declaration)
50                (namespace-datum-introduce namespace-datum-introduce)
51                (1/namespace-mapped-symbols namespace-mapped-symbols)
52                (1/namespace-module-identifier namespace-module-identifier)
53                (1/namespace-require namespace-require)
54                (1/namespace-syntax-introduce namespace-syntax-introduce)
55                (1/namespace-variable-value namespace-variable-value)
56                (path-list-string->path-list path-list-string->path-list)
57                (1/read read)
58                (1/read-accept-compiled read-accept-compiled)
59                (1/read-syntax read-syntax)
60                (1/resolved-module-path? resolved-module-path?)
61                (seal seal)
62                (1/syntax->datum syntax->datum)
63                (1/syntax-debug-info syntax-debug-info)
64                (1/syntax-deserialize syntax-deserialize)
65                (1/syntax-e syntax-e)
66                (syntax-property$1 syntax-property)
67                (1/syntax-serialize syntax-serialize)
68                (1/syntax-shift-phase-level syntax-shift-phase-level)
69                (syntax?$1 syntax?)
70                (1/use-collection-link-paths use-collection-link-paths)
71                (1/use-compiled-file-check use-compiled-file-check)
72                (1/use-compiled-file-paths use-compiled-file-paths)
73                (1/use-user-specific-search-paths
74                 use-user-specific-search-paths)))
75(define rx2276 (regexp "^[\\][\\][?][\\]"))
76(define rx2490 (byte-regexp #vu8(94 91 92 93 91 92 93 91 63 93 91 92 93)))
77(define rx2515 (regexp "/"))
78(define rx2283 (regexp "[/\\][. ]+[/\\]*$"))
79(define rx2458 (regexp "(?<=[^ ./\\])[ .]+([/\\]*)$"))
80(define rx2566 (regexp "^\\\\\\\\[?]\\\\[a-z]:"))
81(define rx2590 (regexp "^\\\\\\\\[?]\\\\UNC\\\\"))
82(define rx2623 (regexp "^\\\\\\\\"))
83(define rx2947 (regexp "^[a-z]:"))
84(define rx2199 (byte-regexp #vu8(34)))
85(define rx2194 (byte-regexp #vu8(0)))
86(define rx2668 (regexp "[.]"))
87(define hash2725 (hash))
88(define hash2610 (hasheq))
89(define hash2589 (hasheqv))
90(define rx2640 (regexp "[.](..).*"))
91(define kw2299 (string->keyword "resolved-module-path"))
92(define kw2226 (string->keyword "syntax+props"))
93(define kw2099 (string->keyword "datum->syntax"))
94(define kw2641 (string->keyword "syntax"))
95(define kw2450 (string->keyword "none"))
96(define kw2804 (string->keyword "module-binding"))
97(define kw1932 (string->keyword "inspector"))
98(define kw2755 (string->keyword "simple-module-binding"))
99(define kw2335 (string->keyword "like-ambiguous-binding"))
100(define kw2169 (string->keyword "table-with-bulk-bindings"))
101(define kw2707 (string->keyword "bulk-binding-at"))
102(define kw2576 (string->keyword "scope-fill!"))
103(define kw2129 (string->keyword "scope"))
104(define kw2535 (string->keyword "scope+kind"))
105(define kw2241 (string->keyword "interned-scope"))
106(define kw2645 (string->keyword "multi-scope"))
107(define kw2073 (string->keyword "representative-scope-fill!"))
108(define kw2600 (string->keyword "representative-scope"))
109(define kw2201 (string->keyword "shifted-multi-scope"))
110(define kw2677 (string->keyword "local-binding"))
111(define kw2897 (string->keyword "provided"))
112(define kw2882 (string->keyword "bulk-binding+provides"))
113(define kw2762 (string->keyword "bulk-binding"))
114(define kw2607 (string->keyword "bulk-binding-registry"))
115(define rx2823 (regexp "\n"))
116(define kw2626 (string->keyword "quote"))
117(define kw2603 (string->keyword "ref"))
118(define kw3163 (string->keyword "mpi"))
119(define kw2802 (string->keyword "list"))
120(define kw2821 (string->keyword "cons"))
121(define kw2525 (string->keyword "box"))
122(define kw2967 (string->keyword "vector"))
123(define kw3357 (string->keyword "seteq"))
124(define kw2333 (string->keyword "seteqv"))
125(define kw2473 (string->keyword "set"))
126(define kw2796 (string->keyword "hasheq"))
127(define kw3245 (string->keyword "hasheqv"))
128(define kw2582 (string->keyword "hash"))
129(define kw2931 (string->keyword "prefab"))
130(define kw2496 (string->keyword "srcloc"))
131(define kw2531 (string->keyword "set-box!"))
132(define kw3046 (string->keyword "set-vector!"))
133(define kw2194 (string->keyword "set-hash!"))
134(define hash2355
135  (hasheq
136   kw2525
137   '10
138   kw2762
139   '27
140   kw2882
141   '29
142   kw2707
143   '22
144   kw2607
145   '3
146   kw2821
147   '11
148   kw2099
149   '5
150   kw2582
151   '13
152   kw2796
153   '13
154   kw3245
155   '13
156   kw1932
157   '2
158   kw2241
159   '18
160   kw2335
161   '28
162   kw2802
163   '12
164   kw2677
165   '26
166   kw2804
167   '24
168   kw3163
169   '9
170   kw2645
171   '19
172   kw2931
173   '15
174   kw2897
175   '30
176   kw2626
177   '8
178   kw2603
179   '1
180   kw2600
181   '23
182   kw2129
183   '16
184   kw2535
185   '17
186   kw2473
187   '14
188   kw3357
189   '14
190   kw2333
191   '14
192   kw2201
193   '20
194   kw2755
195   '25
196   kw2496
197   '7
198   kw2641
199   '4
200   kw2226
201   '6
202   kw2169
203   '21
204   kw2967
205   '12))
206(define hash2739
207  (hasheq
208   'all-except
209   '10
210   'for-label
211   '4
212   'for-meta
213   '1
214   'for-space
215   '6
216   'for-syntax
217   '2
218   'for-template
219   '3
220   'just-meta
221   '5
222   'just-space
223   '7
224   'only
225   '8
226   'prefix
227   '9
228   'prefix-all-except
229   '11
230   'rename
231   '12))
232(define kw2162 (string->keyword "not-recorded"))
233(define hash2430
234  (hasheq
235   '|#%variable-reference|
236   '1
237   'begin
238   '5
239   'begin0
240   '6
241   'case-lambda
242   '1
243   'gensym
244   '12
245   'if
246   '13
247   'lambda
248   '1
249   'let-values
250   '2
251   'letrec-values
252   '2
253   'make-parameter
254   '7
255   'make-struct-field-accessor
256   '9
257   'make-struct-field-mutator
258   '10
259   'make-struct-type
260   '8
261   'make-struct-type-property
262   '11
263   'quote
264   '1
265   'values
266   '3
267   'void
268   '4))
269(define kw2208 (string->keyword "cross-phase-persistent"))
270(define kw2910 (string->keyword "empty-namespace"))
271(define kw2838 (string->keyword "unsafe"))
272(define hash3012
273  (hash
274   'block->letrec
275   '3
276   'block->list
277   '0
278   'block-renames
279   '2
280   'enter-begin-for-syntax
281   '0
282   'enter-bind
283   '0
284   'enter-block
285   '1
286   'enter-list
287   '1
288   'enter-local
289   '1
290   'enter-macro
291   '2
292   'enter-prim
293   '1
294   'exit-begin-for-syntax
295   '0
296   'exit-bind
297   '0
298   'exit-case
299   '1
300   'exit-list
301   '1
302   'exit-local
303   '1
304   'exit-local-bind
305   '0
306   'exit-macro
307   '2
308   'exit-prim
309   '1
310   'exit-prim/return
311   '1
312   'finish-block
313   '1
314   'lambda-renames
315   '2
316   'letX-renames
317   '5
318   'letlift-loop
319   '1
320   'lift-end-decl
321   '3
322   'lift-expr
323   '3
324   'lift-loop
325   '1
326   'lift-module
327   '2
328   'lift-provide
329   '1
330   'lift-require
331   '3
332   'local-bind
333   '1
334   'local-post
335   '1
336   'local-pre
337   '1
338   'local-value
339   '1
340   'local-value-result
341   '1
342   'macro-post-x
343   '2
344   'macro-pre-x
345   '1
346   'module-body
347   '1
348   'module-end-lifts
349   '1
350   'module-lift-end-loop
351   '1
352   'module-lift-loop
353   '1
354   'module-pass1-case
355   '1
356   'module-pass1-lifts
357   '3
358   'module-pass2-lifts
359   '3
360   'next
361   '0
362   'next-group
363   '0
364   'opaque-expr
365   '1
366   'phase-up
367   '0
368   'prepare-env
369   '0
370   '|prim-#%app|
371   '1
372   '|prim-#%datum|
373   '1
374   '|prim-#%expression|
375   '1
376   '|prim-#%stratified|
377   '1
378   '|prim-#%top|
379   '1
380   '|prim-#%variable-reference|
381   '1
382   'prim-begin
383   '1
384   'prim-begin-for-syntax
385   '1
386   'prim-begin0
387   '1
388   'prim-case-lambda
389   '1
390   'prim-declare
391   '1
392   'prim-define-syntaxes
393   '1
394   'prim-define-values
395   '1
396   'prim-if
397   '1
398   'prim-lambda
399   '1
400   'prim-let-values
401   '1
402   'prim-letrec-syntaxes+values
403   '1
404   'prim-letrec-values
405   '1
406   'prim-module
407   '1
408   'prim-module-begin
409   '1
410   'prim-provide
411   '1
412   'prim-quote
413   '1
414   'prim-quote-syntax
415   '1
416   'prim-require
417   '1
418   'prim-set!
419   '1
420   'prim-stop
421   '1
422   'prim-submodule
423   '1
424   'prim-submodule*
425   '1
426   'prim-with-continuation-mark
427   '1
428   'rename-list
429   '1
430   'rename-one
431   '1
432   'rename-transformer
433   '1
434   'resolve
435   '1
436   'return
437   '1
438   'splice
439   '1
440   'start
441   '0
442   'start-top
443   '0
444   'stop/return
445   '1
446   'tag
447   '1
448   'tag/context
449   '1
450   'tag2
451   '2
452   'track-syntax
453   '3
454   'variable
455   '2
456   'visit
457   '1))
458(define kw2836 (string->keyword "missing"))
459(define nhash2607 (cons #f (hasheq)))
460(define rx2897 (regexp "/+"))
461(define rx2937 (regexp "[.]zo$"))
462(define rx2418 (regexp "[.]ss$"))
463(define kw2186 (string->keyword "local"))
464(define hash2390
465  (hasheq
466   'all-defined
467   '10
468   'all-defined-except
469   '11
470   'all-from
471   '8
472   'all-from-except
473   '9
474   'expand
475   '14
476   'for-label
477   '3
478   'for-meta
479   '1
480   'for-space
481   '4
482   'for-syntax
483   '2
484   'prefix-all-defined
485   '12
486   'prefix-all-defined-except
487   '13
488   'protect
489   '5
490   'rename
491   '6
492   'struct
493   '7))
494(define kws2278
495  (cons
496   (string->keyword "cross-phase-persistent")
497   (cons
498    (string->keyword "empty-namespace")
499    (cons (string->keyword "unsafe") '()))))
500(define call/ec call-with-escape-continuation)
501(define qq-append
502  (lambda (a_0 b_0)
503    (if (list? a_0)
504      (append a_0 b_0)
505      (raise-argument-error 'unquote-splicing "list?" a_0))))
506(define bad-list$1
507  (|#%name|
508   bad-list
509   (lambda (who_0 orig-l_0)
510     (begin (raise-arguments-error who_0 "not a proper list" "in" orig-l_0)))))
511(define member
512  (letrec*
513   ((member_0
514     (|#%name|
515      member
516      (lambda (v_0 orig-l_0 eql?_0)
517        (begin
518          (letrec*
519           ((loop_0
520             (|#%name|
521              loop
522              (lambda (ls_0 turtle_0)
523                (begin
524                  (if (null? ls_0)
525                    #f
526                    (if (not (pair? ls_0))
527                      (begin-unsafe
528                       (raise-arguments-error
529                        'member
530                        "not a proper list"
531                        "in"
532                        orig-l_0))
533                      (if (|#%app| eql?_0 v_0 (car ls_0))
534                        ls_0
535                        (let ((ls_1 (cdr ls_0)))
536                          (if (null? ls_1)
537                            #f
538                            (if (let ((or-part_0 (not (pair? ls_1))))
539                                  (if or-part_0 or-part_0 (eq? ls_1 turtle_0)))
540                              (begin-unsafe
541                               (raise-arguments-error
542                                'member
543                                "not a proper list"
544                                "in"
545                                orig-l_0))
546                              (if (|#%app| eql?_0 v_0 (car ls_1))
547                                ls_1
548                                (let ((app_0 (cdr ls_1)))
549                                  (loop_0 app_0 (cdr turtle_0)))))))))))))))
550           (loop_0 orig-l_0 orig-l_0)))))))
551   (case-lambda
552    ((v_0 ls_0) (member_0 v_0 ls_0 equal?))
553    ((v_0 ls_0 eql?_0)
554     (begin
555       (if (if (procedure? eql?_0) (procedure-arity-includes? eql?_0 2) #f)
556         (void)
557         (raise-argument-error 'member "(procedure-arity-includes/c 2)" eq?))
558       (member_0 v_0 ls_0 eql?_0))))))
559(define current-parameterization
560  (lambda () (continuation-mark-set-first #f parameterization-key)))
561(define call-with-parameterization
562  (lambda (paramz_0 thunk_0)
563    (begin
564      (if (parameterization? paramz_0)
565        (void)
566        (raise-argument-error
567         'call-with-parameterization
568         "parameterization?"
569         0
570         paramz_0
571         thunk_0))
572      (if (if (procedure? thunk_0) (procedure-arity-includes? thunk_0 0) #f)
573        (void)
574        (raise-argument-error
575         'call-with-parameterization
576         "(-> any)"
577         1
578         paramz_0
579         thunk_0))
580      (with-continuation-mark*
581       authentic
582       parameterization-key
583       paramz_0
584       (|#%app| thunk_0)))))
585(define-values
586 (struct:break-paramz
587  make-break-paramz
588  break-paramz?
589  break-paramz-ref
590  break-paramz-set!)
591 (make-struct-type 'break-parameterization #f 1 0 #f))
592(define current-break-parameterization
593  (lambda ()
594    (make-break-paramz (continuation-mark-set-first #f break-enabled-key))))
595(define call-with-break-parameterization
596  (lambda (paramz_0 thunk_0)
597    (begin
598      (if (break-paramz? paramz_0)
599        (void)
600        (raise-argument-error
601         'call-with-break-parameterization
602         "break-parameterization?"
603         0
604         paramz_0
605         thunk_0))
606      (if (if (procedure? thunk_0) (procedure-arity-includes? thunk_0 0) #f)
607        (void)
608        (raise-argument-error
609         'call-with-parameterization
610         "(-> any)"
611         1
612         paramz_0
613         thunk_0))
614      (begin0
615        (with-continuation-mark*
616         push-authentic
617         break-enabled-key
618         (|#%app| break-paramz-ref paramz_0 0)
619         (begin (check-for-break) (|#%app| thunk_0)))
620        (check-for-break)))))
621(define select-handler/no-breaks
622  (lambda (e_0 bpz_0 l_0)
623    (with-continuation-mark*
624     authentic
625     break-enabled-key
626     (make-thread-cell #f)
627     (letrec*
628      ((loop_0
629        (|#%name|
630         loop
631         (lambda (l_1)
632           (begin
633             (if (null? l_1)
634               (raise e_0)
635               (if (|#%app| (caar l_1) e_0)
636                 (begin0
637                   (|#%app| (cdar l_1) e_0)
638                   (with-continuation-mark*
639                    push-authentic
640                    break-enabled-key
641                    bpz_0
642                    (check-for-break)))
643                 (loop_0 (cdr l_1)))))))))
644      (loop_0 l_0)))))
645(define false-thread-cell (make-thread-cell #f))
646(define handler-prompt-key (make-continuation-prompt-tag 'handler-prompt-tag))
647(define call-handled-body
648  (lambda (bpz_0 handle-proc_0 body-thunk_0)
649    (with-continuation-mark*
650     authentic
651     break-enabled-key
652     false-thread-cell
653     (call-with-continuation-prompt
654      (lambda (bpz_1 body-thunk_1)
655        (with-continuation-mark*
656         authentic
657         break-enabled-key
658         bpz_1
659         (with-continuation-mark*
660          authentic
661          exception-handler-key
662          (lambda (e_0) (abort-current-continuation handler-prompt-key e_0))
663          (|#%app| body-thunk_1))))
664      handler-prompt-key
665      handle-proc_0
666      bpz_0
667      body-thunk_0))))
668(define call-with-exception-handler
669  (lambda (exnh_0 thunk_0)
670    (begin0
671      (with-continuation-mark*
672       push-authentic
673       exception-handler-key
674       exnh_0
675       (|#%app| thunk_0))
676      (void))))
677(define not-there (gensym))
678(define do-hash-update
679  (lambda (who_0 mut?_0 set_0 ht_0 key_0 xform_0 default_0)
680    (begin
681      (let ((v_0 (hash-ref ht_0 key_0 default_0)))
682        (if (eq? v_0 not-there)
683          (raise-mismatch-error who_0 "no value found for key: " key_0)
684          (|#%app| set_0 ht_0 key_0 (|#%app| xform_0 v_0)))))))
685(define hash-update
686  (case-lambda
687   ((ht_0 key_0 xform_0 default_0)
688    (do-hash-update 'hash-update #f hash-set ht_0 key_0 xform_0 default_0))
689   ((ht_0 key_0 xform_0)
690    (begin-unsafe
691     (do-hash-update 'hash-update #f hash-set ht_0 key_0 xform_0 not-there)))))
692(define hash-update!
693  (case-lambda
694   ((ht_0 key_0 xform_0 default_0)
695    (do-hash-update 'hash-update! #t hash-set! ht_0 key_0 xform_0 default_0))
696   ((ht_0 key_0 xform_0)
697    (begin-unsafe
698     (do-hash-update
699      'hash-update!
700      #t
701      hash-set!
702      ht_0
703      key_0
704      xform_0
705      not-there)))))
706(define hash-ref!
707  (lambda (ht_0 key_0 new_0)
708    (begin
709      (if (if (hash? ht_0) (not (immutable? ht_0)) #f)
710        (void)
711        (raise-argument-error
712         'hash-ref!
713         "(and/c hash? (not/c immutable?))"
714         0
715         ht_0
716         key_0
717         new_0))
718      (let ((v_0 (hash-ref ht_0 key_0 not-there)))
719        (if (eq? not-there v_0)
720          (let ((n_0 (if (procedure? new_0) (|#%app| new_0) new_0)))
721            (begin (hash-set! ht_0 key_0 n_0) n_0))
722          v_0)))))
723(define path-string?
724  (lambda (s_0)
725    (let ((or-part_0 (path? s_0)))
726      (if or-part_0
727        or-part_0
728        (if (string? s_0)
729          (let ((or-part_1 (relative-path? s_0)))
730            (if or-part_1 or-part_1 (absolute-path? s_0)))
731          #f)))))
732(define bsbs (string '#\x5c '#\x5c))
733(define normal-case-path
734  (lambda (s_0)
735    (begin
736      (if (let ((or-part_0 (path-for-some-system? s_0)))
737            (if or-part_0 or-part_0 (path-string? s_0)))
738        (void)
739        (raise-argument-error
740         'normal-path-case
741         "(or/c path-for-some-system? path-string?)"
742         s_0))
743      (if (if (path-for-some-system? s_0)
744            (eq? (path-convention-type s_0) 'windows)
745            (eq? (system-type) 'windows))
746        (let ((bstr_0 (if (string? s_0) #f (path->bytes s_0))))
747          (if (if (string? s_0) (regexp-match? rx2276 s_0) #f)
748            (string->path s_0)
749            (if (if bstr_0 (regexp-match? rx2490 bstr_0) #f)
750              s_0
751              (let ((norm_0
752                     (|#%name|
753                      norm
754                      (lambda (s_1)
755                        (begin
756                          (string-locale-downcase
757                           (regexp-replace* rx2515 s_1 bsbs)))))))
758                (let ((norm-tail_0
759                       (|#%name|
760                        norm-tail
761                        (lambda (s_1)
762                          (begin
763                            (if (regexp-match? rx2283 s_1)
764                              s_1
765                              (regexp-replace* rx2458 s_1 "\\1")))))))
766                  (let ((finish_0
767                         (|#%name|
768                          finish
769                          (lambda (bstr_1)
770                            (begin (bytes->path bstr_1 'windows))))))
771                    (if (string? s_0)
772                      (let ((bstr_1
773                             (string->bytes/locale
774                              (norm_0 (norm-tail_0 s_0)))))
775                        (begin-unsafe (begin (bytes->path bstr_1 'windows))))
776                      (let ((c_0 (bytes-open-converter "" "UTF-8")))
777                        (let ((bstr_1
778                               (letrec*
779                                ((loop_0
780                                  (|#%name|
781                                   loop
782                                   (lambda (offset_0)
783                                     (begin
784                                       (call-with-values
785                                        (lambda ()
786                                          (bytes-convert
787                                           c_0
788                                           bstr_0
789                                           offset_0
790                                           (unsafe-bytes-length bstr_0)))
791                                        (case-lambda
792                                         ((new-bstr_0 used_0 status_0)
793                                          (let ((s_1
794                                                 (bytes->string/locale
795                                                  new-bstr_0)))
796                                            (let ((tail-s_0
797                                                   (if (eq? status_0 'complete)
798                                                     (norm-tail_0 s_1)
799                                                     s_1)))
800                                              (let ((done_0
801                                                     (string->bytes/locale
802                                                      (norm_0 tail-s_0))))
803                                                (if (eq? status_0 'complete)
804                                                  done_0
805                                                  (if (eq? status_0 'aborts)
806                                                    (bytes-append
807                                                     done_0
808                                                     (subbytes
809                                                      bstr_0
810                                                      (+ offset_0 used_0)))
811                                                    (let ((app_0
812                                                           (let ((app_0
813                                                                  (+
814                                                                   offset_0
815                                                                   used_0)))
816                                                             (subbytes
817                                                              bstr_0
818                                                              app_0
819                                                              (+
820                                                               offset_0
821                                                               used_0
822                                                               1)))))
823                                                      (bytes-append
824                                                       done_0
825                                                       app_0
826                                                       (loop_0
827                                                        (+
828                                                         offset_0
829                                                         used_0
830                                                         1))))))))))
831                                         (args
832                                          (raise-binding-result-arity-error
833                                           3
834                                           args)))))))))
835                                (loop_0 0))))
836                          (begin-unsafe
837                           (begin (bytes->path bstr_1 'windows))))))))))))
838        (if (string? s_0) (string->path s_0) s_0)))))
839(define check-extension-call
840  (lambda (s_0 sfx_0 who_0 sep_0 trust-sep?_0)
841    (begin
842      (call-with-values
843       (lambda ()
844         (if (not
845              (let ((or-part_0 (path-for-some-system? s_0)))
846                (if or-part_0 or-part_0 (path-string? s_0))))
847           (values "(or/c path-for-some-system? path-string?)" 0)
848           (if (not
849                (let ((or-part_0 (string? sfx_0)))
850                  (if or-part_0 or-part_0 (bytes? sfx_0))))
851             (values "(or/c string? bytes?)" 1)
852             (if (not
853                  (if trust-sep?_0
854                    trust-sep?_0
855                    (let ((or-part_0 (string? sep_0)))
856                      (if or-part_0 or-part_0 (bytes? sep_0)))))
857               (values "(or/c string? bytes?)" 2)
858               (values #f #f)))))
859       (case-lambda
860        ((err-msg_0 err-index_0)
861         (if err-msg_0
862           (if trust-sep?_0
863             (raise-argument-error who_0 err-msg_0 err-index_0 s_0 sfx_0)
864             (raise-argument-error
865              who_0
866              err-msg_0
867              err-index_0
868              s_0
869              sfx_0
870              sep_0))
871           (void)))
872        (args (raise-binding-result-arity-error 2 args))))
873      (call-with-values
874       (lambda () (split-path s_0))
875       (case-lambda
876        ((base_0 name_0 dir?_0)
877         (begin
878           (if (not base_0)
879             (raise-mismatch-error
880              who_0
881              "cannot add an extension to a root path: "
882              s_0)
883             (void))
884           (values base_0 name_0)))
885        (args (raise-binding-result-arity-error 3 args)))))))
886(define path-adjust-extension
887  (lambda (name_0 sep_0 rest-bytes_0 s_0 sfx_0 trust-sep?_0)
888    (call-with-values
889     (lambda () (check-extension-call s_0 sfx_0 name_0 sep_0 trust-sep?_0))
890     (case-lambda
891      ((base_0 name_1)
892       (let ((bs_0 (path-element->bytes name_1)))
893         (let ((finish_0
894                (|#%name|
895                 finish
896                 (lambda (i_0 sep_1 i2_0)
897                   (begin
898                     (let ((app_0
899                            (let ((app_0 (subbytes bs_0 0 i_0)))
900                              (let ((app_1
901                                     (if (string? sep_1)
902                                       (string->bytes/locale sep_1 63)
903                                       sep_1)))
904                                (let ((app_2 (|#%app| rest-bytes_0 bs_0 i2_0)))
905                                  (bytes-append
906                                   app_0
907                                   app_1
908                                   app_2
909                                   (if (string? sfx_0)
910                                     (string->bytes/locale sfx_0 63)
911                                     sfx_0)))))))
912                       (bytes->path-element
913                        app_0
914                        (if (path-for-some-system? s_0)
915                          (path-convention-type s_0)
916                          (system-path-convention-type)))))))))
917           (let ((new-name_0
918                  (letrec*
919                   ((loop_0
920                     (|#%name|
921                      loop
922                      (lambda (i_0)
923                        (begin
924                          (if (zero? i_0)
925                            (finish_0
926                             (unsafe-bytes-length bs_0)
927                             #vu8()
928                             (unsafe-bytes-length bs_0))
929                            (let ((i_1 (sub1 i_0)))
930                              (if (if (not (zero? i_1))
931                                    (eq? 46 (unsafe-bytes-ref bs_0 i_1))
932                                    #f)
933                                (finish_0 i_1 sep_0 (add1 i_1))
934                                (loop_0 i_1)))))))))
935                   (loop_0 (unsafe-bytes-length bs_0)))))
936             (if (path-for-some-system? base_0)
937               (build-path base_0 new-name_0)
938               new-name_0)))))
939      (args (raise-binding-result-arity-error 2 args))))))
940(define path-replace-extension
941  (lambda (s_0 sfx_0)
942    (path-adjust-extension
943     'path-replace-extension
944     #vu8()
945     (lambda (bs_0 i_0) #vu8())
946     s_0
947     sfx_0
948     #t)))
949(define path-add-extension
950  (case-lambda
951   ((s_0 sfx_0)
952    (path-adjust-extension 'path-add-extension #vu8(95) subbytes s_0 sfx_0 #t))
953   ((s_0 sfx_0 sep_0)
954    (path-adjust-extension 'path-add-extension sep_0 subbytes s_0 sfx_0 #f))))
955(define reroot-path
956  (lambda (p_0 root_0)
957    (begin
958      (if (let ((or-part_0 (path-string? p_0)))
959            (if or-part_0 or-part_0 (path-for-some-system? p_0)))
960        (void)
961        (raise-argument-error
962         'reroot-path
963         "(or/c path-string? path-for-some-system?)"
964         0
965         p_0
966         root_0))
967      (begin
968        (if (let ((or-part_0 (path-string? root_0)))
969              (if or-part_0 or-part_0 (path-for-some-system? root_0)))
970          (void)
971          (raise-argument-error
972           'reroot-path
973           "(or/c path-string? path-for-some-system?)"
974           1
975           p_0
976           root_0))
977        (let ((conv_0
978               (if (path-for-some-system? p_0)
979                 (path-convention-type p_0)
980                 (system-path-convention-type))))
981          (begin
982            (if (let ((or-part_0 (complete-path? p_0)))
983                  (if or-part_0
984                    or-part_0
985                    (eq? (system-path-convention-type) conv_0)))
986              (void)
987              (raise-arguments-error
988               'reroot-path
989               "path is not complete and not the platform's convention"
990               "path"
991               p_0
992               "platform convention type"
993               (system-path-convention-type)))
994            (begin
995              (if (eq?
996                   (if (path-for-some-system? root_0)
997                     (path-convention-type root_0)
998                     (system-path-convention-type))
999                   conv_0)
1000                (void)
1001                (raise-arguments-error
1002                 'reroot-path
1003                 "given paths use different conventions"
1004                 "path"
1005                 p_0
1006                 "root path"
1007                 root_0))
1008              (let ((c-p_0
1009                     (normal-case-path
1010                      (cleanse-path
1011                       (if (complete-path? p_0)
1012                         p_0
1013                         (path->complete-path p_0))))))
1014                (let ((bstr_0 (path->bytes c-p_0)))
1015                  (if (eq? conv_0 'unix)
1016                    (if (bytes=? bstr_0 #vu8(47))
1017                      (if (path-for-some-system? root_0)
1018                        root_0
1019                        (string->path root_0))
1020                      (build-path
1021                       root_0
1022                       (bytes->path (subbytes (path->bytes c-p_0) 1) conv_0)))
1023                    (if (eq? conv_0 'windows)
1024                      (build-path
1025                       root_0
1026                       (bytes->path
1027                        (if (regexp-match? rx2566 bstr_0)
1028                          (let ((app_0 (subbytes bstr_0 4 5)))
1029                            (bytes-append
1030                             #vu8(92 92 63 92 82 69 76 92)
1031                             app_0
1032                             #vu8(92)
1033                             (subbytes bstr_0 6)))
1034                          (if (regexp-match? rx2590 bstr_0)
1035                            (bytes-append
1036                             #vu8(92 92 63 92 82 69 76 92)
1037                             (subbytes bstr_0 4))
1038                            (if (regexp-match? rx2590 bstr_0)
1039                              (bytes-append
1040                               #vu8(92 92 63 92 82 69 76 92)
1041                               (subbytes bstr_0 4))
1042                              (if (regexp-match? rx2623 bstr_0)
1043                                (bytes-append #vu8(85 78 67 92) (subbytes bstr_0 2))
1044                                (if (regexp-match? rx2947 bstr_0)
1045                                  (let ((app_0 (subbytes bstr_0 0 1)))
1046                                    (bytes-append app_0 (subbytes bstr_0 2)))
1047                                  (void))))))
1048                        conv_0))
1049                      (void))))))))))))
1050(define rx:path-list #f)
1051(define init-rx:path-list!
1052  (lambda ()
1053    (if rx:path-list
1054      (void)
1055      (set! rx:path-list
1056        (byte-regexp
1057         (string->bytes/utf-8
1058          (let ((sep_0 (if (eq? (system-type) 'windows) ";" ":")))
1059            (format "([^~a]*)~a(.*)" sep_0 sep_0))))))))
1060(define cons-path
1061  (lambda (default_0 s_0 l_0)
1062    (let ((s_1
1063           (if (eq? (system-type) 'windows)
1064             (regexp-replace* rx2199 s_0 #vu8())
1065             s_0)))
1066      (if (bytes=? s_1 #vu8())
1067        (append default_0 l_0)
1068        (cons (bytes->path s_1) l_0)))))
1069(define path-list-string->path-list
1070  (lambda (s_0 default_0)
1071    (begin
1072      (if (let ((or-part_0 (bytes? s_0)))
1073            (if or-part_0 or-part_0 (string? s_0)))
1074        (void)
1075        (raise-argument-error
1076         'path-list-string->path-list
1077         "(or/c bytes? string?)"
1078         s_0))
1079      (if (regexp-match? rx2194 s_0)
1080        (let ((label_0 (if (bytes? s_0) "byte string" "string")))
1081          (raise-arguments-error
1082           'path-list-string->path-list
1083           (format "given ~a contains a nul character" label_0)
1084           label_0
1085           s_0))
1086        (void))
1087      (if (if (list? default_0)
1088            (andmap
1089             (lambda (p_0)
1090               (let ((or-part_0 (eq? p_0 'same)))
1091                 (if or-part_0 or-part_0 path?)))
1092             default_0)
1093            #f)
1094        (void)
1095        (raise-argument-error
1096         'path-list-string->path-list
1097         "(listof path?)"
1098         default_0))
1099      (init-rx:path-list!)
1100      (letrec*
1101       ((loop_0
1102         (|#%name|
1103          loop
1104          (lambda (s_1)
1105            (begin
1106              (let ((m_0 (regexp-match rx:path-list s_1)))
1107                (if m_0
1108                  (let ((app_0 (cadr m_0)))
1109                    (cons-path default_0 app_0 (loop_0 (caddr m_0))))
1110                  (cons-path default_0 s_1 null))))))))
1111       (loop_0 (if (string? s_0) (string->bytes/utf-8 s_0) s_0))))))
1112(define find-executable-path
1113  (case-lambda
1114   ((program_0 libpath_0 reverse?_0)
1115    (begin
1116      (if (path-string? program_0)
1117        (void)
1118        (raise-argument-error 'find-executable-path "path-string?" program_0))
1119      (if (let ((or-part_0 (not libpath_0)))
1120            (if or-part_0
1121              or-part_0
1122              (if (path-string? libpath_0) (relative-path? libpath_0) #f)))
1123        (void)
1124        (raise-argument-error
1125         'find-executable-path
1126         "(or/c #f (and/c path-string? relative-path?))"
1127         libpath_0))
1128      (letrec*
1129       ((found-exec_0
1130         (|#%name|
1131          found-exec
1132          (lambda (exec-name_0)
1133            (begin
1134              (if libpath_0
1135                (call-with-values
1136                 (lambda () (split-path exec-name_0))
1137                 (case-lambda
1138                  ((base_0 name_0 isdir?_0)
1139                   (let ((next_0
1140                          (|#%name|
1141                           next
1142                           (lambda ()
1143                             (begin
1144                               (let ((resolved_0 (resolve-path exec-name_0)))
1145                                 (if (equal? resolved_0 exec-name_0)
1146                                   #f
1147                                   (if (relative-path? resolved_0)
1148                                     (found-exec_0
1149                                      (build-path base_0 resolved_0))
1150                                     (found-exec_0 resolved_0)))))))))
1151                     (let ((or-part_0 (if reverse?_0 (next_0) #f)))
1152                       (if or-part_0
1153                         or-part_0
1154                         (let ((or-part_1
1155                                (if (path? base_0)
1156                                  (let ((lib_0 (build-path base_0 libpath_0)))
1157                                    (if (let ((or-part_1
1158                                               (directory-exists? lib_0)))
1159                                          (if or-part_1
1160                                            or-part_1
1161                                            (file-exists? lib_0)))
1162                                      lib_0
1163                                      #f))
1164                                  #f)))
1165                           (if or-part_1
1166                             or-part_1
1167                             (if (not reverse?_0) (next_0) #f)))))))
1168                  (args (raise-binding-result-arity-error 3 args))))
1169                exec-name_0)))))
1170        (try-exec_0
1171         (|#%name|
1172          try-exec
1173          (lambda (program_1)
1174            (begin
1175              (if (if (relative-path? program_1)
1176                    (call-with-values
1177                     (lambda () (split-path program_1))
1178                     (case-lambda
1179                      ((base_0 name_0 dir?_0) (eq? base_0 'relative))
1180                      (args (raise-binding-result-arity-error 3 args))))
1181                    #f)
1182                (let ((paths-bstr_0
1183                       (environment-variables-ref
1184                        (current-environment-variables)
1185                        #vu8(80 65 84 72))))
1186                  (let ((win-add_0
1187                         (|#%name|
1188                          win-add
1189                          (lambda (s_0)
1190                            (begin
1191                              (if (eq? (system-type) 'windows)
1192                                (cons (bytes->path #vu8(46)) s_0)
1193                                s_0))))))
1194                    (let ((paths-bstr_1 paths-bstr_0))
1195                      (letrec*
1196                       ((loop_0
1197                         (|#%name|
1198                          loop
1199                          (lambda (paths_0)
1200                            (begin
1201                              (if (null? paths_0)
1202                                #f
1203                                (let ((base_0
1204                                       (path->complete-path (car paths_0))))
1205                                  (let ((name_0 (build-path base_0 program_1)))
1206                                    (if (file-exists? name_0)
1207                                      (found-exec_0 name_0)
1208                                      (loop_0 (cdr paths_0)))))))))))
1209                       (loop_0
1210                        (win-add_0
1211                         (if paths-bstr_1
1212                           (path-list-string->path-list paths-bstr_1 null)
1213                           null)))))))
1214                (let ((p_0 (path->complete-path program_1)))
1215                  (if (file-exists? p_0) (found-exec_0 p_0) #f))))))))
1216       (let ((or-part_0 (try-exec_0 program_0)))
1217         (if or-part_0
1218           or-part_0
1219           (if (eq? 'windows (system-type))
1220             (call-with-values
1221              (lambda () (split-path program_0))
1222              (case-lambda
1223               ((base_0 name_0 dir?_0)
1224                (if (path? name_0)
1225                  (if (not (regexp-match? rx2668 name_0))
1226                    (try-exec_0
1227                     (path-replace-extension program_0 #vu8(46 101 120 101)))
1228                    #f)
1229                  #f))
1230               (args (raise-binding-result-arity-error 3 args))))
1231             #f))))))
1232   ((program_0 libpath_0) (find-executable-path program_0 libpath_0 #f))
1233   ((program_0) (find-executable-path program_0 #f #f))))
1234(define call-with-default-reading-parameterization
1235  (lambda (thunk_0)
1236    (if (if (procedure? thunk_0) (procedure-arity-includes? thunk_0 0) #f)
1237      (with-continuation-mark*
1238       authentic
1239       parameterization-key
1240       (extend-parameterization
1241        (continuation-mark-set-first #f parameterization-key)
1242        read-case-sensitive
1243        #t
1244        1/read-square-bracket-as-paren
1245        #t
1246        1/read-curly-brace-as-paren
1247        #t
1248        1/read-square-bracket-with-tag
1249        #f
1250        1/read-curly-brace-with-tag
1251        #f
1252        1/read-accept-box
1253        #t
1254        1/read-accept-compiled
1255        #f
1256        read-accept-bar-quote
1257        #t
1258        1/read-accept-graph
1259        #t
1260        1/read-decimal-as-inexact
1261        #t
1262        1/read-single-flonum
1263        #f
1264        1/read-cdot
1265        #f
1266        1/read-accept-dot
1267        #t
1268        1/read-accept-infix-dot
1269        #t
1270        1/read-accept-quasiquote
1271        #t
1272        1/read-accept-reader
1273        #f
1274        1/read-accept-lang
1275        #t
1276        1/current-readtable
1277        #f)
1278       (|#%app| thunk_0))
1279      (raise-argument-error
1280       'call-with-default-reading-parameterization
1281       "(procedure-arity-includes/c 0)"
1282       thunk_0))))
1283(define-values
1284 (prop:keyword-impersonator keyword-impersonator? keyword-impersonator-ref)
1285 (make-struct-type-property 'keyword-impersonator))
1286(define keyword-procedure-impersonator-of
1287  (lambda (v_0)
1288    (if (keyword-impersonator? v_0)
1289      (|#%app| (keyword-impersonator-ref v_0) v_0)
1290      #f)))
1291(define-values
1292 (struct:keyword-procedure
1293  mk-kw-proc
1294  keyword-procedure?
1295  keyword-procedure-ref
1296  keyword-procedure-set!)
1297 (let ((app_0
1298        (list
1299         (cons prop:checked-procedure #t)
1300         (cons prop:impersonator-of keyword-procedure-impersonator-of))))
1301   (make-struct-type
1302    'keyword-procedure
1303    #f
1304    4
1305    0
1306    #f
1307    app_0
1308    (current-inspector)
1309    #f
1310    '(0 1 2 3))))
1311(define keyword-procedure-required
1312  (make-struct-field-accessor keyword-procedure-ref 2))
1313(define keyword-procedure-allowed
1314  (make-struct-field-accessor keyword-procedure-ref 3))
1315(define-values
1316 (prop:procedure-accessor procedure-accessor? procedure-accessor-ref)
1317 (make-struct-type-property
1318  'procedure
1319  (lambda (v_0 info-l_0)
1320    (if (exact-integer? v_0)
1321      (make-struct-field-accessor (list-ref info-l_0 3) v_0)
1322      #f))))
1323(define-values
1324 (new-prop:procedure new-procedure? new-procedure-ref)
1325 (make-struct-type-property
1326  'procedure
1327  #f
1328  (list (cons prop:procedure values) (cons prop:procedure-accessor values))
1329  #t))
1330(define procedure-keywords
1331  (lambda (p_0)
1332    (if (keyword-procedure? p_0)
1333      (let ((app_0 (keyword-procedure-required p_0)))
1334        (values app_0 (keyword-procedure-allowed p_0)))
1335      (if (procedure? p_0)
1336        (if (new-procedure? p_0)
1337          (let ((v_0 (new-procedure-ref p_0)))
1338            (if (procedure? v_0)
1339              (procedure-keywords v_0)
1340              (let ((a_0 (procedure-accessor-ref p_0)))
1341                (if a_0
1342                  (procedure-keywords (|#%app| a_0 p_0))
1343                  (values null null)))))
1344          (values null null))
1345        (raise-argument-error 'procedure-keywords "procedure?" p_0)))))
1346(define print-values
1347  (lambda vs_0 (begin (for-each (current-print) vs_0) (apply values vs_0))))
1348(define reverse$1
1349  (|#%name|
1350   reverse
1351   (lambda (l_0)
1352     (begin
1353       (begin
1354         (letrec*
1355          ((loop_0
1356            (|#%name|
1357             loop
1358             (lambda (a_0 l_1)
1359               (begin
1360                 (if (null? l_1)
1361                   a_0
1362                   (let ((app_0 (cons (car l_1) a_0)))
1363                     (loop_0 app_0 (cdr l_1)))))))))
1364          (loop_0 null l_0)))))))
1365(define-values
1366 (sort vector-sort vector-sort!)
1367 (let ((generic-sort_0
1368        (|#%name|
1369         generic-sort
1370         (lambda (A_0 less-than?_0 n_0)
1371           (begin
1372             (let ((n/2-_0 (unsafe-fxrshift n_0 1)))
1373               (let ((n/2+_0 (unsafe-fx- n_0 n/2-_0)))
1374                 (letrec*
1375                  ((copying-mergesort_0
1376                    (|#%name|
1377                     copying-mergesort
1378                     (lambda (Alo_0 Blo_0 n_1)
1379                       (begin
1380                         (if (unsafe-fx= n_1 1)
1381                           (unsafe-vector-set!
1382                            A_0
1383                            Blo_0
1384                            (unsafe-vector-ref A_0 Alo_0))
1385                           (if (unsafe-fx= n_1 2)
1386                             (let ((x_0 (unsafe-vector-ref A_0 Alo_0)))
1387                               (let ((y_0
1388                                      (unsafe-vector-ref
1389                                       A_0
1390                                       (unsafe-fx+ Alo_0 1))))
1391                                 (let ((x_1 x_0))
1392                                   (if (|#%app| less-than?_0 y_0 x_1)
1393                                     (begin
1394                                       (unsafe-vector-set! A_0 Blo_0 y_0)
1395                                       (unsafe-vector-set!
1396                                        A_0
1397                                        (unsafe-fx+ Blo_0 1)
1398                                        x_1))
1399                                     (begin
1400                                       (unsafe-vector-set! A_0 Blo_0 x_1)
1401                                       (unsafe-vector-set!
1402                                        A_0
1403                                        (unsafe-fx+ Blo_0 1)
1404                                        y_0))))))
1405                             (if (unsafe-fx< n_1 16)
1406                               (begin
1407                                 (unsafe-vector-set!
1408                                  A_0
1409                                  Blo_0
1410                                  (unsafe-vector-ref A_0 Alo_0))
1411                                 (letrec*
1412                                  ((iloop_0
1413                                    (|#%name|
1414                                     iloop
1415                                     (lambda (i_0)
1416                                       (begin
1417                                         (if (unsafe-fx< i_0 n_1)
1418                                           (let ((ref-i_0
1419                                                  (unsafe-vector-ref
1420                                                   A_0
1421                                                   (unsafe-fx+ Alo_0 i_0))))
1422                                             (letrec*
1423                                              ((jloop_0
1424                                                (|#%name|
1425                                                 jloop
1426                                                 (lambda (j_0)
1427                                                   (begin
1428                                                     (let ((ref-j-1_0
1429                                                            (unsafe-vector-ref
1430                                                             A_0
1431                                                             (unsafe-fx-
1432                                                              j_0
1433                                                              1))))
1434                                                       (if (if (unsafe-fx<
1435                                                                Blo_0
1436                                                                j_0)
1437                                                             (|#%app|
1438                                                              less-than?_0
1439                                                              ref-i_0
1440                                                              ref-j-1_0)
1441                                                             #f)
1442                                                         (begin
1443                                                           (unsafe-vector-set!
1444                                                            A_0
1445                                                            j_0
1446                                                            ref-j-1_0)
1447                                                           (jloop_0
1448                                                            (unsafe-fx-
1449                                                             j_0
1450                                                             1)))
1451                                                         (begin
1452                                                           (unsafe-vector-set!
1453                                                            A_0
1454                                                            j_0
1455                                                            ref-i_0)
1456                                                           (iloop_0
1457                                                            (unsafe-fx+
1458                                                             i_0
1459                                                             1))))))))))
1460                                              (jloop_0
1461                                               (unsafe-fx+ Blo_0 i_0))))
1462                                           (void)))))))
1463                                  (iloop_0 1)))
1464                               (let ((n/2-_1 (unsafe-fxrshift n_1 1)))
1465                                 (let ((n/2+_1 (unsafe-fx- n_1 n/2-_1)))
1466                                   (let ((Amid1_0 (unsafe-fx+ Alo_0 n/2-_1)))
1467                                     (let ((Amid2_0 (unsafe-fx+ Alo_0 n/2+_1)))
1468                                       (let ((Bmid1_0
1469                                              (unsafe-fx+ Blo_0 n/2-_1)))
1470                                         (begin
1471                                           (copying-mergesort_0
1472                                            Amid1_0
1473                                            Bmid1_0
1474                                            n/2+_1)
1475                                           (copying-mergesort_0
1476                                            Alo_0
1477                                            Amid2_0
1478                                            n/2-_1)
1479                                           (let ((b2_0 (unsafe-fx+ Blo_0 n_1)))
1480                                             (letrec*
1481                                              ((loop_0
1482                                                (|#%name|
1483                                                 loop
1484                                                 (lambda (a1_0 b1_0 c1_0)
1485                                                   (begin
1486                                                     (let ((x_0
1487                                                            (unsafe-vector-ref
1488                                                             A_0
1489                                                             a1_0)))
1490                                                       (let ((y_0
1491                                                              (unsafe-vector-ref
1492                                                               A_0
1493                                                               b1_0)))
1494                                                         (let ((x_1 x_0))
1495                                                           (if (not
1496                                                                (|#%app|
1497                                                                 less-than?_0
1498                                                                 y_0
1499                                                                 x_1))
1500                                                             (begin
1501                                                               (unsafe-vector-set!
1502                                                                A_0
1503                                                                c1_0
1504                                                                x_1)
1505                                                               (let ((a1_1
1506                                                                      (unsafe-fx+
1507                                                                       a1_0
1508                                                                       1)))
1509                                                                 (let ((c1_1
1510                                                                        (unsafe-fx+
1511                                                                         c1_0
1512                                                                         1)))
1513                                                                   (if (unsafe-fx<
1514                                                                        c1_1
1515                                                                        b1_0)
1516                                                                     (loop_0
1517                                                                      a1_1
1518                                                                      b1_0
1519                                                                      c1_1)
1520                                                                     (void)))))
1521                                                             (begin
1522                                                               (unsafe-vector-set!
1523                                                                A_0
1524                                                                c1_0
1525                                                                y_0)
1526                                                               (let ((b1_1
1527                                                                      (unsafe-fx+
1528                                                                       b1_0
1529                                                                       1)))
1530                                                                 (let ((c1_1
1531                                                                        (unsafe-fx+
1532                                                                         c1_0
1533                                                                         1)))
1534                                                                   (if (unsafe-fx<=
1535                                                                        b2_0
1536                                                                        b1_1)
1537                                                                     (letrec*
1538                                                                      ((loop_1
1539                                                                        (|#%name|
1540                                                                         loop
1541                                                                         (lambda (a1_1
1542                                                                                  c1_2)
1543                                                                           (begin
1544                                                                             (if (unsafe-fx<
1545                                                                                  c1_2
1546                                                                                  b1_1)
1547                                                                               (begin
1548                                                                                 (unsafe-vector-set!
1549                                                                                  A_0
1550                                                                                  c1_2
1551                                                                                  (unsafe-vector-ref
1552                                                                                   A_0
1553                                                                                   a1_1))
1554                                                                                 (loop_1
1555                                                                                  (unsafe-fx+
1556                                                                                   a1_1
1557                                                                                   1)
1558                                                                                  (unsafe-fx+
1559                                                                                   c1_2
1560                                                                                   1)))
1561                                                                               (void)))))))
1562                                                                      (loop_1
1563                                                                       a1_0
1564                                                                       c1_1))
1565                                                                     (loop_0
1566                                                                      a1_0
1567                                                                      b1_1
1568                                                                      c1_1))))))))))))))
1569                                              (loop_0
1570                                               Amid2_0
1571                                               Bmid1_0
1572                                               Blo_0)))))))))))))))))
1573                  (begin
1574                    (copying-mergesort_0 n/2-_0 n_0 n/2+_0)
1575                    (if (zero? n/2-_0)
1576                      (void)
1577                      (copying-mergesort_0 0 n/2+_0 n/2-_0))
1578                    (letrec*
1579                     ((loop_0
1580                       (|#%name|
1581                        loop
1582                        (lambda (a1_0 b1_0 c1_0)
1583                          (begin
1584                            (let ((x_0 (unsafe-vector-ref A_0 a1_0)))
1585                              (let ((y_0 (unsafe-vector-ref A_0 b1_0)))
1586                                (let ((x_1 x_0))
1587                                  (if (|#%app| less-than?_0 x_1 y_0)
1588                                    (begin
1589                                      (unsafe-vector-set! A_0 c1_0 x_1)
1590                                      (let ((a1_1 (unsafe-fx+ a1_0 1)))
1591                                        (let ((c1_1 (unsafe-fx+ c1_0 1)))
1592                                          (if (unsafe-fx< c1_1 b1_0)
1593                                            (loop_0 a1_1 b1_0 c1_1)
1594                                            (void)))))
1595                                    (begin
1596                                      (unsafe-vector-set! A_0 c1_0 y_0)
1597                                      (let ((b1_1 (unsafe-fx+ b1_0 1)))
1598                                        (let ((c1_1 (unsafe-fx+ c1_0 1)))
1599                                          (if (unsafe-fx<= n_0 b1_1)
1600                                            (letrec*
1601                                             ((loop_1
1602                                               (|#%name|
1603                                                loop
1604                                                (lambda (a1_1 c1_2)
1605                                                  (begin
1606                                                    (if (unsafe-fx< c1_2 b1_1)
1607                                                      (begin
1608                                                        (unsafe-vector-set!
1609                                                         A_0
1610                                                         c1_2
1611                                                         (unsafe-vector-ref
1612                                                          A_0
1613                                                          a1_1))
1614                                                        (loop_1
1615                                                         (unsafe-fx+ a1_1 1)
1616                                                         (unsafe-fx+ c1_2 1)))
1617                                                      (void)))))))
1618                                             (loop_1 a1_0 c1_1))
1619                                            (loop_0
1620                                             a1_0
1621                                             b1_1
1622                                             c1_1))))))))))))))
1623                     (loop_0 n_0 n/2+_0 0)))))))))))
1624   (let ((generic-sort/key_0
1625          (|#%name|
1626           generic-sort/key
1627           (lambda (A_0 less-than?_0 n_0 key_0)
1628             (begin
1629               (let ((n/2-_0 (unsafe-fxrshift n_0 1)))
1630                 (let ((n/2+_0 (unsafe-fx- n_0 n/2-_0)))
1631                   (letrec*
1632                    ((copying-mergesort_0
1633                      (|#%name|
1634                       copying-mergesort
1635                       (lambda (Alo_0 Blo_0 n_1)
1636                         (begin
1637                           (if (unsafe-fx= n_1 1)
1638                             (unsafe-vector-set!
1639                              A_0
1640                              Blo_0
1641                              (unsafe-vector-ref A_0 Alo_0))
1642                             (if (unsafe-fx= n_1 2)
1643                               (let ((x_0 (unsafe-vector-ref A_0 Alo_0)))
1644                                 (let ((y_0
1645                                        (unsafe-vector-ref
1646                                         A_0
1647                                         (unsafe-fx+ Alo_0 1))))
1648                                   (let ((x_1 x_0))
1649                                     (if (if key_0
1650                                           (let ((app_0 (|#%app| key_0 y_0)))
1651                                             (|#%app|
1652                                              less-than?_0
1653                                              app_0
1654                                              (|#%app| key_0 x_1)))
1655                                           (|#%app| less-than?_0 y_0 x_1))
1656                                       (begin
1657                                         (unsafe-vector-set! A_0 Blo_0 y_0)
1658                                         (unsafe-vector-set!
1659                                          A_0
1660                                          (unsafe-fx+ Blo_0 1)
1661                                          x_1))
1662                                       (begin
1663                                         (unsafe-vector-set! A_0 Blo_0 x_1)
1664                                         (unsafe-vector-set!
1665                                          A_0
1666                                          (unsafe-fx+ Blo_0 1)
1667                                          y_0))))))
1668                               (if (unsafe-fx< n_1 16)
1669                                 (begin
1670                                   (unsafe-vector-set!
1671                                    A_0
1672                                    Blo_0
1673                                    (unsafe-vector-ref A_0 Alo_0))
1674                                   (letrec*
1675                                    ((iloop_0
1676                                      (|#%name|
1677                                       iloop
1678                                       (lambda (i_0)
1679                                         (begin
1680                                           (if (unsafe-fx< i_0 n_1)
1681                                             (let ((ref-i_0
1682                                                    (unsafe-vector-ref
1683                                                     A_0
1684                                                     (unsafe-fx+ Alo_0 i_0))))
1685                                               (letrec*
1686                                                ((jloop_0
1687                                                  (|#%name|
1688                                                   jloop
1689                                                   (lambda (j_0)
1690                                                     (begin
1691                                                       (let ((ref-j-1_0
1692                                                              (unsafe-vector-ref
1693                                                               A_0
1694                                                               (unsafe-fx-
1695                                                                j_0
1696                                                                1))))
1697                                                         (if (if (unsafe-fx<
1698                                                                  Blo_0
1699                                                                  j_0)
1700                                                               (if key_0
1701                                                                 (let ((app_0
1702                                                                        (|#%app|
1703                                                                         key_0
1704                                                                         ref-i_0)))
1705                                                                   (|#%app|
1706                                                                    less-than?_0
1707                                                                    app_0
1708                                                                    (|#%app|
1709                                                                     key_0
1710                                                                     ref-j-1_0)))
1711                                                                 (|#%app|
1712                                                                  less-than?_0
1713                                                                  ref-i_0
1714                                                                  ref-j-1_0))
1715                                                               #f)
1716                                                           (begin
1717                                                             (unsafe-vector-set!
1718                                                              A_0
1719                                                              j_0
1720                                                              ref-j-1_0)
1721                                                             (jloop_0
1722                                                              (unsafe-fx-
1723                                                               j_0
1724                                                               1)))
1725                                                           (begin
1726                                                             (unsafe-vector-set!
1727                                                              A_0
1728                                                              j_0
1729                                                              ref-i_0)
1730                                                             (iloop_0
1731                                                              (unsafe-fx+
1732                                                               i_0
1733                                                               1))))))))))
1734                                                (jloop_0
1735                                                 (unsafe-fx+ Blo_0 i_0))))
1736                                             (void)))))))
1737                                    (iloop_0 1)))
1738                                 (let ((n/2-_1 (unsafe-fxrshift n_1 1)))
1739                                   (let ((n/2+_1 (unsafe-fx- n_1 n/2-_1)))
1740                                     (let ((Amid1_0 (unsafe-fx+ Alo_0 n/2-_1)))
1741                                       (let ((Amid2_0
1742                                              (unsafe-fx+ Alo_0 n/2+_1)))
1743                                         (let ((Bmid1_0
1744                                                (unsafe-fx+ Blo_0 n/2-_1)))
1745                                           (begin
1746                                             (copying-mergesort_0
1747                                              Amid1_0
1748                                              Bmid1_0
1749                                              n/2+_1)
1750                                             (copying-mergesort_0
1751                                              Alo_0
1752                                              Amid2_0
1753                                              n/2-_1)
1754                                             (let ((b2_0
1755                                                    (unsafe-fx+ Blo_0 n_1)))
1756                                               (letrec*
1757                                                ((loop_0
1758                                                  (|#%name|
1759                                                   loop
1760                                                   (lambda (a1_0 b1_0 c1_0)
1761                                                     (begin
1762                                                       (let ((x_0
1763                                                              (unsafe-vector-ref
1764                                                               A_0
1765                                                               a1_0)))
1766                                                         (let ((y_0
1767                                                                (unsafe-vector-ref
1768                                                                 A_0
1769                                                                 b1_0)))
1770                                                           (let ((x_1 x_0))
1771                                                             (if (not
1772                                                                  (if key_0
1773                                                                    (let ((app_0
1774                                                                           (|#%app|
1775                                                                            key_0
1776                                                                            y_0)))
1777                                                                      (|#%app|
1778                                                                       less-than?_0
1779                                                                       app_0
1780                                                                       (|#%app|
1781                                                                        key_0
1782                                                                        x_1)))
1783                                                                    (|#%app|
1784                                                                     less-than?_0
1785                                                                     y_0
1786                                                                     x_1)))
1787                                                               (begin
1788                                                                 (unsafe-vector-set!
1789                                                                  A_0
1790                                                                  c1_0
1791                                                                  x_1)
1792                                                                 (let ((a1_1
1793                                                                        (unsafe-fx+
1794                                                                         a1_0
1795                                                                         1)))
1796                                                                   (let ((c1_1
1797                                                                          (unsafe-fx+
1798                                                                           c1_0
1799                                                                           1)))
1800                                                                     (if (unsafe-fx<
1801                                                                          c1_1
1802                                                                          b1_0)
1803                                                                       (loop_0
1804                                                                        a1_1
1805                                                                        b1_0
1806                                                                        c1_1)
1807                                                                       (void)))))
1808                                                               (begin
1809                                                                 (unsafe-vector-set!
1810                                                                  A_0
1811                                                                  c1_0
1812                                                                  y_0)
1813                                                                 (let ((b1_1
1814                                                                        (unsafe-fx+
1815                                                                         b1_0
1816                                                                         1)))
1817                                                                   (let ((c1_1
1818                                                                          (unsafe-fx+
1819                                                                           c1_0
1820                                                                           1)))
1821                                                                     (if (unsafe-fx<=
1822                                                                          b2_0
1823                                                                          b1_1)
1824                                                                       (letrec*
1825                                                                        ((loop_1
1826                                                                          (|#%name|
1827                                                                           loop
1828                                                                           (lambda (a1_1
1829                                                                                    c1_2)
1830                                                                             (begin
1831                                                                               (if (unsafe-fx<
1832                                                                                    c1_2
1833                                                                                    b1_1)
1834                                                                                 (begin
1835                                                                                   (unsafe-vector-set!
1836                                                                                    A_0
1837                                                                                    c1_2
1838                                                                                    (unsafe-vector-ref
1839                                                                                     A_0
1840                                                                                     a1_1))
1841                                                                                   (loop_1
1842                                                                                    (unsafe-fx+
1843                                                                                     a1_1
1844                                                                                     1)
1845                                                                                    (unsafe-fx+
1846                                                                                     c1_2
1847                                                                                     1)))
1848                                                                                 (void)))))))
1849                                                                        (loop_1
1850                                                                         a1_0
1851                                                                         c1_1))
1852                                                                       (loop_0
1853                                                                        a1_0
1854                                                                        b1_1
1855                                                                        c1_1))))))))))))))
1856                                                (loop_0
1857                                                 Amid2_0
1858                                                 Bmid1_0
1859                                                 Blo_0)))))))))))))))))
1860                    (begin
1861                      (copying-mergesort_0 n/2-_0 n_0 n/2+_0)
1862                      (if (zero? n/2-_0)
1863                        (void)
1864                        (copying-mergesort_0 0 n/2+_0 n/2-_0))
1865                      (letrec*
1866                       ((loop_0
1867                         (|#%name|
1868                          loop
1869                          (lambda (a1_0 b1_0 c1_0)
1870                            (begin
1871                              (let ((x_0 (unsafe-vector-ref A_0 a1_0)))
1872                                (let ((y_0 (unsafe-vector-ref A_0 b1_0)))
1873                                  (let ((x_1 x_0))
1874                                    (if (if key_0
1875                                          (let ((app_0 (|#%app| key_0 x_1)))
1876                                            (|#%app|
1877                                             less-than?_0
1878                                             app_0
1879                                             (|#%app| key_0 y_0)))
1880                                          (|#%app| less-than?_0 x_1 y_0))
1881                                      (begin
1882                                        (unsafe-vector-set! A_0 c1_0 x_1)
1883                                        (let ((a1_1 (unsafe-fx+ a1_0 1)))
1884                                          (let ((c1_1 (unsafe-fx+ c1_0 1)))
1885                                            (if (unsafe-fx< c1_1 b1_0)
1886                                              (loop_0 a1_1 b1_0 c1_1)
1887                                              (void)))))
1888                                      (begin
1889                                        (unsafe-vector-set! A_0 c1_0 y_0)
1890                                        (let ((b1_1 (unsafe-fx+ b1_0 1)))
1891                                          (let ((c1_1 (unsafe-fx+ c1_0 1)))
1892                                            (if (unsafe-fx<= n_0 b1_1)
1893                                              (letrec*
1894                                               ((loop_1
1895                                                 (|#%name|
1896                                                  loop
1897                                                  (lambda (a1_1 c1_2)
1898                                                    (begin
1899                                                      (if (unsafe-fx<
1900                                                           c1_2
1901                                                           b1_1)
1902                                                        (begin
1903                                                          (unsafe-vector-set!
1904                                                           A_0
1905                                                           c1_2
1906                                                           (unsafe-vector-ref
1907                                                            A_0
1908                                                            a1_1))
1909                                                          (loop_1
1910                                                           (unsafe-fx+ a1_1 1)
1911                                                           (unsafe-fx+
1912                                                            c1_2
1913                                                            1)))
1914                                                        (void)))))))
1915                                               (loop_1 a1_0 c1_1))
1916                                              (loop_0
1917                                               a1_0
1918                                               b1_1
1919                                               c1_1))))))))))))))
1920                       (loop_0 n_0 n/2+_0 0)))))))))))
1921     (values
1922      (case-lambda
1923       ((lst_0 less-than?_0)
1924        (let ((n_0 (length lst_0)))
1925          (if (unsafe-fx= n_0 0)
1926            lst_0
1927            (if (letrec*
1928                 ((loop_0
1929                   (|#%name|
1930                    loop
1931                    (lambda (last_0 next_0)
1932                      (begin
1933                        (let ((or-part_0 (null? next_0)))
1934                          (if or-part_0
1935                            or-part_0
1936                            (if (not
1937                                 (|#%app|
1938                                  less-than?_0
1939                                  (unsafe-car next_0)
1940                                  last_0))
1941                              (loop_0 (unsafe-car next_0) (unsafe-cdr next_0))
1942                              #f))))))))
1943                 (let ((app_0 (car lst_0))) (loop_0 app_0 (cdr lst_0))))
1944              lst_0
1945              (if (unsafe-fx<= n_0 3)
1946                (if (unsafe-fx= n_0 1)
1947                  lst_0
1948                  (if (unsafe-fx= n_0 2)
1949                    (let ((app_0 (cadr lst_0))) (list app_0 (car lst_0)))
1950                    (let ((a_0 (car lst_0)))
1951                      (let ((b_0 (cadr lst_0)))
1952                        (let ((c_0 (caddr lst_0)))
1953                          (let ((b_1 b_0) (a_1 a_0))
1954                            (if (|#%app| less-than?_0 b_1 a_1)
1955                              (if (|#%app| less-than?_0 c_0 b_1)
1956                                (list c_0 b_1 a_1)
1957                                (if (|#%app| less-than?_0 c_0 a_1)
1958                                  (list b_1 c_0 a_1)
1959                                  (list b_1 a_1 c_0)))
1960                              (if (|#%app| less-than?_0 c_0 a_1)
1961                                (list c_0 a_1 b_1)
1962                                (list a_1 c_0 b_1)))))))))
1963                (let ((vec_0 (make-vector (+ n_0 (ceiling (/ n_0 2))))))
1964                  (begin
1965                    (letrec*
1966                     ((loop_0
1967                       (|#%name|
1968                        loop
1969                        (lambda (i_0 lst_1)
1970                          (begin
1971                            (if (pair? lst_1)
1972                              (begin
1973                                (vector-set! vec_0 i_0 (car lst_1))
1974                                (let ((app_0 (add1 i_0)))
1975                                  (loop_0 app_0 (cdr lst_1))))
1976                              (void)))))))
1977                     (loop_0 0 lst_0))
1978                    (generic-sort_0 vec_0 less-than?_0 n_0)
1979                    (letrec*
1980                     ((loop_0
1981                       (|#%name|
1982                        loop
1983                        (lambda (i_0 r_0)
1984                          (begin
1985                            (let ((i_1 (sub1 i_0)))
1986                              (if (< i_1 0)
1987                                r_0
1988                                (loop_0
1989                                 i_1
1990                                 (cons (vector-ref vec_0 i_1) r_0)))))))))
1991                     (loop_0 n_0 '())))))))))
1992       ((lst_0 less-than?_0 getkey_0)
1993        (if (if getkey_0 (not (eq? values getkey_0)) #f)
1994          (|#%app|
1995           (check-not-unsafe-undefined sort 'sort)
1996           lst_0
1997           less-than?_0
1998           getkey_0
1999           #f)
2000          (|#%app|
2001           (check-not-unsafe-undefined sort 'sort)
2002           lst_0
2003           less-than?_0)))
2004       ((lst_0 less-than?_0 getkey_0 cache-keys?_0)
2005        (if (if getkey_0 (not (eq? values getkey_0)) #f)
2006          (let ((n_0 (length lst_0)))
2007            (if (unsafe-fx= n_0 0)
2008              lst_0
2009              (if cache-keys?_0
2010                (let ((vec_0 (make-vector (+ n_0 (ceiling (/ n_0 2))))))
2011                  (begin
2012                    (letrec*
2013                     ((loop_0
2014                       (|#%name|
2015                        loop
2016                        (lambda (i_0 lst_1)
2017                          (begin
2018                            (if (pair? lst_1)
2019                              (let ((x_0 (car lst_1)))
2020                                (begin
2021                                  (unsafe-vector-set!
2022                                   vec_0
2023                                   i_0
2024                                   (cons (|#%app| getkey_0 x_0) x_0))
2025                                  (loop_0 (unsafe-fx+ i_0 1) (cdr lst_1))))
2026                              (void)))))))
2027                     (loop_0 0 lst_0))
2028                    (generic-sort/key_0 vec_0 less-than?_0 n_0 unsafe-car)
2029                    (letrec*
2030                     ((loop_0
2031                       (|#%name|
2032                        loop
2033                        (lambda (i_0 r_0)
2034                          (begin
2035                            (let ((i_1 (unsafe-fx- i_0 1)))
2036                              (if (unsafe-fx< i_1 0)
2037                                r_0
2038                                (loop_0
2039                                 i_1
2040                                 (cons
2041                                  (unsafe-cdr (unsafe-vector-ref vec_0 i_1))
2042                                  r_0)))))))))
2043                     (loop_0 n_0 '()))))
2044                (if (letrec*
2045                     ((loop_0
2046                       (|#%name|
2047                        loop
2048                        (lambda (last_0 next_0)
2049                          (begin
2050                            (let ((or-part_0 (null? next_0)))
2051                              (if or-part_0
2052                                or-part_0
2053                                (if (not
2054                                     (if getkey_0
2055                                       (let ((app_0
2056                                              (|#%app|
2057                                               getkey_0
2058                                               (unsafe-car next_0))))
2059                                         (|#%app|
2060                                          less-than?_0
2061                                          app_0
2062                                          (|#%app| getkey_0 last_0)))
2063                                       (|#%app|
2064                                        less-than?_0
2065                                        (unsafe-car next_0)
2066                                        last_0)))
2067                                  (loop_0
2068                                   (unsafe-car next_0)
2069                                   (unsafe-cdr next_0))
2070                                  #f))))))))
2071                     (let ((app_0 (car lst_0))) (loop_0 app_0 (cdr lst_0))))
2072                  lst_0
2073                  (if (unsafe-fx<= n_0 3)
2074                    (if (unsafe-fx= n_0 1)
2075                      lst_0
2076                      (if (unsafe-fx= n_0 2)
2077                        (let ((app_0 (cadr lst_0))) (list app_0 (car lst_0)))
2078                        (let ((a_0 (car lst_0)))
2079                          (let ((b_0 (cadr lst_0)))
2080                            (let ((c_0 (caddr lst_0)))
2081                              (let ((b_1 b_0) (a_1 a_0))
2082                                (if (if getkey_0
2083                                      (let ((app_0 (|#%app| getkey_0 b_1)))
2084                                        (|#%app|
2085                                         less-than?_0
2086                                         app_0
2087                                         (|#%app| getkey_0 a_1)))
2088                                      (|#%app| less-than?_0 b_1 a_1))
2089                                  (if (if getkey_0
2090                                        (let ((app_0 (|#%app| getkey_0 c_0)))
2091                                          (|#%app|
2092                                           less-than?_0
2093                                           app_0
2094                                           (|#%app| getkey_0 b_1)))
2095                                        (|#%app| less-than?_0 c_0 b_1))
2096                                    (list c_0 b_1 a_1)
2097                                    (if (if getkey_0
2098                                          (let ((app_0 (|#%app| getkey_0 c_0)))
2099                                            (|#%app|
2100                                             less-than?_0
2101                                             app_0
2102                                             (|#%app| getkey_0 a_1)))
2103                                          (|#%app| less-than?_0 c_0 a_1))
2104                                      (list b_1 c_0 a_1)
2105                                      (list b_1 a_1 c_0)))
2106                                  (if (if getkey_0
2107                                        (let ((app_0 (|#%app| getkey_0 c_0)))
2108                                          (|#%app|
2109                                           less-than?_0
2110                                           app_0
2111                                           (|#%app| getkey_0 a_1)))
2112                                        (|#%app| less-than?_0 c_0 a_1))
2113                                    (list c_0 a_1 b_1)
2114                                    (list a_1 c_0 b_1)))))))))
2115                    (let ((vec_0 (make-vector (+ n_0 (ceiling (/ n_0 2))))))
2116                      (begin
2117                        (letrec*
2118                         ((loop_0
2119                           (|#%name|
2120                            loop
2121                            (lambda (i_0 lst_1)
2122                              (begin
2123                                (if (pair? lst_1)
2124                                  (begin
2125                                    (vector-set! vec_0 i_0 (car lst_1))
2126                                    (let ((app_0 (add1 i_0)))
2127                                      (loop_0 app_0 (cdr lst_1))))
2128                                  (void)))))))
2129                         (loop_0 0 lst_0))
2130                        (generic-sort/key_0 vec_0 less-than?_0 n_0 getkey_0)
2131                        (letrec*
2132                         ((loop_0
2133                           (|#%name|
2134                            loop
2135                            (lambda (i_0 r_0)
2136                              (begin
2137                                (let ((i_1 (sub1 i_0)))
2138                                  (if (< i_1 0)
2139                                    r_0
2140                                    (loop_0
2141                                     i_1
2142                                     (cons (vector-ref vec_0 i_1) r_0)))))))))
2143                         (loop_0 n_0 '())))))))))
2144          (|#%app|
2145           (check-not-unsafe-undefined sort 'sort)
2146           lst_0
2147           less-than?_0))))
2148      (case-lambda
2149       ((vec_0 less-than?_0 start_0 end_0)
2150        (let ((n_0 (- end_0 start_0)))
2151          (let ((dst-vec_0 (make-vector n_0)))
2152            (begin
2153              (if (unsafe-fx= n_0 0)
2154                (void)
2155                (if (letrec*
2156                     ((loop_0
2157                       (|#%name|
2158                        loop
2159                        (lambda (prev-val_0 next-index_0)
2160                          (begin
2161                            (let ((or-part_0 (unsafe-fx= next-index_0 end_0)))
2162                              (if or-part_0
2163                                or-part_0
2164                                (let ((next-val_0
2165                                       (unsafe-vector-ref vec_0 next-index_0)))
2166                                  (if (not
2167                                       (|#%app|
2168                                        less-than?_0
2169                                        next-val_0
2170                                        prev-val_0))
2171                                    (loop_0
2172                                     next-val_0
2173                                     (unsafe-fx+ next-index_0 1))
2174                                    #f)))))))))
2175                     (loop_0
2176                      (unsafe-vector-ref vec_0 start_0)
2177                      (unsafe-fx+ start_0 1)))
2178                  (vector-copy! dst-vec_0 0 vec_0 start_0 end_0)
2179                  (if (unsafe-fx<= n_0 3)
2180                    (begin
2181                      (vector-copy! dst-vec_0 0 vec_0 start_0 end_0)
2182                      (if (unsafe-fx= n_0 1)
2183                        (void)
2184                        (if (unsafe-fx= n_0 2)
2185                          (let ((tmp_0 (unsafe-vector-ref dst-vec_0 0)))
2186                            (begin
2187                              (unsafe-vector-set!
2188                               dst-vec_0
2189                               0
2190                               (unsafe-vector-ref dst-vec_0 1))
2191                              (unsafe-vector-set! dst-vec_0 1 tmp_0)))
2192                          (let ((a_0 (unsafe-vector-ref dst-vec_0 0)))
2193                            (let ((b_0 (unsafe-vector-ref dst-vec_0 1)))
2194                              (let ((c_0 (unsafe-vector-ref dst-vec_0 2)))
2195                                (let ((b_1 b_0) (a_1 a_0))
2196                                  (if (|#%app| less-than?_0 b_1 a_1)
2197                                    (if (|#%app| less-than?_0 c_0 b_1)
2198                                      (begin
2199                                        (unsafe-vector-set! dst-vec_0 0 c_0)
2200                                        (unsafe-vector-set! dst-vec_0 2 a_1))
2201                                      (if (|#%app| less-than?_0 c_0 a_1)
2202                                        (begin
2203                                          (unsafe-vector-set! dst-vec_0 0 b_1)
2204                                          (unsafe-vector-set! dst-vec_0 1 c_0)
2205                                          (unsafe-vector-set! dst-vec_0 2 a_1))
2206                                        (begin
2207                                          (unsafe-vector-set! dst-vec_0 0 b_1)
2208                                          (unsafe-vector-set!
2209                                           dst-vec_0
2210                                           1
2211                                           a_1))))
2212                                    (if (|#%app| less-than?_0 c_0 a_1)
2213                                      (begin
2214                                        (unsafe-vector-set! dst-vec_0 0 c_0)
2215                                        (unsafe-vector-set! dst-vec_0 1 a_1)
2216                                        (unsafe-vector-set! dst-vec_0 2 b_1))
2217                                      (begin
2218                                        (unsafe-vector-set! dst-vec_0 1 c_0)
2219                                        (unsafe-vector-set!
2220                                         dst-vec_0
2221                                         2
2222                                         b_1)))))))))))
2223                    (let ((work-vec_0
2224                           (make-vector (+ n_0 (ceiling (/ n_0 2))) #f)))
2225                      (begin
2226                        (vector-copy! work-vec_0 0 vec_0 start_0 end_0)
2227                        (generic-sort_0 work-vec_0 less-than?_0 n_0)
2228                        (vector-copy! dst-vec_0 0 work-vec_0 0 n_0))))))
2229              dst-vec_0))))
2230       ((vec_0 less-than?_0 start_0 end_0 getkey_0 cache-keys?_0)
2231        (if (if getkey_0 (not (eq? values getkey_0)) #f)
2232          (let ((n_0 (- end_0 start_0)))
2233            (let ((dst-vec_0 (make-vector n_0)))
2234              (begin
2235                (if (unsafe-fx= n_0 0)
2236                  (void)
2237                  (if cache-keys?_0
2238                    (let ((work-vec_0
2239                           (make-vector (+ n_0 (ceiling (/ n_0 2))) #t)))
2240                      (begin
2241                        (letrec*
2242                         ((loop_0
2243                           (|#%name|
2244                            loop
2245                            (lambda (i_0)
2246                              (begin
2247                                (if (unsafe-fx< i_0 n_0)
2248                                  (begin
2249                                    (let ((x_0
2250                                           (unsafe-vector-ref
2251                                            vec_0
2252                                            (unsafe-fx+ i_0 start_0))))
2253                                      (unsafe-vector-set!
2254                                       work-vec_0
2255                                       i_0
2256                                       (cons (|#%app| getkey_0 x_0) x_0)))
2257                                    (loop_0 (unsafe-fx+ i_0 1)))
2258                                  (void)))))))
2259                         (loop_0 0))
2260                        (generic-sort/key_0
2261                         work-vec_0
2262                         less-than?_0
2263                         n_0
2264                         unsafe-car)
2265                        (letrec*
2266                         ((loop_0
2267                           (|#%name|
2268                            loop
2269                            (lambda (i_0)
2270                              (begin
2271                                (if (unsafe-fx< i_0 n_0)
2272                                  (begin
2273                                    (unsafe-vector-set!
2274                                     dst-vec_0
2275                                     (unsafe-fx+ i_0 0)
2276                                     (unsafe-cdr
2277                                      (unsafe-vector-ref work-vec_0 i_0)))
2278                                    (loop_0 (unsafe-fx+ i_0 1)))
2279                                  (void)))))))
2280                         (loop_0 0))))
2281                    (if (letrec*
2282                         ((loop_0
2283                           (|#%name|
2284                            loop
2285                            (lambda (prev-val_0 next-index_0)
2286                              (begin
2287                                (let ((or-part_0
2288                                       (unsafe-fx= next-index_0 end_0)))
2289                                  (if or-part_0
2290                                    or-part_0
2291                                    (let ((next-val_0
2292                                           (unsafe-vector-ref
2293                                            vec_0
2294                                            next-index_0)))
2295                                      (if (not
2296                                           (if getkey_0
2297                                             (let ((app_0
2298                                                    (|#%app|
2299                                                     getkey_0
2300                                                     next-val_0)))
2301                                               (|#%app|
2302                                                less-than?_0
2303                                                app_0
2304                                                (|#%app| getkey_0 prev-val_0)))
2305                                             (|#%app|
2306                                              less-than?_0
2307                                              next-val_0
2308                                              prev-val_0)))
2309                                        (loop_0
2310                                         next-val_0
2311                                         (unsafe-fx+ next-index_0 1))
2312                                        #f)))))))))
2313                         (loop_0
2314                          (unsafe-vector-ref vec_0 start_0)
2315                          (unsafe-fx+ start_0 1)))
2316                      (vector-copy! dst-vec_0 0 vec_0 start_0 end_0)
2317                      (if (unsafe-fx<= n_0 3)
2318                        (begin
2319                          (vector-copy! dst-vec_0 0 vec_0 start_0 end_0)
2320                          (if (unsafe-fx= n_0 1)
2321                            (void)
2322                            (if (unsafe-fx= n_0 2)
2323                              (let ((tmp_0 (unsafe-vector-ref dst-vec_0 0)))
2324                                (begin
2325                                  (unsafe-vector-set!
2326                                   dst-vec_0
2327                                   0
2328                                   (unsafe-vector-ref dst-vec_0 1))
2329                                  (unsafe-vector-set! dst-vec_0 1 tmp_0)))
2330                              (let ((a_0 (unsafe-vector-ref dst-vec_0 0)))
2331                                (let ((b_0 (unsafe-vector-ref dst-vec_0 1)))
2332                                  (let ((c_0 (unsafe-vector-ref dst-vec_0 2)))
2333                                    (let ((b_1 b_0) (a_1 a_0))
2334                                      (if (if getkey_0
2335                                            (let ((app_0
2336                                                   (|#%app| getkey_0 b_1)))
2337                                              (|#%app|
2338                                               less-than?_0
2339                                               app_0
2340                                               (|#%app| getkey_0 a_1)))
2341                                            (|#%app| less-than?_0 b_1 a_1))
2342                                        (if (if getkey_0
2343                                              (let ((app_0
2344                                                     (|#%app| getkey_0 c_0)))
2345                                                (|#%app|
2346                                                 less-than?_0
2347                                                 app_0
2348                                                 (|#%app| getkey_0 b_1)))
2349                                              (|#%app| less-than?_0 c_0 b_1))
2350                                          (begin
2351                                            (unsafe-vector-set!
2352                                             dst-vec_0
2353                                             0
2354                                             c_0)
2355                                            (unsafe-vector-set!
2356                                             dst-vec_0
2357                                             2
2358                                             a_1))
2359                                          (if (if getkey_0
2360                                                (let ((app_0
2361                                                       (|#%app| getkey_0 c_0)))
2362                                                  (|#%app|
2363                                                   less-than?_0
2364                                                   app_0
2365                                                   (|#%app| getkey_0 a_1)))
2366                                                (|#%app| less-than?_0 c_0 a_1))
2367                                            (begin
2368                                              (unsafe-vector-set!
2369                                               dst-vec_0
2370                                               0
2371                                               b_1)
2372                                              (unsafe-vector-set!
2373                                               dst-vec_0
2374                                               1
2375                                               c_0)
2376                                              (unsafe-vector-set!
2377                                               dst-vec_0
2378                                               2
2379                                               a_1))
2380                                            (begin
2381                                              (unsafe-vector-set!
2382                                               dst-vec_0
2383                                               0
2384                                               b_1)
2385                                              (unsafe-vector-set!
2386                                               dst-vec_0
2387                                               1
2388                                               a_1))))
2389                                        (if (if getkey_0
2390                                              (let ((app_0
2391                                                     (|#%app| getkey_0 c_0)))
2392                                                (|#%app|
2393                                                 less-than?_0
2394                                                 app_0
2395                                                 (|#%app| getkey_0 a_1)))
2396                                              (|#%app| less-than?_0 c_0 a_1))
2397                                          (begin
2398                                            (unsafe-vector-set!
2399                                             dst-vec_0
2400                                             0
2401                                             c_0)
2402                                            (unsafe-vector-set!
2403                                             dst-vec_0
2404                                             1
2405                                             a_1)
2406                                            (unsafe-vector-set!
2407                                             dst-vec_0
2408                                             2
2409                                             b_1))
2410                                          (begin
2411                                            (unsafe-vector-set!
2412                                             dst-vec_0
2413                                             1
2414                                             c_0)
2415                                            (unsafe-vector-set!
2416                                             dst-vec_0
2417                                             2
2418                                             b_1)))))))))))
2419                        (let ((work-vec_0
2420                               (make-vector (+ n_0 (ceiling (/ n_0 2))) #f)))
2421                          (begin
2422                            (vector-copy! work-vec_0 0 vec_0 start_0 end_0)
2423                            (generic-sort/key_0
2424                             work-vec_0
2425                             less-than?_0
2426                             n_0
2427                             getkey_0)
2428                            (vector-copy! dst-vec_0 0 work-vec_0 0 n_0)))))))
2429                dst-vec_0)))
2430          (|#%app|
2431           (check-not-unsafe-undefined vector-sort 'vector-sort)
2432           vec_0
2433           less-than?_0
2434           start_0
2435           end_0))))
2436      (case-lambda
2437       ((vec_0 less-than?_0 start_0 end_0)
2438        (let ((n_0 (- end_0 start_0)))
2439          (begin
2440            (if (unsafe-fx= n_0 0)
2441              (void)
2442              (if (letrec*
2443                   ((loop_0
2444                     (|#%name|
2445                      loop
2446                      (lambda (prev-val_0 next-index_0)
2447                        (begin
2448                          (let ((or-part_0 (unsafe-fx= next-index_0 end_0)))
2449                            (if or-part_0
2450                              or-part_0
2451                              (let ((next-val_0
2452                                     (unsafe-vector-ref vec_0 next-index_0)))
2453                                (if (not
2454                                     (|#%app|
2455                                      less-than?_0
2456                                      next-val_0
2457                                      prev-val_0))
2458                                  (loop_0
2459                                   next-val_0
2460                                   (unsafe-fx+ next-index_0 1))
2461                                  #f)))))))))
2462                   (loop_0
2463                    (unsafe-vector-ref vec_0 start_0)
2464                    (unsafe-fx+ start_0 1)))
2465                (void)
2466                (if (unsafe-fx<= n_0 3)
2467                  (begin
2468                    (if (unsafe-fx= n_0 1)
2469                      (void)
2470                      (if (unsafe-fx= n_0 2)
2471                        (let ((tmp_0
2472                               (unsafe-vector-ref
2473                                vec_0
2474                                (unsafe-fx+ start_0 0))))
2475                          (begin
2476                            (unsafe-vector-set!
2477                             vec_0
2478                             (unsafe-fx+ start_0 0)
2479                             (unsafe-vector-ref vec_0 (unsafe-fx+ start_0 1)))
2480                            (unsafe-vector-set!
2481                             vec_0
2482                             (unsafe-fx+ start_0 1)
2483                             tmp_0)))
2484                        (let ((a_0
2485                               (unsafe-vector-ref
2486                                vec_0
2487                                (unsafe-fx+ start_0 0))))
2488                          (let ((b_0
2489                                 (unsafe-vector-ref
2490                                  vec_0
2491                                  (unsafe-fx+ start_0 1))))
2492                            (let ((c_0
2493                                   (unsafe-vector-ref
2494                                    vec_0
2495                                    (unsafe-fx+ start_0 2))))
2496                              (let ((b_1 b_0) (a_1 a_0))
2497                                (if (|#%app| less-than?_0 b_1 a_1)
2498                                  (if (|#%app| less-than?_0 c_0 b_1)
2499                                    (begin
2500                                      (unsafe-vector-set!
2501                                       vec_0
2502                                       (unsafe-fx+ start_0 0)
2503                                       c_0)
2504                                      (unsafe-vector-set!
2505                                       vec_0
2506                                       (unsafe-fx+ start_0 2)
2507                                       a_1))
2508                                    (if (|#%app| less-than?_0 c_0 a_1)
2509                                      (begin
2510                                        (unsafe-vector-set!
2511                                         vec_0
2512                                         (unsafe-fx+ start_0 0)
2513                                         b_1)
2514                                        (unsafe-vector-set!
2515                                         vec_0
2516                                         (unsafe-fx+ start_0 1)
2517                                         c_0)
2518                                        (unsafe-vector-set!
2519                                         vec_0
2520                                         (unsafe-fx+ start_0 2)
2521                                         a_1))
2522                                      (begin
2523                                        (unsafe-vector-set!
2524                                         vec_0
2525                                         (unsafe-fx+ start_0 0)
2526                                         b_1)
2527                                        (unsafe-vector-set!
2528                                         vec_0
2529                                         (unsafe-fx+ start_0 1)
2530                                         a_1))))
2531                                  (if (|#%app| less-than?_0 c_0 a_1)
2532                                    (begin
2533                                      (unsafe-vector-set!
2534                                       vec_0
2535                                       (unsafe-fx+ start_0 0)
2536                                       c_0)
2537                                      (unsafe-vector-set!
2538                                       vec_0
2539                                       (unsafe-fx+ start_0 1)
2540                                       a_1)
2541                                      (unsafe-vector-set!
2542                                       vec_0
2543                                       (unsafe-fx+ start_0 2)
2544                                       b_1))
2545                                    (begin
2546                                      (unsafe-vector-set!
2547                                       vec_0
2548                                       (unsafe-fx+ start_0 1)
2549                                       c_0)
2550                                      (unsafe-vector-set!
2551                                       vec_0
2552                                       (unsafe-fx+ start_0 2)
2553                                       b_1)))))))))))
2554                  (let ((work-vec_0
2555                         (make-vector (+ n_0 (ceiling (/ n_0 2))) #f)))
2556                    (begin
2557                      (vector-copy! work-vec_0 0 vec_0 start_0 end_0)
2558                      (generic-sort_0 work-vec_0 less-than?_0 n_0)
2559                      (vector-copy! vec_0 start_0 work-vec_0 0 n_0))))))
2560            (void))))
2561       ((vec_0 less-than?_0 start_0 end_0 getkey_0 cache-keys?_0)
2562        (if (if getkey_0 (not (eq? values getkey_0)) #f)
2563          (let ((n_0 (- end_0 start_0)))
2564            (begin
2565              (if (unsafe-fx= n_0 0)
2566                (void)
2567                (if cache-keys?_0
2568                  (let ((work-vec_0
2569                         (make-vector (+ n_0 (ceiling (/ n_0 2))) #t)))
2570                    (begin
2571                      (letrec*
2572                       ((loop_0
2573                         (|#%name|
2574                          loop
2575                          (lambda (i_0)
2576                            (begin
2577                              (if (unsafe-fx< i_0 n_0)
2578                                (begin
2579                                  (let ((x_0
2580                                         (unsafe-vector-ref
2581                                          vec_0
2582                                          (unsafe-fx+ i_0 start_0))))
2583                                    (unsafe-vector-set!
2584                                     work-vec_0
2585                                     i_0
2586                                     (cons (|#%app| getkey_0 x_0) x_0)))
2587                                  (loop_0 (unsafe-fx+ i_0 1)))
2588                                (void)))))))
2589                       (loop_0 0))
2590                      (generic-sort/key_0
2591                       work-vec_0
2592                       less-than?_0
2593                       n_0
2594                       unsafe-car)
2595                      (letrec*
2596                       ((loop_0
2597                         (|#%name|
2598                          loop
2599                          (lambda (i_0)
2600                            (begin
2601                              (if (unsafe-fx< i_0 n_0)
2602                                (begin
2603                                  (unsafe-vector-set!
2604                                   vec_0
2605                                   (unsafe-fx+ i_0 start_0)
2606                                   (unsafe-cdr
2607                                    (unsafe-vector-ref work-vec_0 i_0)))
2608                                  (loop_0 (unsafe-fx+ i_0 1)))
2609                                (void)))))))
2610                       (loop_0 0))))
2611                  (if (letrec*
2612                       ((loop_0
2613                         (|#%name|
2614                          loop
2615                          (lambda (prev-val_0 next-index_0)
2616                            (begin
2617                              (let ((or-part_0
2618                                     (unsafe-fx= next-index_0 end_0)))
2619                                (if or-part_0
2620                                  or-part_0
2621                                  (let ((next-val_0
2622                                         (unsafe-vector-ref
2623                                          vec_0
2624                                          next-index_0)))
2625                                    (if (not
2626                                         (if getkey_0
2627                                           (let ((app_0
2628                                                  (|#%app|
2629                                                   getkey_0
2630                                                   next-val_0)))
2631                                             (|#%app|
2632                                              less-than?_0
2633                                              app_0
2634                                              (|#%app| getkey_0 prev-val_0)))
2635                                           (|#%app|
2636                                            less-than?_0
2637                                            next-val_0
2638                                            prev-val_0)))
2639                                      (loop_0
2640                                       next-val_0
2641                                       (unsafe-fx+ next-index_0 1))
2642                                      #f)))))))))
2643                       (loop_0
2644                        (unsafe-vector-ref vec_0 start_0)
2645                        (unsafe-fx+ start_0 1)))
2646                    (void)
2647                    (if (unsafe-fx<= n_0 3)
2648                      (begin
2649                        (if (unsafe-fx= n_0 1)
2650                          (void)
2651                          (if (unsafe-fx= n_0 2)
2652                            (let ((tmp_0
2653                                   (unsafe-vector-ref
2654                                    vec_0
2655                                    (unsafe-fx+ start_0 0))))
2656                              (begin
2657                                (unsafe-vector-set!
2658                                 vec_0
2659                                 (unsafe-fx+ start_0 0)
2660                                 (unsafe-vector-ref
2661                                  vec_0
2662                                  (unsafe-fx+ start_0 1)))
2663                                (unsafe-vector-set!
2664                                 vec_0
2665                                 (unsafe-fx+ start_0 1)
2666                                 tmp_0)))
2667                            (let ((a_0
2668                                   (unsafe-vector-ref
2669                                    vec_0
2670                                    (unsafe-fx+ start_0 0))))
2671                              (let ((b_0
2672                                     (unsafe-vector-ref
2673                                      vec_0
2674                                      (unsafe-fx+ start_0 1))))
2675                                (let ((c_0
2676                                       (unsafe-vector-ref
2677                                        vec_0
2678                                        (unsafe-fx+ start_0 2))))
2679                                  (let ((b_1 b_0) (a_1 a_0))
2680                                    (if (if getkey_0
2681                                          (let ((app_0 (|#%app| getkey_0 b_1)))
2682                                            (|#%app|
2683                                             less-than?_0
2684                                             app_0
2685                                             (|#%app| getkey_0 a_1)))
2686                                          (|#%app| less-than?_0 b_1 a_1))
2687                                      (if (if getkey_0
2688                                            (let ((app_0
2689                                                   (|#%app| getkey_0 c_0)))
2690                                              (|#%app|
2691                                               less-than?_0
2692                                               app_0
2693                                               (|#%app| getkey_0 b_1)))
2694                                            (|#%app| less-than?_0 c_0 b_1))
2695                                        (begin
2696                                          (unsafe-vector-set!
2697                                           vec_0
2698                                           (unsafe-fx+ start_0 0)
2699                                           c_0)
2700                                          (unsafe-vector-set!
2701                                           vec_0
2702                                           (unsafe-fx+ start_0 2)
2703                                           a_1))
2704                                        (if (if getkey_0
2705                                              (let ((app_0
2706                                                     (|#%app| getkey_0 c_0)))
2707                                                (|#%app|
2708                                                 less-than?_0
2709                                                 app_0
2710                                                 (|#%app| getkey_0 a_1)))
2711                                              (|#%app| less-than?_0 c_0 a_1))
2712                                          (begin
2713                                            (unsafe-vector-set!
2714                                             vec_0
2715                                             (unsafe-fx+ start_0 0)
2716                                             b_1)
2717                                            (unsafe-vector-set!
2718                                             vec_0
2719                                             (unsafe-fx+ start_0 1)
2720                                             c_0)
2721                                            (unsafe-vector-set!
2722                                             vec_0
2723                                             (unsafe-fx+ start_0 2)
2724                                             a_1))
2725                                          (begin
2726                                            (unsafe-vector-set!
2727                                             vec_0
2728                                             (unsafe-fx+ start_0 0)
2729                                             b_1)
2730                                            (unsafe-vector-set!
2731                                             vec_0
2732                                             (unsafe-fx+ start_0 1)
2733                                             a_1))))
2734                                      (if (if getkey_0
2735                                            (let ((app_0
2736                                                   (|#%app| getkey_0 c_0)))
2737                                              (|#%app|
2738                                               less-than?_0
2739                                               app_0
2740                                               (|#%app| getkey_0 a_1)))
2741                                            (|#%app| less-than?_0 c_0 a_1))
2742                                        (begin
2743                                          (unsafe-vector-set!
2744                                           vec_0
2745                                           (unsafe-fx+ start_0 0)
2746                                           c_0)
2747                                          (unsafe-vector-set!
2748                                           vec_0
2749                                           (unsafe-fx+ start_0 1)
2750                                           a_1)
2751                                          (unsafe-vector-set!
2752                                           vec_0
2753                                           (unsafe-fx+ start_0 2)
2754                                           b_1))
2755                                        (begin
2756                                          (unsafe-vector-set!
2757                                           vec_0
2758                                           (unsafe-fx+ start_0 1)
2759                                           c_0)
2760                                          (unsafe-vector-set!
2761                                           vec_0
2762                                           (unsafe-fx+ start_0 2)
2763                                           b_1)))))))))))
2764                      (let ((work-vec_0
2765                             (make-vector (+ n_0 (ceiling (/ n_0 2))) #f)))
2766                        (begin
2767                          (vector-copy! work-vec_0 0 vec_0 start_0 end_0)
2768                          (generic-sort/key_0
2769                           work-vec_0
2770                           less-than?_0
2771                           n_0
2772                           getkey_0)
2773                          (vector-copy! vec_0 start_0 work-vec_0 0 n_0)))))))
2774              (void)))
2775          (|#%app|
2776           (check-not-unsafe-undefined vector-sort! 'vector-sort!)
2777           vec_0
2778           less-than?_0
2779           start_0
2780           end_0))))))))
2781(define-values
2782 (prop:stream stream-via-prop? stream-ref)
2783 (make-struct-type-property
2784  'stream
2785  (lambda (v_0 si_0)
2786    (begin
2787      (if (if (vector? v_0)
2788            (if (= 3 (vector-length v_0))
2789              (if (procedure? (vector-ref v_0 0))
2790                (if (procedure-arity-includes? (vector-ref v_0 0) 1)
2791                  (if (procedure? (vector-ref v_0 1))
2792                    (if (procedure-arity-includes? (vector-ref v_0 1) 1)
2793                      (if (procedure? (vector-ref v_0 2))
2794                        (procedure-arity-includes? (vector-ref v_0 2) 1)
2795                        #f)
2796                      #f)
2797                    #f)
2798                  #f)
2799                #f)
2800              #f)
2801            #f)
2802        (void)
2803        (raise-argument-error
2804         'guard-for-prop:stream
2805         (string-append
2806          "(vector/c (procedure-arity-includes/c 1)\n"
2807          "          (procedure-arity-includes/c 1)\n"
2808          "          (procedure-arity-includes/c 1))")
2809         v_0))
2810      (vector->immutable-vector v_0)))
2811  '()
2812  #t))
2813(define-values
2814 (prop:gen-sequence sequence-via-prop? sequence-ref)
2815 (make-struct-type-property
2816  'sequence
2817  (lambda (v_0 si_0)
2818    (begin
2819      (if (if (procedure? v_0) (procedure-arity-includes? v_0 1) #f)
2820        (void)
2821        (raise-argument-error
2822         'guard-for-prop:sequence
2823         "(procedure-arity-includes/c 1)"
2824         v_0))
2825      v_0))))
2826(define-values
2827 (struct:range make-range range? range-ref range-set!)
2828 (make-struct-type
2829  'stream
2830  #f
2831  3
2832  0
2833  #f
2834  (list
2835   (cons
2836    prop:stream
2837    (vector
2838     (lambda (v_0)
2839       (let ((cont?_0 (|#%app| range-ref v_0 2)))
2840         (if cont?_0 (not (|#%app| cont?_0 (|#%app| range-ref v_0 0))) #f)))
2841     (lambda (v_0) (|#%app| range-ref v_0 0))
2842     (lambda (v_0)
2843       (let ((app_0
2844              (let ((app_0 (|#%app| range-ref v_0 1)))
2845                (|#%app| app_0 (|#%app| range-ref v_0 0)))))
2846         (let ((app_1 (|#%app| range-ref v_0 1)))
2847           (make-range app_0 app_1 (|#%app| range-ref v_0 2)))))))
2848   (cons
2849    prop:gen-sequence
2850    (lambda (v_0)
2851      (let ((app_0 (|#%app| range-ref v_0 1)))
2852        (let ((app_1 (|#%app| range-ref v_0 0)))
2853          (values values #f app_0 app_1 (|#%app| range-ref v_0 2) #f #f))))))))
2854(define check-range
2855  (lambda (a_0 b_0 step_0) (check-range-generic 'in-range a_0 b_0 step_0)))
2856(define check-range-generic
2857  (lambda (who_0 a_0 b_0 step_0)
2858    (begin
2859      (if (real? a_0) (void) (raise-argument-error who_0 "real?" a_0))
2860      (if (real? b_0) (void) (raise-argument-error who_0 "real?" b_0))
2861      (if (real? step_0) (void) (raise-argument-error who_0 "real?" step_0)))))
2862(define check-naturals
2863  (lambda (n_0)
2864    (if (if (integer? n_0) (if (exact? n_0) (>= n_0 0) #f) #f)
2865      (void)
2866      (raise-argument-error 'in-naturals "exact-nonnegative-integer?" n_0))))
2867(define-values
2868 (struct:list-stream
2869  make-list-stream
2870  list-stream?
2871  list-stream-ref
2872  list-stream-set!)
2873 (make-struct-type
2874  'stream
2875  #f
2876  1
2877  0
2878  #f
2879  (list
2880   (cons
2881    prop:stream
2882    (vector
2883     (lambda (v_0) (not (pair? (|#%app| list-stream-ref v_0 0))))
2884     (lambda (v_0) (car (|#%app| list-stream-ref v_0 0)))
2885     (lambda (v_0) (make-list-stream (cdr (|#%app| list-stream-ref v_0 0))))))
2886   (cons
2887    prop:gen-sequence
2888    (lambda (v_0)
2889      (values car cdr values (|#%app| list-stream-ref v_0 0) pair? #f #f))))))
2890(define check-list
2891  (lambda (l_0)
2892    (if (list? l_0) (void) (raise-argument-error 'in-list "list?" l_0))))
2893(define check-in-hash
2894  (lambda (ht_0)
2895    (if (hash? ht_0) (void) (raise-argument-error 'in-hash "hash?" ht_0))))
2896(define check-in-immutable-hash
2897  (lambda (ht_0)
2898    (if (if (hash? ht_0) (immutable? ht_0) #f)
2899      (void)
2900      (raise-argument-error
2901       'in-immutable-hash
2902       "(and/c hash? immutable?)"
2903       ht_0))))
2904(define check-in-hash-keys
2905  (lambda (ht_0)
2906    (if (hash? ht_0)
2907      (void)
2908      (raise-argument-error 'in-hash-keys "hash?" ht_0))))
2909(define check-in-immutable-hash-keys
2910  (lambda (ht_0)
2911    (if (if (hash? ht_0) (immutable? ht_0) #f)
2912      (void)
2913      (raise-argument-error
2914       'in-immutable-hash-keys
2915       "(and/c hash? immutable?)"
2916       ht_0))))
2917(define check-in-hash-values
2918  (lambda (ht_0)
2919    (if (hash? ht_0)
2920      (void)
2921      (raise-argument-error 'in-hash-values "hash?" ht_0))))
2922(define check-ranges
2923  (lambda (who_0 type-name_0 vec_0 start_0 stop_0 step_0 len_0)
2924    (begin
2925      (if (if (exact-nonnegative-integer? start_0)
2926            (let ((or-part_0 (< start_0 len_0)))
2927              (if or-part_0 or-part_0 (= len_0 start_0 stop_0)))
2928            #f)
2929        (void)
2930        (raise-range-error
2931         who_0
2932         type-name_0
2933         "starting "
2934         start_0
2935         vec_0
2936         0
2937         (sub1 len_0)))
2938      (if (if (exact-integer? stop_0)
2939            (if (<= -1 stop_0) (<= stop_0 len_0) #f)
2940            #f)
2941        (void)
2942        (raise-range-error
2943         who_0
2944         type-name_0
2945         "stopping "
2946         stop_0
2947         vec_0
2948         -1
2949         len_0))
2950      (if (if (exact-integer? step_0) (not (zero? step_0)) #f)
2951        (void)
2952        (raise-argument-error
2953         who_0
2954         "(and/c exact-integer? (not/c zero?))"
2955         step_0))
2956      (if (if (< start_0 stop_0) (< step_0 0) #f)
2957        (raise-arguments-error
2958         who_0
2959         "starting index less than stopping index, but given a negative step"
2960         "starting index"
2961         start_0
2962         "stopping index"
2963         stop_0
2964         "step"
2965         step_0)
2966        (void))
2967      (if (if (< stop_0 start_0) (> step_0 0) #f)
2968        (raise-arguments-error
2969         who_0
2970         "starting index more than stopping index, but given a positive step"
2971         "starting index"
2972         start_0
2973         "stopping index"
2974         stop_0
2975         "step"
2976         step_0)
2977        (void)))))
2978(define normalise-inputs
2979  (lambda (who_0
2980           type-name_0
2981           vector?_0
2982           unsafe-vector-length_0
2983           vec_0
2984           start_0
2985           stop_0
2986           step_0)
2987    (begin
2988      (if (|#%app| vector?_0 vec_0)
2989        (void)
2990        (raise-argument-error who_0 type-name_0 vec_0))
2991      (let ((len_0 (|#%app| unsafe-vector-length_0 vec_0)))
2992        (let ((stop*_0 (if stop_0 stop_0 len_0)))
2993          (begin
2994            (check-ranges who_0 type-name_0 vec_0 start_0 stop*_0 step_0 len_0)
2995            (values vec_0 start_0 stop*_0 step_0)))))))
2996(define unsafe-normalise-inputs
2997  (lambda (unsafe-vector-length_0 vec_0 start_0 stop_0 step_0)
2998    (values
2999     vec_0
3000     start_0
3001     (if stop_0 stop_0 (|#%app| unsafe-vector-length_0 vec_0))
3002     step_0)))
3003(define check-vector
3004  (lambda (v_0)
3005    (if (vector? v_0) (void) (raise-argument-error 'in-vector "vector" v_0))))
3006(define check-string
3007  (lambda (v_0)
3008    (if (string? v_0) (void) (raise-argument-error 'in-string "string" v_0))))
3009(define check-bytes
3010  (lambda (v_0)
3011    (if (bytes? v_0) (void) (raise-argument-error 'in-bytes "bytes" v_0))))
3012(define-values
3013 (struct:do-stream make-do-stream do-stream? do-stream-ref do-stream-set!)
3014 (make-struct-type
3015  'stream
3016  #f
3017  3
3018  0
3019  #f
3020  (list
3021   (cons
3022    prop:stream
3023    (vector
3024     (lambda (v_0) (|#%app| (|#%app| do-stream-ref v_0 0)))
3025     (lambda (v_0) (|#%app| (|#%app| do-stream-ref v_0 1)))
3026     (lambda (v_0) (|#%app| (|#%app| do-stream-ref v_0 2))))))))
3027(define empty-stream (make-do-stream (lambda () #t) void void))
3028(define grow-vector
3029  (lambda (vec_0)
3030    (let ((n_0 (vector-length vec_0)))
3031      (let ((new-vec_0 (make-vector (* 2 n_0))))
3032        (begin (vector-copy! new-vec_0 0 vec_0 0 n_0) new-vec_0)))))
3033(define shrink-vector
3034  (lambda (vec_0 i_0)
3035    (let ((new-vec_0 (make-vector i_0)))
3036      (begin (vector-copy! new-vec_0 0 vec_0 0 i_0) new-vec_0))))
3037(define map_1346
3038  (|#%name|
3039   map
3040   (case-lambda
3041    ((f_0 l_0)
3042     (begin
3043       (letrec*
3044        ((loop_0
3045          (|#%name|
3046           loop
3047           (lambda (l_1)
3048             (begin
3049               (if (null? l_1)
3050                 null
3051                 (let ((r_0 (cdr l_1)))
3052                   (let ((app_0 (|#%app| f_0 (car l_1))))
3053                     (cons app_0 (loop_0 r_0))))))))))
3054        (loop_0 l_0))))
3055    ((f_0 l1_0 l2_0)
3056     (letrec*
3057      ((loop_0
3058        (|#%name|
3059         loop
3060         (lambda (l1_1 l2_1)
3061           (begin
3062             (if (null? l1_1)
3063               null
3064               (let ((r1_0 (cdr l1_1)))
3065                 (let ((r2_0 (cdr l2_1)))
3066                   (let ((r1_1 r1_0))
3067                     (let ((app_0
3068                            (let ((app_0 (car l1_1)))
3069                              (|#%app| f_0 app_0 (car l2_1)))))
3070                       (cons app_0 (loop_0 r1_1 r2_0))))))))))))
3071      (loop_0 l1_0 l2_0)))
3072    ((f_0 l_0 . args_0) (gen-map f_0 (cons l_0 args_0))))))
3073(define for-each_2380
3074  (|#%name|
3075   for-each
3076   (case-lambda
3077    ((f_0 l_0)
3078     (begin
3079       (letrec*
3080        ((loop_0
3081          (|#%name|
3082           loop
3083           (lambda (l_1)
3084             (begin
3085               (if (null? l_1)
3086                 (void)
3087                 (let ((r_0 (cdr l_1)))
3088                   (begin (|#%app| f_0 (car l_1)) (loop_0 r_0)))))))))
3089        (loop_0 l_0))))
3090    ((f_0 l1_0 l2_0)
3091     (letrec*
3092      ((loop_0
3093        (|#%name|
3094         loop
3095         (lambda (l1_1 l2_1)
3096           (begin
3097             (if (null? l1_1)
3098               (void)
3099               (let ((r1_0 (cdr l1_1)))
3100                 (let ((r2_0 (cdr l2_1)))
3101                   (let ((r1_1 r1_0))
3102                     (begin
3103                       (let ((app_0 (car l1_1)))
3104                         (|#%app| f_0 app_0 (car l2_1)))
3105                       (loop_0 r1_1 r2_0)))))))))))
3106      (loop_0 l1_0 l2_0)))
3107    ((f_0 l_0 . args_0) (gen-for-each f_0 (cons l_0 args_0))))))
3108(define andmap_2344
3109  (|#%name|
3110   andmap
3111   (case-lambda
3112    ((f_0 l_0)
3113     (begin
3114       (if (null? l_0)
3115         #t
3116         (letrec*
3117          ((loop_0
3118            (|#%name|
3119             loop
3120             (lambda (l_1)
3121               (begin
3122                 (if (null? (cdr l_1))
3123                   (|#%app| f_0 (car l_1))
3124                   (let ((r_0 (cdr l_1)))
3125                     (if (|#%app| f_0 (car l_1)) (loop_0 r_0) #f))))))))
3126          (loop_0 l_0)))))
3127    ((f_0 l1_0 l2_0)
3128     (if (null? l1_0)
3129       #t
3130       (letrec*
3131        ((loop_0
3132          (|#%name|
3133           loop
3134           (lambda (l1_1 l2_1)
3135             (begin
3136               (if (null? (cdr l1_1))
3137                 (let ((app_0 (car l1_1))) (|#%app| f_0 app_0 (car l2_1)))
3138                 (let ((r1_0 (cdr l1_1)))
3139                   (let ((r2_0 (cdr l2_1)))
3140                     (let ((r1_1 r1_0))
3141                       (if (let ((app_0 (car l1_1)))
3142                             (|#%app| f_0 app_0 (car l2_1)))
3143                         (loop_0 r1_1 r2_0)
3144                         #f))))))))))
3145        (loop_0 l1_0 l2_0))))
3146    ((f_0 l_0 . args_0) (gen-andmap f_0 (cons l_0 args_0))))))
3147(define ormap_2765
3148  (|#%name|
3149   ormap
3150   (case-lambda
3151    ((f_0 l_0)
3152     (begin
3153       (if (null? l_0)
3154         #f
3155         (letrec*
3156          ((loop_0
3157            (|#%name|
3158             loop
3159             (lambda (l_1)
3160               (begin
3161                 (if (null? (cdr l_1))
3162                   (|#%app| f_0 (car l_1))
3163                   (let ((r_0 (cdr l_1)))
3164                     (let ((or-part_0 (|#%app| f_0 (car l_1))))
3165                       (if or-part_0 or-part_0 (loop_0 r_0))))))))))
3166          (loop_0 l_0)))))
3167    ((f_0 l1_0 l2_0)
3168     (if (null? l1_0)
3169       #f
3170       (letrec*
3171        ((loop_0
3172          (|#%name|
3173           loop
3174           (lambda (l1_1 l2_1)
3175             (begin
3176               (if (null? (cdr l1_1))
3177                 (let ((app_0 (car l1_1))) (|#%app| f_0 app_0 (car l2_1)))
3178                 (let ((r1_0 (cdr l1_1)))
3179                   (let ((r2_0 (cdr l2_1)))
3180                     (let ((r1_1 r1_0))
3181                       (let ((or-part_0
3182                              (let ((app_0 (car l1_1)))
3183                                (|#%app| f_0 app_0 (car l2_1)))))
3184                         (if or-part_0 or-part_0 (loop_0 r1_1 r2_0))))))))))))
3185        (loop_0 l1_0 l2_0))))
3186    ((f_0 l_0 . args_0) (gen-ormap f_0 (cons l_0 args_0))))))
3187(define check-args
3188  (lambda (who_0 f_0 ls_0)
3189    (begin
3190      (if (procedure? f_0)
3191        (void)
3192        (raise-argument-error who_0 "procedure?" f_0))
3193      (letrec*
3194       ((loop_0
3195         (|#%name|
3196          loop
3197          (lambda (prev-len_0 ls_1 i_0)
3198            (begin
3199              (if (null? ls_1)
3200                (void)
3201                (let ((l_0 (car ls_1)))
3202                  (begin
3203                    (if (list? l_0)
3204                      (void)
3205                      (raise-argument-error who_0 "list?" l_0))
3206                    (let ((len_0 (length l_0)))
3207                      (begin
3208                        (if (if prev-len_0 (not (= len_0 prev-len_0)) #f)
3209                          (raise-arguments-error
3210                           who_0
3211                           "all lists must have same size"
3212                           "first list length"
3213                           prev-len_0
3214                           "other list length"
3215                           len_0
3216                           "procedure"
3217                           f_0)
3218                          (void))
3219                        (let ((app_0 (cdr ls_1)))
3220                          (loop_0 len_0 app_0 (add1 i_0)))))))))))))
3221       (loop_0 #f ls_0 1))
3222      (if (procedure-arity-includes? f_0 (length ls_0))
3223        (void)
3224        (call-with-values
3225         (lambda () (procedure-keywords f_0))
3226         (case-lambda
3227          ((required-keywords_0 optional-keywords_0)
3228           (let ((app_0
3229                  (if (pair? required-keywords_0)
3230                    (string-append
3231                     "argument mismatch;\n"
3232                     " the given procedure expects keyword arguments")
3233                    (string-append
3234                     "argument mismatch;\n"
3235                     " the given procedure's expected number of arguments does not match"
3236                     " the given number of lists"))))
3237             (let ((app_1
3238                    (unquoted-printing-string
3239                     (let ((or-part_0
3240                            (let ((n_0 (object-name f_0)))
3241                              (if (symbol? n_0) (symbol->string n_0) #f))))
3242                       (if or-part_0 or-part_0 "#<procedure>")))))
3243               (apply
3244                raise-arguments-error
3245                who_0
3246                app_0
3247                "given procedure"
3248                app_1
3249                (let ((app_2
3250                       (let ((a_0 (procedure-arity f_0)))
3251                         (if (pair? required-keywords_0)
3252                           null
3253                           (if (integer? a_0)
3254                             (list "expected" a_0)
3255                             (if (arity-at-least? a_0)
3256                               (list
3257                                "expected"
3258                                (unquoted-printing-string
3259                                 (string-append
3260                                  "at least "
3261                                  (number->string
3262                                   (arity-at-least-value a_0)))))
3263                               null))))))
3264                  (let ((app_3
3265                         (if (pair? required-keywords_0)
3266                           null
3267                           (list "given" (length ls_0)))))
3268                    (let ((app_4
3269                           (if (pair? required-keywords_0)
3270                             (list
3271                              "required keywords"
3272                              (unquoted-printing-string
3273                               (apply
3274                                string-append
3275                                (cdr
3276                                 (letrec*
3277                                  ((loop_0
3278                                    (|#%name|
3279                                     loop
3280                                     (lambda (kws_0)
3281                                       (begin
3282                                         (if (null? kws_0)
3283                                           null
3284                                           (let ((app_4
3285                                                  (string-append
3286                                                   "#:"
3287                                                   (keyword->string
3288                                                    (car kws_0)))))
3289                                             (list*
3290                                              " "
3291                                              app_4
3292                                              (loop_0 (cdr kws_0))))))))))
3293                                  (loop_0 required-keywords_0))))))
3294                             null)))
3295                      (append
3296                       app_2
3297                       app_3
3298                       app_4
3299                       (let ((w_0
3300                              (let ((app_5 (error-print-width)))
3301                                (quotient app_5 (length ls_0)))))
3302                         (if (> w_0 10)
3303                           (list
3304                            "argument lists..."
3305                            (unquoted-printing-string
3306                             (apply
3307                              string-append
3308                              (letrec*
3309                               ((loop_0
3310                                 (|#%name|
3311                                  loop
3312                                  (lambda (ls_1)
3313                                    (begin
3314                                      (if (null? ls_1)
3315                                        null
3316                                        (let ((app_5
3317                                               (string-append
3318                                                "\n   "
3319                                                (let ((app_5
3320                                                       (error-value->string-handler)))
3321                                                  (|#%app|
3322                                                   app_5
3323                                                   (car ls_1)
3324                                                   w_0)))))
3325                                          (cons
3326                                           app_5
3327                                           (loop_0 (cdr ls_1))))))))))
3328                               (loop_0 ls_0)))))
3329                           null))))))))))
3330          (args (raise-binding-result-arity-error 2 args))))))))
3331(define gen-map
3332  (lambda (f_0 ls_0)
3333    (begin
3334      #t
3335      (letrec*
3336       ((loop_0
3337         (|#%name|
3338          loop
3339          (lambda (ls_1)
3340            (begin
3341              (if (null? (car ls_1))
3342                null
3343                (let ((next-ls_0 (map_1346 cdr ls_1)))
3344                  (let ((app_0 (apply f_0 (map_1346 car ls_1))))
3345                    (cons app_0 (loop_0 next-ls_0))))))))))
3346       (loop_0 ls_0)))))
3347(define gen-for-each
3348  (lambda (f_0 ls_0)
3349    (begin
3350      #t
3351      (letrec*
3352       ((loop_0
3353         (|#%name|
3354          loop
3355          (lambda (ls_1)
3356            (begin
3357              (if (null? (car ls_1))
3358                (void)
3359                (let ((next-ls_0 (map_1346 cdr ls_1)))
3360                  (begin
3361                    (apply f_0 (map_1346 car ls_1))
3362                    (loop_0 next-ls_0)))))))))
3363       (loop_0 ls_0)))))
3364(define gen-andmap
3365  (lambda (f_0 ls_0)
3366    (begin
3367      #t
3368      (letrec*
3369       ((loop_0
3370         (|#%name|
3371          loop
3372          (lambda (ls_1)
3373            (begin
3374              (if (null? (car ls_1))
3375                #t
3376                (if (null? (cdar ls_1))
3377                  (apply f_0 (map_1346 car ls_1))
3378                  (let ((next-ls_0 (map_1346 cdr ls_1)))
3379                    (if (apply f_0 (map_1346 car ls_1))
3380                      (loop_0 next-ls_0)
3381                      #f)))))))))
3382       (loop_0 ls_0)))))
3383(define gen-ormap
3384  (lambda (f_0 ls_0)
3385    (begin
3386      #t
3387      (letrec*
3388       ((loop_0
3389         (|#%name|
3390          loop
3391          (lambda (ls_1)
3392            (begin
3393              (if (null? (car ls_1))
3394                #f
3395                (if (null? (cdar ls_1))
3396                  (apply f_0 (map_1346 car ls_1))
3397                  (let ((next-ls_0 (map_1346 cdr ls_1)))
3398                    (let ((or-part_0 (apply f_0 (map_1346 car ls_1))))
3399                      (if or-part_0 or-part_0 (loop_0 next-ls_0)))))))))))
3400       (loop_0 ls_0)))))
3401(define hash-keys
3402  (lambda (h_0)
3403    (letrec*
3404     ((loop_0
3405       (|#%name|
3406        loop
3407        (lambda (pos_0)
3408          (begin
3409            (if pos_0
3410              (let ((k_0 (hash-iterate-key h_0 pos_0 unsafe-undefined)))
3411                (let ((r_0 (loop_0 (hash-iterate-next h_0 pos_0))))
3412                  (let ((k_1 k_0))
3413                    (if (eq? k_1 unsafe-undefined) r_0 (cons k_1 r_0)))))
3414              null))))))
3415     (loop_0 (hash-iterate-first h_0)))))
3416(define sort.1
3417  (|#%name|
3418   sort
3419   (lambda (cache-keys?2_0 key1_0 lst5_0 less?6_0)
3420     (begin
3421       (begin
3422         (if (list? lst5_0) (void) (raise-argument-error 'sort "list?" lst5_0))
3423         (if (if (procedure? less?6_0)
3424               (procedure-arity-includes? less?6_0 2)
3425               #f)
3426           (void)
3427           (raise-argument-error 'sort "(any/c any/c . -> . any/c)" less?6_0))
3428         (if (if key1_0
3429               (not
3430                (if (procedure? key1_0)
3431                  (procedure-arity-includes? key1_0 1)
3432                  #f))
3433               #f)
3434           (raise-argument-error 'sort "(any/c . -> . any/c)" key1_0)
3435           (void))
3436         (if key1_0
3437           (|#%app|
3438            (check-not-unsafe-undefined sort 'sort)
3439            lst5_0
3440            less?6_0
3441            key1_0
3442            cache-keys?2_0)
3443           (|#%app|
3444            (check-not-unsafe-undefined sort 'sort)
3445            lst5_0
3446            less?6_0)))))))
3447(define filter
3448  (lambda (f_0 list_0)
3449    (begin
3450      (if (if (procedure? f_0) (procedure-arity-includes? f_0 1) #f)
3451        (void)
3452        (raise-argument-error 'filter "(any/c . -> . any/c)" f_0))
3453      (if (list? list_0) (void) (raise-argument-error 'filter "list?" list_0))
3454      (letrec*
3455       ((loop_0
3456         (|#%name|
3457          loop
3458          (lambda (l_0 result_0)
3459            (begin
3460              (if (null? l_0)
3461                (reverse$1 result_0)
3462                (let ((app_0 (cdr l_0)))
3463                  (loop_0
3464                   app_0
3465                   (if (|#%app| f_0 (car l_0))
3466                     (cons (car l_0) result_0)
3467                     result_0)))))))))
3468       (loop_0 list_0 null)))))
3469(define binary-or-text-desc "(or/c 'binary 'text)")
3470(define open-input-file.1
3471  (|#%name|
3472   open-input-file
3473   (lambda (for-module?2_0 mode1_0 path5_0)
3474     (begin
3475       (begin
3476         (if (path-string? path5_0)
3477           (void)
3478           (raise-argument-error 'open-input-file "path-string?" path5_0))
3479         (if (memq mode1_0 '(binary text))
3480           (void)
3481           (raise-argument-error 'open-input-file binary-or-text-desc mode1_0))
3482         (open-input-file
3483          path5_0
3484          mode1_0
3485          (if for-module?2_0 'module 'none)))))))
3486(define with-input-from-file.1
3487  (|#%name|
3488   with-input-from-file
3489   (lambda (mode37_0 path39_0 proc40_0)
3490     (begin
3491       (begin
3492         (if (path-string? path39_0)
3493           (void)
3494           (raise-argument-error
3495            'with-input-from-file
3496            "path-string?"
3497            path39_0))
3498         (if (if (procedure? proc40_0)
3499               (procedure-arity-includes? proc40_0 0)
3500               #f)
3501           (void)
3502           (raise-argument-error 'with-input-from-file "(-> any)" proc40_0))
3503         (if (memq mode37_0 '(binary text))
3504           (void)
3505           (raise-argument-error
3506            'with-input-from-file
3507            binary-or-text-desc
3508            mode37_0))
3509         (with-input-from-file path39_0 proc40_0 mode37_0))))))
3510(define call-with-input-file*.1
3511  (|#%name|
3512   call-with-input-file*
3513   (lambda (mode51_0 path53_0 proc54_0)
3514     (begin
3515       (begin
3516         (if (path-string? path53_0)
3517           (void)
3518           (raise-argument-error
3519            'call-with-input-file*
3520            "path-string?"
3521            path53_0))
3522         (if (if (procedure? proc54_0)
3523               (procedure-arity-includes? proc54_0 1)
3524               #f)
3525           (void)
3526           (raise-argument-error
3527            'call-with-input-file*
3528            "(input-port? . -> . any)"
3529            proc54_0))
3530         (if (memq mode51_0 '(binary text))
3531           (void)
3532           (raise-argument-error
3533            'call-with-input-file*
3534            binary-or-text-desc
3535            mode51_0))
3536         (let ((p_0 (open-input-file path53_0 mode51_0)))
3537           (dynamic-wind
3538            void
3539            (lambda () (|#%app| proc54_0 p_0))
3540            (lambda () (close-input-port p_0)))))))))
3541(define print-value-columns
3542  (make-parameter
3543   +inf.0
3544   (lambda (c_0)
3545     (if (let ((or-part_0 (eqv? c_0 +inf.0)))
3546           (if or-part_0 or-part_0 (if (exact-integer? c_0) (> c_0 5) #f)))
3547       c_0
3548       (raise-argument-error
3549        'print-value-columns
3550        "(or/c +inf.0 (and/c exact-integer? (>/c 5)))"
3551        c_0)))
3552   'print-value-columns))
3553(define the-empty-hash hash2725)
3554(define the-empty-hasheq hash2610)
3555(define the-empty-hasheqv hash2589)
3556(define set
3557  (case-lambda
3558   (() the-empty-hash)
3559   (l_0
3560    (begin
3561      (letrec*
3562       ((for-loop_0
3563         (|#%name|
3564          for-loop
3565          (lambda (s_0 lst_0)
3566            (begin
3567              (if (pair? lst_0)
3568                (let ((e_0 (unsafe-car lst_0)))
3569                  (let ((rest_0 (unsafe-cdr lst_0)))
3570                    (let ((s_1
3571                           (let ((s_1 (hash-set s_0 e_0 #t))) (values s_1))))
3572                      (for-loop_0 s_1 rest_0))))
3573                s_0))))))
3574       (for-loop_0 the-empty-hash l_0))))))
3575(define seteq
3576  (case-lambda
3577   (() the-empty-hasheq)
3578   (l_0
3579    (begin
3580      (letrec*
3581       ((for-loop_0
3582         (|#%name|
3583          for-loop
3584          (lambda (s_0 lst_0)
3585            (begin
3586              (if (pair? lst_0)
3587                (let ((e_0 (unsafe-car lst_0)))
3588                  (let ((rest_0 (unsafe-cdr lst_0)))
3589                    (let ((s_1
3590                           (let ((s_1 (hash-set s_0 e_0 #t))) (values s_1))))
3591                      (for-loop_0 s_1 rest_0))))
3592                s_0))))))
3593       (for-loop_0 the-empty-hasheq l_0))))))
3594(define seteqv (lambda () the-empty-hasheqv))
3595(define set? (lambda (s_0) (hash? s_0)))
3596(define set-empty? (lambda (s_0) (zero? (hash-count s_0))))
3597(define set-member? (lambda (s_0 e_0) (hash-ref s_0 e_0 #f)))
3598(define set-count (lambda (s_0) (hash-count s_0)))
3599(define set-add (lambda (s_0 e_0) (hash-set s_0 e_0 #t)))
3600(define set-remove (lambda (s_0 e_0) (hash-remove s_0 e_0)))
3601(define set-first
3602  (lambda (s_0) (hash-iterate-key s_0 (hash-iterate-first s_0))))
3603(define subset? (lambda (s1_0 s2_0) (hash-keys-subset? s1_0 s2_0)))
3604(define set=?
3605  (lambda (s1_0 s2_0)
3606    (let ((or-part_0 (eq? s1_0 s2_0)))
3607      (if or-part_0
3608        or-part_0
3609        (if (let ((app_0 (hash-count s1_0))) (= app_0 (hash-count s2_0)))
3610          (hash-keys-subset? s1_0 s2_0)
3611          #f)))))
3612(define set-subtract
3613  (lambda (s1_0 s2_0)
3614    (begin
3615      (letrec*
3616       ((for-loop_0
3617         (|#%name|
3618          for-loop
3619          (lambda (s1_1 i_0)
3620            (begin
3621              (if i_0
3622                (let ((k_0 (unsafe-immutable-hash-iterate-key s2_0 i_0)))
3623                  (let ((s1_2
3624                         (let ((s1_2 (hash-remove s1_1 k_0))) (values s1_2))))
3625                    (for-loop_0
3626                     s1_2
3627                     (unsafe-immutable-hash-iterate-next s2_0 i_0))))
3628                s1_1))))))
3629       (for-loop_0 s1_0 (unsafe-immutable-hash-iterate-first s2_0))))))
3630(define set-union
3631  (lambda (s1_0 s2_0)
3632    (if (let ((app_0 (begin-unsafe (hash-count s1_0))))
3633          (< app_0 (begin-unsafe (hash-count s2_0))))
3634      (set-union s2_0 s1_0)
3635      (begin
3636        (letrec*
3637         ((for-loop_0
3638           (|#%name|
3639            for-loop
3640            (lambda (s1_1 i_0)
3641              (begin
3642                (if i_0
3643                  (let ((k_0 (unsafe-immutable-hash-iterate-key s2_0 i_0)))
3644                    (let ((s1_2
3645                           (let ((s1_2 (hash-set s1_1 k_0 #t)))
3646                             (values s1_2))))
3647                      (for-loop_0
3648                       s1_2
3649                       (unsafe-immutable-hash-iterate-next s2_0 i_0))))
3650                  s1_1))))))
3651         (for-loop_0 s1_0 (unsafe-immutable-hash-iterate-first s2_0)))))))
3652(define set-intersect
3653  (lambda (s1_0 s2_0)
3654    (if (let ((app_0 (begin-unsafe (hash-count s1_0))))
3655          (< app_0 (begin-unsafe (hash-count s2_0))))
3656      (set-intersect s2_0 s1_0)
3657      (begin
3658        (letrec*
3659         ((for-loop_0
3660           (|#%name|
3661            for-loop
3662            (lambda (s_0 i_0)
3663              (begin
3664                (if i_0
3665                  (let ((k_0 (unsafe-immutable-hash-iterate-key s2_0 i_0)))
3666                    (let ((s_1
3667                           (let ((s_1
3668                                  (if (hash-ref s1_0 k_0 #f)
3669                                    s_0
3670                                    (hash-remove s_0 k_0))))
3671                             (values s_1))))
3672                      (for-loop_0
3673                       s_1
3674                       (unsafe-immutable-hash-iterate-next s2_0 i_0))))
3675                  s_0))))))
3676         (for-loop_0 s2_0 (unsafe-immutable-hash-iterate-first s2_0)))))))
3677(define set-partition
3678  (lambda (s_0 pred_0 empty-y-set_0 empty-n-set_0)
3679    (begin
3680      (letrec*
3681       ((for-loop_0
3682         (|#%name|
3683          for-loop
3684          (lambda (y_0 n_0 i_0)
3685            (begin
3686              (if i_0
3687                (let ((v_0 (unsafe-immutable-hash-iterate-key s_0 i_0)))
3688                  (call-with-values
3689                   (lambda ()
3690                     (call-with-values
3691                      (lambda ()
3692                        (if (|#%app| pred_0 v_0)
3693                          (values (begin-unsafe (hash-set y_0 v_0 #t)) n_0)
3694                          (values y_0 (begin-unsafe (hash-set n_0 v_0 #t)))))
3695                      (case-lambda
3696                       ((y_1 n_1) (values y_1 n_1))
3697                       (args (raise-binding-result-arity-error 2 args)))))
3698                   (case-lambda
3699                    ((y_1 n_1)
3700                     (for-loop_0
3701                      y_1
3702                      n_1
3703                      (unsafe-immutable-hash-iterate-next s_0 i_0)))
3704                    (args (raise-binding-result-arity-error 2 args)))))
3705                (values y_0 n_0)))))))
3706       (for-loop_0
3707        empty-y-set_0
3708        empty-n-set_0
3709        (unsafe-immutable-hash-iterate-first s_0))))))
3710(define set->list
3711  (lambda (s_0)
3712    (reverse$1
3713     (begin
3714       (letrec*
3715        ((for-loop_0
3716          (|#%name|
3717           for-loop
3718           (lambda (fold-var_0 i_0)
3719             (begin
3720               (if i_0
3721                 (let ((k_0 (unsafe-immutable-hash-iterate-key s_0 i_0)))
3722                   (let ((fold-var_1 (cons k_0 fold-var_0)))
3723                     (let ((fold-var_2 (values fold-var_1)))
3724                       (for-loop_0
3725                        fold-var_2
3726                        (unsafe-immutable-hash-iterate-next s_0 i_0)))))
3727                 fold-var_0))))))
3728        (for-loop_0 null (unsafe-immutable-hash-iterate-first s_0)))))))
3729(define list->set
3730  (lambda (l_0)
3731    (begin
3732      (letrec*
3733       ((for-loop_0
3734         (|#%name|
3735          for-loop
3736          (lambda (table_0 lst_0)
3737            (begin
3738              (if (pair? lst_0)
3739                (let ((k_0 (unsafe-car lst_0)))
3740                  (let ((rest_0 (unsafe-cdr lst_0)))
3741                    (let ((table_1
3742                           (let ((table_1
3743                                  (call-with-values
3744                                   (lambda () (values k_0 #t))
3745                                   (case-lambda
3746                                    ((key_0 val_0)
3747                                     (hash-set table_0 key_0 val_0))
3748                                    (args
3749                                     (raise-binding-result-arity-error
3750                                      2
3751                                      args))))))
3752                             (values table_1))))
3753                      (for-loop_0 table_1 rest_0))))
3754                table_0))))))
3755       (for-loop_0 hash2725 l_0)))))
3756(define list->seteq
3757  (lambda (l_0)
3758    (begin
3759      (letrec*
3760       ((for-loop_0
3761         (|#%name|
3762          for-loop
3763          (lambda (table_0 lst_0)
3764            (begin
3765              (if (pair? lst_0)
3766                (let ((k_0 (unsafe-car lst_0)))
3767                  (let ((rest_0 (unsafe-cdr lst_0)))
3768                    (let ((table_1
3769                           (let ((table_1
3770                                  (call-with-values
3771                                   (lambda () (values k_0 #t))
3772                                   (case-lambda
3773                                    ((key_0 val_0)
3774                                     (hash-set table_0 key_0 val_0))
3775                                    (args
3776                                     (raise-binding-result-arity-error
3777                                      2
3778                                      args))))))
3779                             (values table_1))))
3780                      (for-loop_0 table_1 rest_0))))
3781                table_0))))))
3782       (for-loop_0 hash2610 l_0)))))
3783(define start-atomic (lambda () (unsafe-start-atomic)))
3784(define end-atomic (lambda () (unsafe-end-atomic)))
3785(define start-breakable-atomic (lambda () (unsafe-start-breakable-atomic)))
3786(define end-breakable-atomic (lambda () (unsafe-end-breakable-atomic)))
3787(define cell.1$11 (unsafe-make-place-local #f))
3788(define entered-err-string-handler
3789  (lambda (s_0 n_0)
3790    (call-as-nonatomic
3791     (lambda () (|#%app| (error-value->string-handler) s_0 n_0)))))
3792(define cell.2$5 (unsafe-make-place-local #f))
3793(define cell.3$2 (unsafe-make-place-local #f))
3794(define cell.4$2 (unsafe-make-place-local 0))
3795(define exited-key (gensym 'as-exit))
3796(define lock-tag (make-continuation-prompt-tag 'lock))
3797(define call-as-atomic
3798  (lambda (f_0)
3799    (begin
3800      (if (if (procedure? f_0) (procedure-arity-includes? f_0 0) #f)
3801        (void)
3802        (raise-type-error 'call-as-atomic "procedure (arity 0)" f_0))
3803      (if (eq? (unsafe-place-local-ref cell.1$11) (current-thread))
3804        (dynamic-wind
3805         (lambda ()
3806           (begin
3807             (begin-unsafe (unsafe-start-breakable-atomic))
3808             (unsafe-place-local-set!
3809              cell.4$2
3810              (add1 (unsafe-place-local-ref cell.4$2)))))
3811         f_0
3812         (lambda ()
3813           (begin
3814             (unsafe-place-local-set!
3815              cell.4$2
3816              (sub1 (unsafe-place-local-ref cell.4$2)))
3817             (begin-unsafe (unsafe-end-breakable-atomic)))))
3818        (with-continuation-mark*
3819         general
3820         exited-key
3821         #f
3822         (call-with-continuation-prompt
3823          (lambda ()
3824            (dynamic-wind
3825             (lambda ()
3826               (begin
3827                 (begin-unsafe (unsafe-start-breakable-atomic))
3828                 (unsafe-place-local-set! cell.1$11 (current-thread))))
3829             (lambda ()
3830               (begin
3831                 (unsafe-place-local-set! cell.2$5 (current-parameterization))
3832                 (unsafe-place-local-set!
3833                  cell.3$2
3834                  (current-break-parameterization))
3835                 (with-continuation-mark*
3836                  authentic
3837                  parameterization-key
3838                  (extend-parameterization
3839                   (continuation-mark-set-first #f parameterization-key)
3840                   error-value->string-handler
3841                   entered-err-string-handler)
3842                  (with-continuation-mark*
3843                   authentic
3844                   break-enabled-key
3845                   (make-thread-cell #f)
3846                   (begin
3847                     (check-for-break)
3848                     (call-with-exception-handler
3849                      (lambda (exn_0)
3850                        (if (continuation-mark-set-first #f exited-key)
3851                          exn_0
3852                          (abort-current-continuation
3853                           lock-tag
3854                           (lambda () (raise exn_0)))))
3855                      f_0))))))
3856             (lambda ()
3857               (begin
3858                 (unsafe-place-local-set! cell.1$11 #f)
3859                 (unsafe-place-local-set! cell.2$5 #f)
3860                 (unsafe-place-local-set! cell.3$2 #f)
3861                 (begin-unsafe (unsafe-end-breakable-atomic))))))
3862          lock-tag
3863          (lambda (t_0) (|#%app| t_0))))))))
3864(define call-as-nonatomic
3865  (lambda (f_0)
3866    (begin
3867      (if (if (procedure? f_0) (procedure-arity-includes? f_0 0) #f)
3868        (void)
3869        (raise-type-error 'call-as-nonatomic "procedure (arity 0)" f_0))
3870      (if (eq? (unsafe-place-local-ref cell.1$11) (current-thread))
3871        (void)
3872        (error 'call-as-nonatomic "not in atomic area for ~e" f_0))
3873      (let ((paramz_0 (unsafe-place-local-ref cell.2$5)))
3874        (let ((break-paramz_0 (unsafe-place-local-ref cell.3$2)))
3875          (let ((extra-depth_0 (unsafe-place-local-ref cell.4$2)))
3876            (with-continuation-mark*
3877             general
3878             exited-key
3879             #t
3880             (call-with-parameterization
3881              paramz_0
3882              (lambda ()
3883                (call-with-break-parameterization
3884                 break-paramz_0
3885                 (lambda ()
3886                   (dynamic-wind
3887                    (lambda ()
3888                      (begin
3889                        (unsafe-place-local-set! cell.1$11 #f)
3890                        (unsafe-place-local-set! cell.4$2 0)
3891                        (begin-unsafe (unsafe-end-breakable-atomic))
3892                        (letrec*
3893                         ((loop_0
3894                           (|#%name|
3895                            loop
3896                            (lambda (i_0)
3897                              (begin
3898                                (if (zero? i_0)
3899                                  (void)
3900                                  (begin
3901                                    (begin-unsafe
3902                                     (unsafe-end-breakable-atomic))
3903                                    (loop_0 (sub1 i_0)))))))))
3904                         (loop_0 extra-depth_0))))
3905                    f_0
3906                    (lambda ()
3907                      (begin
3908                        (begin-unsafe (unsafe-start-breakable-atomic))
3909                        (unsafe-place-local-set! cell.2$5 paramz_0)
3910                        (unsafe-place-local-set! cell.3$2 break-paramz_0)
3911                        (letrec*
3912                         ((loop_0
3913                           (|#%name|
3914                            loop
3915                            (lambda (i_0)
3916                              (begin
3917                                (if (zero? i_0)
3918                                  (void)
3919                                  (begin
3920                                    (begin-unsafe
3921                                     (unsafe-start-breakable-atomic))
3922                                    (loop_0 (sub1 i_0)))))))))
3923                         (loop_0 extra-depth_0))
3924                        (unsafe-place-local-set! cell.4$2 extra-depth_0)
3925                        (unsafe-place-local-set!
3926                         cell.1$11
3927                         (current-thread))))))))))))))))
3928(define not-an-fX.1
3929  (|#%name|
3930   not-an-fX
3931   (lambda (who_0 v_0) (begin (raise-argument-error who_0 "fixnum?" v_0)))))
3932(define-values
3933 (prop:serialize serialize? serialize-ref)
3934 (make-struct-type-property 'serialize))
3935(define-values
3936 (prop:serialize-fill! serialize-fill!? serialize-fill!-ref)
3937 (make-struct-type-property 'serialize-fill!))
3938(define-values
3939 (prop:reach-scopes reach-scopes? reach-scopes-ref)
3940 (make-struct-type-property 'reach-scopes))
3941(define-values
3942 (prop:scope-with-bindings scope-with-bindings? scope-with-bindings-ref)
3943 (make-struct-type-property 'scope-with-bindings))
3944(define-values
3945 (prop:binding-reach-scopes binding-reach-scopes? binding-reach-scopes-ref)
3946 (make-struct-type-property 'binding-reach-scopes))
3947(define log-performance?
3948  (if (environment-variables-ref
3949       (current-environment-variables)
3950       #vu8(80 76 84 95 69 88 80 65 78 68 69 82 95 84 73 77 69 83))
3951    #t
3952    #f))
3953(define cell.1$10 (unsafe-make-place-local #f))
3954(define cell.2$4 (unsafe-make-place-local (make-hasheq)))
3955(define performance-place-init!
3956  (lambda () (unsafe-place-local-set! cell.2$4 (make-hasheq))))
3957(define finish_2439
3958  (make-struct-type-install-properties
3959   '(region)
3960   5
3961   0
3962   #f
3963   null
3964   (current-inspector)
3965   #f
3966   '(0)
3967   #f
3968   'region))
3969(define struct:region
3970  (make-record-type-descriptor*
3971   'region
3972   #f
3973   (|#%nongenerative-uid| region)
3974   #f
3975   #f
3976   5
3977   30))
3978(define effect_2980 (finish_2439 struct:region))
3979(define region1.1
3980  (|#%name|
3981   region
3982   (record-constructor
3983    (make-record-constructor-descriptor struct:region #f #f))))
3984(define region?_2430 (|#%name| region? (record-predicate struct:region)))
3985(define region?
3986  (|#%name|
3987   region?
3988   (lambda (v)
3989     (if (region?_2430 v)
3990       #t
3991       ($value
3992        (if (impersonator? v) (region?_2430 (impersonator-val v)) #f))))))
3993(define region-path_2994
3994  (|#%name| region-path (record-accessor struct:region 0)))
3995(define region-path
3996  (|#%name|
3997   region-path
3998   (lambda (s)
3999     (if (region?_2430 s)
4000       (region-path_2994 s)
4001       ($value
4002        (impersonate-ref region-path_2994 struct:region 0 s 'region 'path))))))
4003(define region-start_2092
4004  (|#%name| region-start (record-accessor struct:region 1)))
4005(define region-start
4006  (|#%name|
4007   region-start
4008   (lambda (s)
4009     (if (region?_2430 s)
4010       (region-start_2092 s)
4011       ($value
4012        (impersonate-ref
4013         region-start_2092
4014         struct:region
4015         1
4016         s
4017         'region
4018         'start))))))
4019(define region-start-memory_2878
4020  (|#%name| region-start-memory (record-accessor struct:region 2)))
4021(define region-start-memory
4022  (|#%name|
4023   region-start-memory
4024   (lambda (s)
4025     (if (region?_2430 s)
4026       (region-start-memory_2878 s)
4027       ($value
4028        (impersonate-ref
4029         region-start-memory_2878
4030         struct:region
4031         2
4032         s
4033         'region
4034         'start-memory))))))
4035(define region-as-nested_2870
4036  (|#%name| region-as-nested (record-accessor struct:region 3)))
4037(define region-as-nested
4038  (|#%name|
4039   region-as-nested
4040   (lambda (s)
4041     (if (region?_2430 s)
4042       (region-as-nested_2870 s)
4043       ($value
4044        (impersonate-ref
4045         region-as-nested_2870
4046         struct:region
4047         3
4048         s
4049         'region
4050         'as-nested))))))
4051(define region-as-nested-memory_2442
4052  (|#%name| region-as-nested-memory (record-accessor struct:region 4)))
4053(define region-as-nested-memory
4054  (|#%name|
4055   region-as-nested-memory
4056   (lambda (s)
4057     (if (region?_2430 s)
4058       (region-as-nested-memory_2442 s)
4059       ($value
4060        (impersonate-ref
4061         region-as-nested-memory_2442
4062         struct:region
4063         4
4064         s
4065         'region
4066         'as-nested-memory))))))
4067(define set-region-start!_2321
4068  (|#%name| set-region-start! (record-mutator struct:region 1)))
4069(define set-region-start!
4070  (|#%name|
4071   set-region-start!
4072   (lambda (s v)
4073     (if (region?_2430 s)
4074       (set-region-start!_2321 s v)
4075       ($value
4076        (impersonate-set!
4077         set-region-start!_2321
4078         struct:region
4079         1
4080         1
4081         s
4082         v
4083         'region
4084         'start))))))
4085(define set-region-start-memory!_3209
4086  (|#%name| set-region-start-memory! (record-mutator struct:region 2)))
4087(define set-region-start-memory!
4088  (|#%name|
4089   set-region-start-memory!
4090   (lambda (s v)
4091     (if (region?_2430 s)
4092       (set-region-start-memory!_3209 s v)
4093       ($value
4094        (impersonate-set!
4095         set-region-start-memory!_3209
4096         struct:region
4097         2
4098         2
4099         s
4100         v
4101         'region
4102         'start-memory))))))
4103(define set-region-as-nested!_2510
4104  (|#%name| set-region-as-nested! (record-mutator struct:region 3)))
4105(define set-region-as-nested!
4106  (|#%name|
4107   set-region-as-nested!
4108   (lambda (s v)
4109     (if (region?_2430 s)
4110       (set-region-as-nested!_2510 s v)
4111       ($value
4112        (impersonate-set!
4113         set-region-as-nested!_2510
4114         struct:region
4115         3
4116         3
4117         s
4118         v
4119         'region
4120         'as-nested))))))
4121(define set-region-as-nested-memory!_2903
4122  (|#%name| set-region-as-nested-memory! (record-mutator struct:region 4)))
4123(define set-region-as-nested-memory!
4124  (|#%name|
4125   set-region-as-nested-memory!
4126   (lambda (s v)
4127     (if (region?_2430 s)
4128       (set-region-as-nested-memory!_2903 s v)
4129       ($value
4130        (impersonate-set!
4131         set-region-as-nested-memory!_2903
4132         struct:region
4133         4
4134         4
4135         s
4136         v
4137         'region
4138         'as-nested-memory))))))
4139(define finish_2300
4140  (make-struct-type-install-properties
4141   '(stat)
4142   3
4143   0
4144   #f
4145   null
4146   (current-inspector)
4147   #f
4148   '()
4149   #f
4150   'stat))
4151(define struct:stat
4152  (make-record-type-descriptor*
4153   'stat
4154   #f
4155   (|#%nongenerative-uid| stat)
4156   #f
4157   #f
4158   3
4159   7))
4160(define effect_2500 (finish_2300 struct:stat))
4161(define stat2.1
4162  (|#%name|
4163   stat
4164   (record-constructor
4165    (make-record-constructor-descriptor struct:stat #f #f))))
4166(define stat?_2843 (|#%name| stat? (record-predicate struct:stat)))
4167(define stat?
4168  (|#%name|
4169   stat?
4170   (lambda (v)
4171     (if (stat?_2843 v)
4172       #t
4173       ($value (if (impersonator? v) (stat?_2843 (impersonator-val v)) #f))))))
4174(define stat-msecs_3052 (|#%name| stat-msecs (record-accessor struct:stat 0)))
4175(define stat-msecs
4176  (|#%name|
4177   stat-msecs
4178   (lambda (s)
4179     (if (stat?_2843 s)
4180       (stat-msecs_3052 s)
4181       ($value
4182        (impersonate-ref stat-msecs_3052 struct:stat 0 s 'stat 'msecs))))))
4183(define stat-memory_2120
4184  (|#%name| stat-memory (record-accessor struct:stat 1)))
4185(define stat-memory
4186  (|#%name|
4187   stat-memory
4188   (lambda (s)
4189     (if (stat?_2843 s)
4190       (stat-memory_2120 s)
4191       ($value
4192        (impersonate-ref stat-memory_2120 struct:stat 1 s 'stat 'memory))))))
4193(define stat-count_2033 (|#%name| stat-count (record-accessor struct:stat 2)))
4194(define stat-count
4195  (|#%name|
4196   stat-count
4197   (lambda (s)
4198     (if (stat?_2843 s)
4199       (stat-count_2033 s)
4200       ($value
4201        (impersonate-ref stat-count_2033 struct:stat 2 s 'stat 'count))))))
4202(define set-stat-msecs!_2321
4203  (|#%name| set-stat-msecs! (record-mutator struct:stat 0)))
4204(define set-stat-msecs!
4205  (|#%name|
4206   set-stat-msecs!
4207   (lambda (s v)
4208     (if (stat?_2843 s)
4209       (set-stat-msecs!_2321 s v)
4210       ($value
4211        (impersonate-set!
4212         set-stat-msecs!_2321
4213         struct:stat
4214         0
4215         0
4216         s
4217         v
4218         'stat
4219         'msecs))))))
4220(define set-stat-memory!_2358
4221  (|#%name| set-stat-memory! (record-mutator struct:stat 1)))
4222(define set-stat-memory!
4223  (|#%name|
4224   set-stat-memory!
4225   (lambda (s v)
4226     (if (stat?_2843 s)
4227       (set-stat-memory!_2358 s v)
4228       ($value
4229        (impersonate-set!
4230         set-stat-memory!_2358
4231         struct:stat
4232         1
4233         1
4234         s
4235         v
4236         'stat
4237         'memory))))))
4238(define set-stat-count!_2436
4239  (|#%name| set-stat-count! (record-mutator struct:stat 2)))
4240(define set-stat-count!
4241  (|#%name|
4242   set-stat-count!
4243   (lambda (s v)
4244     (if (stat?_2843 s)
4245       (set-stat-count!_2436 s v)
4246       ($value
4247        (impersonate-set!
4248         set-stat-count!_2436
4249         struct:stat
4250         2
4251         2
4252         s
4253         v
4254         'stat
4255         'count))))))
4256(define stat-key (gensym))
4257(define start-performance-region
4258  (lambda path_0
4259    (unsafe-place-local-set!
4260     cell.1$10
4261     (cons
4262      (let ((app_0
4263             (if (unsafe-place-local-ref cell.1$10)
4264               (letrec*
4265                ((loop_0
4266                  (|#%name|
4267                   loop
4268                   (lambda (path_1 enclosing-path_0)
4269                     (begin
4270                       (if (null? path_1)
4271                         null
4272                         (let ((app_0
4273                                (if (if (eq? '_ (car path_1))
4274                                      (pair? enclosing-path_0)
4275                                      #f)
4276                                  (car enclosing-path_0)
4277                                  (car path_1))))
4278                           (cons
4279                            app_0
4280                            (let ((app_1 (cdr path_1)))
4281                              (loop_0
4282                               app_1
4283                               (if (pair? enclosing-path_0)
4284                                 (cdr enclosing-path_0)
4285                                 null)))))))))))
4286                (loop_0
4287                 path_0
4288                 (region-path (car (unsafe-place-local-ref cell.1$10)))))
4289               path_0)))
4290        (let ((app_1 (current-inexact-milliseconds)))
4291          (region1.1 app_0 app_1 (current-memory-use 'cumulative) 0.0 0)))
4292      (unsafe-place-local-ref cell.1$10)))))
4293(define end-performance-region
4294  (lambda ()
4295    (let ((now_0 (current-inexact-milliseconds)))
4296      (let ((now-memory_0 (current-memory-use 'cumulative)))
4297        (let ((r_0 (car (unsafe-place-local-ref cell.1$10))))
4298          (begin
4299            (unsafe-place-local-set!
4300             cell.1$10
4301             (cdr (unsafe-place-local-ref cell.1$10)))
4302            (let ((full-delta_0 (- now_0 (region-start r_0))))
4303              (let ((delta_0 (- full-delta_0 (region-as-nested r_0))))
4304                (let ((full-delta-memory_0
4305                       (- now-memory_0 (region-start-memory r_0))))
4306                  (let ((delta-memory_0
4307                         (-
4308                          full-delta-memory_0
4309                          (region-as-nested-memory r_0))))
4310                    (begin
4311                      (letrec*
4312                       ((loop_0
4313                         (|#%name|
4314                          loop
4315                          (lambda (accums_0 path_0)
4316                            (begin
4317                              (let ((key_0 (car path_0)))
4318                                (let ((accum_0
4319                                       (let ((or-part_0
4320                                              (hash-ref accums_0 key_0 #f)))
4321                                         (if or-part_0
4322                                           or-part_0
4323                                           (let ((accum_0 (make-hasheq)))
4324                                             (begin
4325                                               (hash-set!
4326                                                accums_0
4327                                                key_0
4328                                                accum_0)
4329                                               accum_0))))))
4330                                  (let ((s_0
4331                                         (let ((or-part_0
4332                                                (hash-ref
4333                                                 accum_0
4334                                                 stat-key
4335                                                 #f)))
4336                                           (if or-part_0
4337                                             or-part_0
4338                                             (let ((s_0 (stat2.1 0.0 0 0)))
4339                                               (begin
4340                                                 (hash-set!
4341                                                  accum_0
4342                                                  stat-key
4343                                                  s_0)
4344                                                 s_0))))))
4345                                    (begin
4346                                      (set-stat-msecs!
4347                                       s_0
4348                                       (+ delta_0 (stat-msecs s_0)))
4349                                      (set-stat-memory!
4350                                       s_0
4351                                       (+ delta-memory_0 (stat-memory s_0)))
4352                                      (if (null? (cdr path_0))
4353                                        (set-stat-count!
4354                                         s_0
4355                                         (add1 (stat-count s_0)))
4356                                        (void))
4357                                      (if (null? (cdr path_0))
4358                                        (void)
4359                                        (loop_0 accum_0 (cdr path_0))))))))))))
4360                       (loop_0
4361                        (unsafe-place-local-ref cell.2$4)
4362                        (region-path r_0)))
4363                      (if (unsafe-place-local-ref cell.1$10)
4364                        (begin
4365                          (let ((app_0
4366                                 (car (unsafe-place-local-ref cell.1$10))))
4367                            (set-region-as-nested!
4368                             app_0
4369                             (+
4370                              (region-as-nested
4371                               (car (unsafe-place-local-ref cell.1$10)))
4372                              full-delta_0)))
4373                          (let ((app_0
4374                                 (car (unsafe-place-local-ref cell.1$10))))
4375                            (set-region-as-nested-memory!
4376                             app_0
4377                             (+
4378                              (region-as-nested-memory
4379                               (car (unsafe-place-local-ref cell.1$10)))
4380                              full-delta-memory_0))))
4381                        (void)))))))))))))
4382(define effect_2814
4383  (begin
4384    (|#%call-with-values|
4385     (lambda ()
4386       (if log-performance?
4387         (void
4388          (plumber-add-flush!
4389           (current-plumber)
4390           (lambda (h_0)
4391             (let ((whole-len_0
4392                    (|#%name|
4393                     whole-len
4394                     (lambda (s_0)
4395                       (begin
4396                         (caar
4397                          (let ((or-part_0
4398                                 (regexp-match-positions rx2668 s_0)))
4399                            (if or-part_0 or-part_0 '(0)))))))))
4400               (let ((kb_0
4401                      (|#%name|
4402                       kb
4403                       (lambda (b_0)
4404                         (begin
4405                           (let ((s_0 (number->string (quotient b_0 1024))))
4406                             (list->string
4407                              (let ((lst_0 (reverse$1 (string->list s_0))))
4408                                (begin
4409                                  (letrec*
4410                                   ((for-loop_0
4411                                     (|#%name|
4412                                      for-loop
4413                                      (lambda (l_0 lst_1 pos_0)
4414                                        (begin
4415                                          (if (if (pair? lst_1) #t #f)
4416                                            (let ((c_0 (unsafe-car lst_1)))
4417                                              (let ((rest_0
4418                                                     (unsafe-cdr lst_1)))
4419                                                (let ((l_1
4420                                                       (let ((l_1
4421                                                              (if (if (positive?
4422                                                                       pos_0)
4423                                                                    (zero?
4424                                                                     (modulo
4425                                                                      pos_0
4426                                                                      3))
4427                                                                    #f)
4428                                                                (list*
4429                                                                 c_0
4430                                                                 '#\x2c
4431                                                                 l_0)
4432                                                                (cons
4433                                                                 c_0
4434                                                                 l_0))))
4435                                                         (values l_1))))
4436                                                  (for-loop_0
4437                                                   l_1
4438                                                   rest_0
4439                                                   (+ pos_0 1)))))
4440                                            l_0))))))
4441                                   (for-loop_0 null lst_0 0)))))))))))
4442                 (call-with-values
4443                  (lambda ()
4444                    (letrec*
4445                     ((loop_0
4446                       (|#%name|
4447                        loop
4448                        (lambda (accums_0
4449                                 label-len_0
4450                                 value-len_0
4451                                 memory-len_0
4452                                 count-len_0
4453                                 indent_0)
4454                          (begin
4455                            (begin
4456                              (letrec*
4457                               ((for-loop_0
4458                                 (|#%name|
4459                                  for-loop
4460                                  (lambda (label-len_1
4461                                           value-len_1
4462                                           memory-len_1
4463                                           count-len_1
4464                                           i_0)
4465                                    (begin
4466                                      (if i_0
4467                                        (call-with-values
4468                                         (lambda ()
4469                                           (hash-iterate-key+value
4470                                            accums_0
4471                                            i_0))
4472                                         (case-lambda
4473                                          ((k_0 v_0)
4474                                           (call-with-values
4475                                            (lambda ()
4476                                              (call-with-values
4477                                               (lambda ()
4478                                                 (if (eq? k_0 stat-key)
4479                                                   (let ((app_0
4480                                                          (max
4481                                                           value-len_1
4482                                                           (whole-len_0
4483                                                            (format
4484                                                             "~a"
4485                                                             (stat-msecs
4486                                                              v_0))))))
4487                                                     (let ((app_1
4488                                                            (max
4489                                                             memory-len_1
4490                                                             (string-length
4491                                                              (format
4492                                                               "~a"
4493                                                               (kb_0
4494                                                                (stat-memory
4495                                                                 v_0)))))))
4496                                                       (values
4497                                                        label-len_1
4498                                                        app_0
4499                                                        app_1
4500                                                        (max
4501                                                         count-len_1
4502                                                         (string-length
4503                                                          (format
4504                                                           "~a"
4505                                                           (stat-count
4506                                                            v_0)))))))
4507                                                   (let ((app_0
4508                                                          (max
4509                                                           label-len_1
4510                                                           (+
4511                                                            indent_0
4512                                                            (string-length
4513                                                             (format
4514                                                              "~a"
4515                                                              k_0))))))
4516                                                     (loop_0
4517                                                      v_0
4518                                                      app_0
4519                                                      value-len_1
4520                                                      memory-len_1
4521                                                      count-len_1
4522                                                      (+ 2 indent_0)))))
4523                                               (case-lambda
4524                                                ((label-len_2
4525                                                  value-len_2
4526                                                  memory-len_2
4527                                                  count-len_2)
4528                                                 (values
4529                                                  label-len_2
4530                                                  value-len_2
4531                                                  memory-len_2
4532                                                  count-len_2))
4533                                                (args
4534                                                 (raise-binding-result-arity-error
4535                                                  4
4536                                                  args)))))
4537                                            (case-lambda
4538                                             ((label-len_2
4539                                               value-len_2
4540                                               memory-len_2
4541                                               count-len_2)
4542                                              (for-loop_0
4543                                               label-len_2
4544                                               value-len_2
4545                                               memory-len_2
4546                                               count-len_2
4547                                               (hash-iterate-next
4548                                                accums_0
4549                                                i_0)))
4550                                             (args
4551                                              (raise-binding-result-arity-error
4552                                               4
4553                                               args)))))
4554                                          (args
4555                                           (raise-binding-result-arity-error
4556                                            2
4557                                            args))))
4558                                        (values
4559                                         label-len_1
4560                                         value-len_1
4561                                         memory-len_1
4562                                         count-len_1)))))))
4563                               (for-loop_0
4564                                label-len_0
4565                                value-len_0
4566                                memory-len_0
4567                                count-len_0
4568                                (hash-iterate-first accums_0)))))))))
4569                     (loop_0 (unsafe-place-local-ref cell.2$4) 6 5 4 5 2)))
4570                  (case-lambda
4571                   ((label-max-len_0
4572                     value-max-len_0
4573                     memory-max-len_0
4574                     count-max-len_0)
4575                    (begin
4576                      (let ((l_0 (current-logger)))
4577                        (if (log-level? l_0 'error (logger-name l_0))
4578                          (let ((app_0
4579                                 (let ((app_0
4580                                        (make-string
4581                                         (-
4582                                          (+ label-max-len_0 value-max-len_0)
4583                                          11)
4584                                         '#\x20)))
4585                                   (let ((app_1
4586                                          (make-string
4587                                           (- memory-max-len_0 4)
4588                                           '#\x20)))
4589                                     (format
4590                                      "REGION      ~aMSECS   ~aMEMK   ~aCOUNT"
4591                                      app_0
4592                                      app_1
4593                                      (make-string
4594                                       (- count-max-len_0 5)
4595                                       '#\x20))))))
4596                            (log-message
4597                             l_0
4598                             'error
4599                             app_0
4600                             (current-continuation-marks)))
4601                          (void)))
4602                      (letrec*
4603                       ((loop_0
4604                         (|#%name|
4605                          loop
4606                          (lambda (name_0 accums_0 indent_0 newline?_0)
4607                            (begin
4608                              (begin
4609                                (if name_0
4610                                  (let ((v_0 (hash-ref accums_0 stat-key)))
4611                                    (let ((l_0 (current-logger)))
4612                                      (if (log-level?
4613                                           l_0
4614                                           'error
4615                                           (logger-name l_0))
4616                                        (let ((app_0
4617                                               (let ((app_0
4618                                                      (make-string
4619                                                       (let ((app_0
4620                                                              (let ((app_0
4621                                                                     (string-length
4622                                                                      (format
4623                                                                       "~a"
4624                                                                       name_0))))
4625                                                                (-
4626                                                                 label-max-len_0
4627                                                                 app_0
4628                                                                 (string-length
4629                                                                  indent_0)))))
4630                                                         (+
4631                                                          app_0
4632                                                          (-
4633                                                           value-max-len_0
4634                                                           (whole-len_0
4635                                                            (format
4636                                                             "~a"
4637                                                             (stat-msecs
4638                                                              v_0))))))
4639                                                       '#\x20)))
4640                                                 (let ((app_1
4641                                                        (regexp-replace
4642                                                         rx2640
4643                                                         (format
4644                                                          "~a00"
4645                                                          (stat-msecs v_0))
4646                                                         ".\\1")))
4647                                                   (let ((app_2
4648                                                          (make-string
4649                                                           (-
4650                                                            memory-max-len_0
4651                                                            (string-length
4652                                                             (format
4653                                                              "~a"
4654                                                              (kb_0
4655                                                               (stat-memory
4656                                                                v_0)))))
4657                                                           '#\x20)))
4658                                                     (let ((app_3
4659                                                            (kb_0
4660                                                             (stat-memory
4661                                                              v_0))))
4662                                                       (let ((app_4
4663                                                              (make-string
4664                                                               (-
4665                                                                count-max-len_0
4666                                                                (string-length
4667                                                                 (format
4668                                                                  "~a"
4669                                                                  (stat-count
4670                                                                   v_0))))
4671                                                               '#\x20)))
4672                                                         (format
4673                                                          "~a~a   ~a~a   ~a~a   ~a~a"
4674                                                          indent_0
4675                                                          name_0
4676                                                          app_0
4677                                                          app_1
4678                                                          app_2
4679                                                          app_3
4680                                                          app_4
4681                                                          (stat-count
4682                                                           v_0)))))))))
4683                                          (log-message
4684                                           l_0
4685                                           'error
4686                                           app_0
4687                                           (current-continuation-marks)))
4688                                        (void))))
4689                                  (void))
4690                                (let ((keys_0
4691                                       (let ((temp5_0
4692                                              (reverse$1
4693                                               (begin
4694                                                 (letrec*
4695                                                  ((for-loop_0
4696                                                    (|#%name|
4697                                                     for-loop
4698                                                     (lambda (fold-var_0 i_0)
4699                                                       (begin
4700                                                         (if i_0
4701                                                           (let ((k_0
4702                                                                  (hash-iterate-key
4703                                                                   accums_0
4704                                                                   i_0)))
4705                                                             (let ((fold-var_1
4706                                                                    (if (not
4707                                                                         (eq?
4708                                                                          k_0
4709                                                                          stat-key))
4710                                                                      (let ((fold-var_1
4711                                                                             (cons
4712                                                                              k_0
4713                                                                              fold-var_0)))
4714                                                                        (values
4715                                                                         fold-var_1))
4716                                                                      fold-var_0)))
4717                                                               (for-loop_0
4718                                                                fold-var_1
4719                                                                (hash-iterate-next
4720                                                                 accums_0
4721                                                                 i_0))))
4722                                                           fold-var_0))))))
4723                                                  (for-loop_0
4724                                                   null
4725                                                   (hash-iterate-first
4726                                                    accums_0)))))))
4727                                         (let ((temp7_0
4728                                                (lambda (key_0)
4729                                                  (stat-msecs
4730                                                   (hash-ref
4731                                                    (hash-ref accums_0 key_0)
4732                                                    stat-key)))))
4733                                           (let ((temp5_1 temp5_0))
4734                                             (sort.1 #f temp7_0 temp5_1 >))))))
4735                                  (begin
4736                                    (begin
4737                                      (letrec*
4738                                       ((for-loop_0
4739                                         (|#%name|
4740                                          for-loop
4741                                          (lambda (lst_0 pos_0)
4742                                            (begin
4743                                              (if (if (pair? lst_0) #t #f)
4744                                                (let ((k_0 (unsafe-car lst_0)))
4745                                                  (let ((rest_0
4746                                                         (unsafe-cdr lst_0)))
4747                                                    (begin
4748                                                      (begin
4749                                                        (if (if newline?_0
4750                                                              (positive? pos_0)
4751                                                              #f)
4752                                                          (let ((l_0
4753                                                                 (current-logger)))
4754                                                            (if (log-level?
4755                                                                 l_0
4756                                                                 'error
4757                                                                 (logger-name
4758                                                                  l_0))
4759                                                              (log-message
4760                                                               l_0
4761                                                               'error
4762                                                               ""
4763                                                               (current-continuation-marks))
4764                                                              (void)))
4765                                                          (void))
4766                                                        (let ((app_0
4767                                                               (hash-ref
4768                                                                accums_0
4769                                                                k_0)))
4770                                                          (loop_0
4771                                                           k_0
4772                                                           app_0
4773                                                           (string-append
4774                                                            indent_0
4775                                                            "  ")
4776                                                           #f)))
4777                                                      (for-loop_0
4778                                                       rest_0
4779                                                       (+ pos_0 1)))))
4780                                                (values)))))))
4781                                       (for-loop_0 keys_0 0)))
4782                                    (void)))))))))
4783                       (loop_0 #f (unsafe-place-local-ref cell.2$4) "" #t))))
4784                   (args (raise-binding-result-arity-error 4 args)))))))))
4785         (void)))
4786     print-values)
4787    (void)))
4788(define 1/module-path?
4789  (|#%name|
4790   module-path?
4791   (lambda (v_0)
4792     (begin
4793       (let ((or-part_0
4794              (if (pair? v_0)
4795                (if (eq? (car v_0) 'submod) (submodule-module-path? v_0) #f)
4796                #f)))
4797         (if or-part_0 or-part_0 (root-module-path? v_0)))))))
4798(define root-module-path?
4799  (lambda (v_0)
4800    (let ((or-part_0 (path? v_0)))
4801      (if or-part_0
4802        or-part_0
4803        (let ((or-part_1 (if (string? v_0) (string-module-path? v_0) #f)))
4804          (if or-part_1
4805            or-part_1
4806            (let ((or-part_2 (if (symbol? v_0) (symbol-module-path? v_0) #f)))
4807              (if or-part_2
4808                or-part_2
4809                (if (pair? v_0)
4810                  (let ((tmp_0 (car v_0)))
4811                    (if (eq? tmp_0 'quote)
4812                      (if (pair? (cdr v_0))
4813                        (if (symbol? (cadr v_0)) (null? (cddr v_0)) #f)
4814                        #f)
4815                      (if (eq? tmp_0 'lib)
4816                        (lib-module-path? v_0)
4817                        (if (eq? tmp_0 'file)
4818                          (if (pair? (cdr v_0))
4819                            (if (string? (cadr v_0))
4820                              (if (path-string? (cadr v_0))
4821                                (null? (cddr v_0))
4822                                #f)
4823                              #f)
4824                            #f)
4825                          (if (eq? tmp_0 'planet)
4826                            (planet-module-path? v_0)
4827                            #f)))))
4828                  #f)))))))))
4829(define submodule-module-path?
4830  (lambda (v_0)
4831    (if (pair? (cdr v_0))
4832      (if (list? v_0)
4833        (if (let ((or-part_0 (equal? (cadr v_0) "..")))
4834              (if or-part_0
4835                or-part_0
4836                (let ((or-part_1 (equal? (cadr v_0) ".")))
4837                  (if or-part_1 or-part_1 (root-module-path? (cadr v_0))))))
4838          (let ((lst_0 (cddr v_0)))
4839            (begin
4840              (letrec*
4841               ((for-loop_0
4842                 (|#%name|
4843                  for-loop
4844                  (lambda (result_0 lst_1)
4845                    (begin
4846                      (if (pair? lst_1)
4847                        (let ((e_0 (unsafe-car lst_1)))
4848                          (let ((rest_0 (unsafe-cdr lst_1)))
4849                            (let ((result_1
4850                                   (let ((result_1
4851                                          (let ((or-part_0 (equal? e_0 "..")))
4852                                            (if or-part_0
4853                                              or-part_0
4854                                              (symbol? e_0)))))
4855                                     (values result_1))))
4856                              (if (if (not
4857                                       (let ((x_0 (list e_0))) (not result_1)))
4858                                    #t
4859                                    #f)
4860                                (for-loop_0 result_1 rest_0)
4861                                result_1))))
4862                        result_0))))))
4863               (for-loop_0 #t lst_0))))
4864          #f)
4865        #f)
4866      #f)))
4867(define string-module-path?
4868  (lambda (v_0) (module-path-string?.1 #t #t #f #t v_0)))
4869(define symbol-module-path?
4870  (lambda (v_0)
4871    (let ((temp15_0 (symbol->string v_0)))
4872      (module-path-string?.1 #f #f #f #f temp15_0))))
4873(define lib-module-path?
4874  (lambda (v_0)
4875    (if (list? v_0)
4876      (if (pair? (cdr v_0))
4877        (letrec*
4878         ((loop_0
4879           (|#%name|
4880            loop
4881            (lambda (v_1 first?_0)
4882              (begin
4883                (let ((or-part_0 (null? v_1)))
4884                  (if or-part_0
4885                    or-part_0
4886                    (if (string? (car v_1))
4887                      (if (let ((temp16_0 (car v_1)))
4888                            (module-path-string?.1
4889                             #f
4890                             first?_0
4891                             #f
4892                             first?_0
4893                             temp16_0))
4894                        (loop_0 (cdr v_1) #f)
4895                        #f)
4896                      #f))))))))
4897         (loop_0 (cdr v_0) #t))
4898        #f)
4899      #f)))
4900(define planet-module-path?
4901  (lambda (v_0)
4902    (if (list? v_0)
4903      (let ((tmp_0 (length v_0)))
4904        (if (eq? tmp_0 1)
4905          #f
4906          (if (eq? tmp_0 2)
4907            (let ((e_0 (cadr v_0)))
4908              (if (string? e_0)
4909                (module-path-string?.1 #f #t #t #f e_0)
4910                (if (symbol? e_0)
4911                  (let ((temp22_0 (symbol->string e_0)))
4912                    (module-path-string?.1 #f #f #t #f temp22_0))
4913                  #f)))
4914            (let ((file_0 (cadr v_0)))
4915              (let ((pkg_0 (caddr v_0)))
4916                (let ((subs_0 (cdddr v_0)))
4917                  (if file_0
4918                    (if (module-path-string?.1 #f #t #f #t file_0)
4919                      (if (if (list? pkg_0)
4920                            (if (<= 2 (length pkg_0) 4)
4921                              (if (planet-user/pkg-string? (car pkg_0))
4922                                (if (planet-user/pkg-string? (cadr pkg_0))
4923                                  (let ((or-part_0 (null? (cddr pkg_0))))
4924                                    (if or-part_0
4925                                      or-part_0
4926                                      (let ((or-part_1
4927                                             (let ((v_1 (caddr pkg_0)))
4928                                               (begin-unsafe
4929                                                (exact-nonnegative-integer?
4930                                                 v_1)))))
4931                                        (if or-part_1
4932                                          or-part_1
4933                                          (let ((or-part_2
4934                                                 (null? (cddr pkg_0))))
4935                                            (if or-part_2
4936                                              or-part_2
4937                                              (planet-version-minor-spec?
4938                                               (cadddr pkg_0))))))))
4939                                  #f)
4940                                #f)
4941                              #f)
4942                            #f)
4943                        (begin
4944                          (letrec*
4945                           ((for-loop_0
4946                             (|#%name|
4947                              for-loop
4948                              (lambda (result_0 lst_0)
4949                                (begin
4950                                  (if (pair? lst_0)
4951                                    (let ((sub_0 (unsafe-car lst_0)))
4952                                      (let ((rest_0 (unsafe-cdr lst_0)))
4953                                        (let ((result_1
4954                                               (let ((result_1
4955                                                      (module-path-string?.1
4956                                                       #f
4957                                                       #f
4958                                                       #f
4959                                                       #f
4960                                                       sub_0)))
4961                                                 (values result_1))))
4962                                          (if (if (not
4963                                                   (let ((x_0 (list sub_0)))
4964                                                     (not result_1)))
4965                                                #t
4966                                                #f)
4967                                            (for-loop_0 result_1 rest_0)
4968                                            result_1))))
4969                                    result_0))))))
4970                           (for-loop_0 #t subs_0)))
4971                        #f)
4972                      #f)
4973                    #f)))))))
4974      #f)))
4975(define planet-version-number? (lambda (v_0) (exact-nonnegative-integer? v_0)))
4976(define planet-version-minor-spec?
4977  (lambda (v_0)
4978    (let ((or-part_0 (begin-unsafe (exact-nonnegative-integer? v_0))))
4979      (if or-part_0
4980        or-part_0
4981        (if (pair? v_0)
4982          (if (list? v_0)
4983            (if (= 2 (length v_0))
4984              (let ((tmp_0 (car v_0)))
4985                (if (if (eq? tmp_0 '=)
4986                      #t
4987                      (if (eq? tmp_0 '+) #t (eq? tmp_0 '-)))
4988                  (let ((v_1 (cadr v_0)))
4989                    (begin-unsafe (exact-nonnegative-integer? v_1)))
4990                  (if (let ((v_1 (car v_0)))
4991                        (begin-unsafe (exact-nonnegative-integer? v_1)))
4992                    (let ((v_1 (cadr v_0)))
4993                      (begin-unsafe (exact-nonnegative-integer? v_1)))
4994                    #f)))
4995              #f)
4996            #f)
4997          #f)))))
4998(define module-path-string?.1
4999  (|#%name|
5000   module-path-string?
5001   (lambda (dots-dir-ok?2_0
5002            file-end-ok?4_0
5003            for-planet?1_0
5004            just-file-ok?3_0
5005            v9_0)
5006     (begin
5007       (let ((len_0 (string-length v9_0)))
5008         (if (positive? len_0)
5009           (if (not (char=? '#\x2f (string-ref v9_0 0)))
5010             (if (not (char=? '#\x2f (string-ref v9_0 (sub1 len_0))))
5011               (call-with-values
5012                (lambda ()
5013                  (if for-planet?1_0
5014                    (check-planet-part v9_0 len_0)
5015                    (values 0 0)))
5016                (case-lambda
5017                 ((start-package-version-pos_0 end-package-version-pos_0)
5018                  (if start-package-version-pos_0
5019                    (letrec*
5020                     ((loop_0
5021                       (|#%name|
5022                        loop
5023                        (lambda (i_0 prev-was-slash?_0 saw-slash?_0 saw-dot?_0)
5024                          (begin
5025                            (if (not (negative? i_0))
5026                              (let ((c_0 (string-ref v9_0 i_0)))
5027                                (if (char=? c_0 '#\x2f)
5028                                  (if (not prev-was-slash?_0)
5029                                    (loop_0 (sub1 i_0) #t #t saw-dot?_0)
5030                                    #f)
5031                                  (if (char=? c_0 '#\x2e)
5032                                    (if (if (< (add1 i_0) len_0)
5033                                          (if (not
5034                                               (char=?
5035                                                (string-ref v9_0 (add1 i_0))
5036                                                '#\x2f))
5037                                            (not
5038                                             (char=?
5039                                              (string-ref v9_0 (add1 i_0))
5040                                              '#\x2e))
5041                                            #f)
5042                                          #f)
5043                                      (if (not saw-slash?_0)
5044                                        (loop_0 (sub1 i_0) #f saw-slash?_0 #t)
5045                                        #f)
5046                                      (loop_0
5047                                       (sub1 i_0)
5048                                       #f
5049                                       saw-slash?_0
5050                                       saw-dot?_0))
5051                                    (if (let ((or-part_0 (plain-char? c_0)))
5052                                          (if or-part_0
5053                                            or-part_0
5054                                            (if (char=? c_0 '#\x25)
5055                                              (if (< (+ i_0 2) len_0)
5056                                                (hex-sequence? v9_0 (add1 i_0))
5057                                                #f)
5058                                              #f)))
5059                                      (loop_0
5060                                       (sub1 i_0)
5061                                       #f
5062                                       saw-slash?_0
5063                                       saw-dot?_0)
5064                                      (if (if (>=
5065                                               i_0
5066                                               start-package-version-pos_0)
5067                                            (< i_0 end-package-version-pos_0)
5068                                            #f)
5069                                        (loop_0
5070                                         (sub1 i_0)
5071                                         #f
5072                                         saw-slash?_0
5073                                         saw-dot?_0)
5074                                        #f)))))
5075                              (if (not
5076                                   (if (not just-file-ok?3_0)
5077                                     (if saw-dot?_0 (not saw-slash?_0) #f)
5078                                     #f))
5079                                (if dots-dir-ok?2_0
5080                                  dots-dir-ok?2_0
5081                                  (letrec*
5082                                   ((loop_1
5083                                     (|#%name|
5084                                      loop
5085                                      (lambda (i_1)
5086                                        (begin
5087                                          (if (= i_1 len_0)
5088                                            #t
5089                                            (if (char=?
5090                                                 (string-ref v9_0 i_1)
5091                                                 '#\x2e)
5092                                              (if (not
5093                                                   (let ((or-part_0
5094                                                          (=
5095                                                           len_0
5096                                                           (add1 i_1))))
5097                                                     (if or-part_0
5098                                                       or-part_0
5099                                                       (char=?
5100                                                        (string-ref
5101                                                         v9_0
5102                                                         (add1 i_1))
5103                                                        '#\x2f))))
5104                                                (if (not
5105                                                     (if (char=?
5106                                                          (string-ref
5107                                                           v9_0
5108                                                           (add1 i_1))
5109                                                          '#\x2e)
5110                                                       (let ((or-part_0
5111                                                              (=
5112                                                               len_0
5113                                                               (+ i_1 2))))
5114                                                         (if or-part_0
5115                                                           or-part_0
5116                                                           (char=?
5117                                                            (string-ref
5118                                                             v9_0
5119                                                             (+ i_1 2))
5120                                                            '#\x2f)))
5121                                                       #f))
5122                                                  (loop_1
5123                                                   (letrec*
5124                                                    ((loop_2
5125                                                      (|#%name|
5126                                                       loop
5127                                                       (lambda (i_2)
5128                                                         (begin
5129                                                           (if (char=?
5130                                                                '#\x2e
5131                                                                (string-ref
5132                                                                 v9_0
5133                                                                 i_2))
5134                                                             (loop_2
5135                                                              (add1 i_2))
5136                                                             i_2))))))
5137                                                    (loop_2 i_1)))
5138                                                  #f)
5139                                                #f)
5140                                              (loop_1 (add1 i_1)))))))))
5141                                   (loop_1 0)))
5142                                #f)))))))
5143                     (loop_0 (sub1 len_0) #f (not file-end-ok?4_0) #f))
5144                    #f))
5145                 (args (raise-binding-result-arity-error 2 args))))
5146               #f)
5147             #f)
5148           #f))))))
5149(define planet-user/pkg-string?
5150  (lambda (v_0)
5151    (if (string? v_0)
5152      (let ((len_0 (string-length v_0)))
5153        (if (positive? len_0)
5154          (call-with-values
5155           (lambda ()
5156             (begin
5157               (check-string v_0)
5158               (values v_0 (unsafe-string-length v_0))))
5159           (case-lambda
5160            ((vec_0 len_1)
5161             (let ((start_0 0))
5162               (let ((vec_1 vec_0) (len_2 len_1))
5163                 (begin
5164                   #f
5165                   (void)
5166                   (letrec*
5167                    ((for-loop_0
5168                      (|#%name|
5169                       for-loop
5170                       (lambda (result_0 pos_0 pos_1)
5171                         (begin
5172                           (if (if (unsafe-fx< pos_0 len_2) #t #f)
5173                             (let ((c_0 (string-ref vec_1 pos_0)))
5174                               (let ((result_1
5175                                      (let ((result_1
5176                                             (let ((or-part_0
5177                                                    (plain-char? c_0)))
5178                                               (if or-part_0
5179                                                 or-part_0
5180                                                 (let ((or-part_1
5181                                                        (char=? '#\x2e c_0)))
5182                                                   (if or-part_1
5183                                                     or-part_1
5184                                                     (if (char=? '#\x25 c_0)
5185                                                       (if (<
5186                                                            pos_1
5187                                                            (- len_0 2))
5188                                                         (hex-sequence?
5189                                                          v_0
5190                                                          (add1 pos_1))
5191                                                         #f)
5192                                                       #f)))))))
5193                                        (values result_1))))
5194                                 (if (if (not
5195                                          (let ((x_0 (list c_0)))
5196                                            (not result_1)))
5197                                       (if (not
5198                                            (let ((x_0 (list pos_1)))
5199                                              (not result_1)))
5200                                         #t
5201                                         #f)
5202                                       #f)
5203                                   (for-loop_0
5204                                    result_1
5205                                    (unsafe-fx+ 1 pos_0)
5206                                    (+ pos_1 1))
5207                                   result_1)))
5208                             result_0))))))
5209                    (for-loop_0 #t 0 start_0))))))
5210            (args (raise-binding-result-arity-error 2 args))))
5211          #f))
5212      #f)))
5213(define plain-char?
5214  (lambda (c_0)
5215    (let ((or-part_0 (char<=? '#\x61 c_0 '#\x7a)))
5216      (if or-part_0
5217        or-part_0
5218        (let ((or-part_1 (char<=? '#\x41 c_0 '#\x5a)))
5219          (if or-part_1
5220            or-part_1
5221            (let ((or-part_2 (char<=? '#\x30 c_0 '#\x39)))
5222              (if or-part_2
5223                or-part_2
5224                (let ((or-part_3 (char=? '#\x2d c_0)))
5225                  (if or-part_3
5226                    or-part_3
5227                    (let ((or-part_4 (char=? '#\x5f c_0)))
5228                      (if or-part_4 or-part_4 (char=? '#\x2b c_0)))))))))))))
5229(define hex-sequence?
5230  (lambda (s_0 i_0)
5231    (let ((c1_0 (string-ref s_0 i_0)))
5232      (let ((c2_0 (string-ref s_0 (add1 i_0))))
5233        (if (hex-char? c1_0)
5234          (if (hex-char? c2_0)
5235            (let ((c_0
5236                   (integer->char
5237                    (let ((app_0 (* (hex-char->integer c1_0) 16)))
5238                      (+ app_0 (hex-char->integer c2_0))))))
5239              (not (plain-char? c_0)))
5240            #f)
5241          #f)))))
5242(define hex-char?
5243  (lambda (c_0)
5244    (let ((or-part_0 (char<=? '#\x61 c_0 '#\x66)))
5245      (if or-part_0 or-part_0 (char<=? '#\x30 c_0 '#\x39)))))
5246(define hex-char->integer
5247  (lambda (c_0)
5248    (if (char<=? '#\x61 c_0 '#\x66)
5249      (- (char->integer c_0) 107)
5250      (if (char<=? '#\x41 c_0 '#\x46)
5251        (- (char->integer c_0) 75)
5252        (- (char->integer c_0) 48)))))
5253(define check-planet-part
5254  (lambda (v_0 len_0)
5255    (call-with-values
5256     (lambda ()
5257       (letrec*
5258        ((loop_0
5259          (|#%name|
5260           loop
5261           (lambda (j_0
5262                    start-package-version-pos_0
5263                    end-package-version-pos_0
5264                    colon1-pos_0
5265                    colon2-pos_0)
5266             (begin
5267               (if (= j_0 len_0)
5268                 (values
5269                  start-package-version-pos_0
5270                  (if end-package-version-pos_0 end-package-version-pos_0 j_0)
5271                  colon1-pos_0
5272                  colon2-pos_0)
5273                 (let ((tmp_0 (string-ref v_0 j_0)))
5274                   (if (eqv? tmp_0 '#\x2f)
5275                     (let ((app_0 (add1 j_0)))
5276                       (let ((app_1
5277                              (if start-package-version-pos_0
5278                                start-package-version-pos_0
5279                                (add1 j_0))))
5280                         (loop_0
5281                          app_0
5282                          app_1
5283                          (if start-package-version-pos_0
5284                            (if end-package-version-pos_0
5285                              end-package-version-pos_0
5286                              j_0)
5287                            #f)
5288                          colon1-pos_0
5289                          colon2-pos_0)))
5290                     (if (eqv? tmp_0 '#\x3a)
5291                       (if colon2-pos_0
5292                         (values #f #f #f #f)
5293                         (if colon1-pos_0
5294                           (loop_0
5295                            (add1 j_0)
5296                            start-package-version-pos_0
5297                            end-package-version-pos_0
5298                            colon1-pos_0
5299                            j_0)
5300                           (loop_0
5301                            (add1 j_0)
5302                            start-package-version-pos_0
5303                            end-package-version-pos_0
5304                            j_0
5305                            #f)))
5306                       (loop_0
5307                        (add1 j_0)
5308                        start-package-version-pos_0
5309                        end-package-version-pos_0
5310                        colon1-pos_0
5311                        colon2-pos_0))))))))))
5312        (loop_0 0 #f #f #f #f)))
5313     (case-lambda
5314      ((start-package-version-pos_0
5315        end-package-version-pos_0
5316        colon1-pos_0
5317        colon2-pos_0)
5318       (if (if start-package-version-pos_0
5319             (if (> end-package-version-pos_0 start-package-version-pos_0)
5320               (let ((or-part_0 (not colon2-pos_0)))
5321                 (if or-part_0
5322                   or-part_0
5323                   (< (add1 colon2-pos_0) end-package-version-pos_0)))
5324               #f)
5325             #f)
5326         (if colon1-pos_0
5327           (let ((colon1-end_0
5328                  (if colon2-pos_0 colon2-pos_0 end-package-version-pos_0)))
5329             (if (if (integer-sequence? v_0 (add1 colon1-pos_0) colon1-end_0)
5330                   (let ((or-part_0 (not colon2-pos_0)))
5331                     (if or-part_0
5332                       or-part_0
5333                       (let ((tmp_0 (string-ref v_0 (add1 colon2-pos_0))))
5334                         (if (eqv? tmp_0 '#\x3d)
5335                           (integer-sequence?
5336                            v_0
5337                            (+ 2 colon2-pos_0)
5338                            end-package-version-pos_0)
5339                           (if (if (eqv? tmp_0 '#\x3e) #t (eqv? tmp_0 '#\x3c))
5340                             (if (if (<
5341                                      (+ 2 colon2-pos_0)
5342                                      end-package-version-pos_0)
5343                                   (char=?
5344                                    '#\x3d
5345                                    (string-ref v_0 (+ colon2-pos_0 2)))
5346                                   #f)
5347                               (integer-sequence?
5348                                v_0
5349                                (+ 3 colon2-pos_0)
5350                                end-package-version-pos_0)
5351                               (integer-sequence?
5352                                v_0
5353                                (+ 2 colon2-pos_0)
5354                                end-package-version-pos_0))
5355                             (integer-range-sequence?
5356                              v_0
5357                              (add1 colon2-pos_0)
5358                              end-package-version-pos_0))))))
5359                   #f)
5360               (values colon1-pos_0 end-package-version-pos_0)
5361               (values #f #f)))
5362           (values 0 0))
5363         (values #f #f)))
5364      (args (raise-binding-result-arity-error 4 args))))))
5365(define integer-sequence?
5366  (lambda (s_0 start_0 end_0)
5367    (if (< start_0 end_0)
5368      (begin
5369        (letrec*
5370         ((for-loop_0
5371           (|#%name|
5372            for-loop
5373            (lambda (result_0 pos_0)
5374              (begin
5375                (if (< pos_0 end_0)
5376                  (let ((result_1
5377                         (let ((result_1
5378                                (char<=?
5379                                 '#\x30
5380                                 (string-ref s_0 pos_0)
5381                                 '#\x39)))
5382                           (values result_1))))
5383                    (if (if (not (let ((x_0 (list pos_0))) (not result_1)))
5384                          #t
5385                          #f)
5386                      (for-loop_0 result_1 (+ pos_0 1))
5387                      result_1))
5388                  result_0))))))
5389         (for-loop_0 #t start_0)))
5390      #f)))
5391(define integer-range-sequence?
5392  (lambda (s_0 start_0 end_0)
5393    (if (< start_0 end_0)
5394      (if (begin
5395            (letrec*
5396             ((for-loop_0
5397               (|#%name|
5398                for-loop
5399                (lambda (result_0 pos_0)
5400                  (begin
5401                    (if (< pos_0 end_0)
5402                      (let ((result_1
5403                             (let ((result_1
5404                                    (let ((c_0 (string-ref s_0 pos_0)))
5405                                      (let ((or-part_0 (char=? c_0 '#\x2d)))
5406                                        (if or-part_0
5407                                          or-part_0
5408                                          (char<=? '#\x30 c_0 '#\x39))))))
5409                               (values result_1))))
5410                        (if (if (not (let ((x_0 (list pos_0))) (not result_1)))
5411                              #t
5412                              #f)
5413                          (for-loop_0 result_1 (+ pos_0 1))
5414                          result_1))
5415                      result_0))))))
5416             (for-loop_0 #t start_0)))
5417        (>=
5418         1
5419         (begin
5420           (letrec*
5421            ((for-loop_0
5422              (|#%name|
5423               for-loop
5424               (lambda (result_0 pos_0)
5425                 (begin
5426                   (if (< pos_0 end_0)
5427                     (let ((result_1
5428                            (let ((result_1
5429                                   (+
5430                                    result_0
5431                                    (if (char=? (string-ref s_0 pos_0) '#\x2d)
5432                                      1
5433                                      0))))
5434                              (values result_1))))
5435                       (for-loop_0 result_1 (+ pos_0 1)))
5436                     result_0))))))
5437            (for-loop_0 0 start_0))))
5438        #f)
5439      #f)))
5440(define finish_2792
5441  (make-struct-type-install-properties
5442   '(weak-intern-table)
5443   1
5444   0
5445   #f
5446   (list (cons prop:authentic #t))
5447   (current-inspector)
5448   #f
5449   '(0)
5450   #f
5451   'weak-intern-table))
5452(define struct:weak-intern-table
5453  (make-record-type-descriptor*
5454   'weak-intern-table
5455   #f
5456   (|#%nongenerative-uid| weak-intern-table)
5457   #f
5458   #f
5459   1
5460   0))
5461(define effect_2507 (finish_2792 struct:weak-intern-table))
5462(define weak-intern-table1.1
5463  (|#%name|
5464   weak-intern-table
5465   (record-constructor
5466    (make-record-constructor-descriptor struct:weak-intern-table #f #f))))
5467(define weak-intern-table?
5468  (|#%name| weak-intern-table? (record-predicate struct:weak-intern-table)))
5469(define weak-intern-table-box
5470  (|#%name|
5471   weak-intern-table-box
5472   (record-accessor struct:weak-intern-table 0)))
5473(define finish_2969
5474  (make-struct-type-install-properties
5475   '(table)
5476   3
5477   0
5478   #f
5479   (list (cons prop:authentic #t))
5480   (current-inspector)
5481   #f
5482   '(0 1 2)
5483   #f
5484   'table))
5485(define struct:table
5486  (make-record-type-descriptor*
5487   'table
5488   #f
5489   (|#%nongenerative-uid| table)
5490   #f
5491   #f
5492   3
5493   0))
5494(define effect_2522 (finish_2969 struct:table))
5495(define table2.1
5496  (|#%name|
5497   table
5498   (record-constructor
5499    (make-record-constructor-descriptor struct:table #f #f))))
5500(define table? (|#%name| table? (record-predicate struct:table)))
5501(define table-ht (|#%name| table-ht (record-accessor struct:table 0)))
5502(define table-count (|#%name| table-count (record-accessor struct:table 1)))
5503(define table-prune-at
5504  (|#%name| table-prune-at (record-accessor struct:table 2)))
5505(define make-weak-intern-table
5506  (lambda () (weak-intern-table1.1 (box (table2.1 (hasheqv) 0 128)))))
5507(define weak-intern!
5508  (lambda (tt_0 v_0)
5509    (let ((b_0 (weak-intern-table-box tt_0)))
5510      (let ((t_0 (unbox b_0)))
5511        (let ((code_0 (equal-hash-code v_0)))
5512          (let ((vals_0 (hash-ref (table-ht t_0) code_0 null)))
5513            (let ((or-part_0
5514                   (begin
5515                     (letrec*
5516                      ((for-loop_0
5517                        (|#%name|
5518                         for-loop
5519                         (lambda (result_0 lst_0)
5520                           (begin
5521                             (if (pair? lst_0)
5522                               (let ((b_1 (unsafe-car lst_0)))
5523                                 (let ((rest_0 (unsafe-cdr lst_0)))
5524                                   (let ((result_1
5525                                          (let ((result_1
5526                                                 (let ((bv_0
5527                                                        (weak-box-value b_1)))
5528                                                   (if (equal? bv_0 v_0)
5529                                                     bv_0
5530                                                     #f))))
5531                                            (values result_1))))
5532                                     (if (if (not
5533                                              (let ((x_0 (list b_1)))
5534                                                result_1))
5535                                           #t
5536                                           #f)
5537                                       (for-loop_0 result_1 rest_0)
5538                                       result_1))))
5539                               result_0))))))
5540                      (for-loop_0 #f vals_0)))))
5541              (if or-part_0
5542                or-part_0
5543                (let ((pruned-t_0
5544                       (if (= (table-count t_0) (table-prune-at t_0))
5545                         (prune-table t_0)
5546                         t_0)))
5547                  (let ((ht_0 (table-ht pruned-t_0)))
5548                    (let ((new-t_0
5549                           (let ((app_0
5550                                  (hash-set
5551                                   ht_0
5552                                   code_0
5553                                   (let ((app_0 (make-weak-box v_0)))
5554                                     (cons
5555                                      app_0
5556                                      (hash-ref ht_0 code_0 null))))))
5557                             (table2.1
5558                              app_0
5559                              (add1 (table-count pruned-t_0))
5560                              (table-prune-at pruned-t_0)))))
5561                      (let ((or-part_1
5562                             (if (unsafe-box*-cas! b_0 t_0 new-t_0) v_0 #f)))
5563                        (if or-part_1
5564                          or-part_1
5565                          (weak-intern! tt_0 v_0))))))))))))))
5566(define prune-table
5567  (lambda (t_0)
5568    (let ((ht_0 (table-ht t_0)))
5569      (let ((new-ht_0
5570             (begin
5571               (letrec*
5572                ((for-loop_0
5573                  (|#%name|
5574                   for-loop
5575                   (lambda (table_0 i_0)
5576                     (begin
5577                       (if i_0
5578                         (call-with-values
5579                          (lambda () (hash-iterate-key+value ht_0 i_0))
5580                          (case-lambda
5581                           ((k_0 vals_0)
5582                            (let ((table_1
5583                                   (let ((id*_0
5584                                          (reverse$1
5585                                           (begin
5586                                             (letrec*
5587                                              ((for-loop_1
5588                                                (|#%name|
5589                                                 for-loop
5590                                                 (lambda (fold-var_0 lst_0)
5591                                                   (begin
5592                                                     (if (pair? lst_0)
5593                                                       (let ((b_0
5594                                                              (unsafe-car
5595                                                               lst_0)))
5596                                                         (let ((rest_0
5597                                                                (unsafe-cdr
5598                                                                 lst_0)))
5599                                                           (let ((fold-var_1
5600                                                                  (if (weak-box-value
5601                                                                       b_0)
5602                                                                    (let ((fold-var_1
5603                                                                           (cons
5604                                                                            b_0
5605                                                                            fold-var_0)))
5606                                                                      (values
5607                                                                       fold-var_1))
5608                                                                    fold-var_0)))
5609                                                             (for-loop_1
5610                                                              fold-var_1
5611                                                              rest_0))))
5612                                                       fold-var_0))))))
5613                                              (for-loop_1 null vals_0))))))
5614                                     (begin
5615                                       #t
5616                                       (letrec*
5617                                        ((for-loop_1
5618                                          (|#%name|
5619                                           for-loop
5620                                           (lambda (table_1)
5621                                             (begin
5622                                               (let ((table_2
5623                                                      (if (pair? id*_0)
5624                                                        (let ((table_2
5625                                                               (call-with-values
5626                                                                (lambda ()
5627                                                                  (values
5628                                                                   k_0
5629                                                                   id*_0))
5630                                                                (case-lambda
5631                                                                 ((key_0 val_0)
5632                                                                  (hash-set
5633                                                                   table_1
5634                                                                   key_0
5635                                                                   val_0))
5636                                                                 (args
5637                                                                  (raise-binding-result-arity-error
5638                                                                   2
5639                                                                   args))))))
5640                                                          (values table_2))
5641                                                        table_1)))
5642                                                 table_2))))))
5643                                        (for-loop_1 table_0))))))
5644                              (for-loop_0
5645                               table_1
5646                               (hash-iterate-next ht_0 i_0))))
5647                           (args (raise-binding-result-arity-error 2 args))))
5648                         table_0))))))
5649                (for-loop_0 hash2725 (hash-iterate-first ht_0))))))
5650        (let ((count_0
5651               (begin
5652                 (letrec*
5653                  ((for-loop_0
5654                    (|#%name|
5655                     for-loop
5656                     (lambda (result_0 i_0)
5657                       (begin
5658                         (if i_0
5659                           (call-with-values
5660                            (lambda () (hash-iterate-key+value new-ht_0 i_0))
5661                            (case-lambda
5662                             ((k_0 vals_0)
5663                              (let ((result_1
5664                                     (let ((result_1
5665                                            (+ result_0 (length vals_0))))
5666                                       (values result_1))))
5667                                (for-loop_0
5668                                 result_1
5669                                 (hash-iterate-next new-ht_0 i_0))))
5670                             (args (raise-binding-result-arity-error 2 args))))
5671                           result_0))))))
5672                  (for-loop_0 0 (hash-iterate-first new-ht_0))))))
5673          (table2.1 new-ht_0 count_0 (max 128 (* 2 count_0))))))))
5674(define finish_2266
5675  (make-struct-type-install-properties
5676   '(resolved-module-path)
5677   1
5678   0
5679   #f
5680   (list
5681    (cons prop:authentic #t)
5682    (cons
5683     prop:serialize
5684     (lambda (r_0 ser-push!_0 state_0)
5685       (begin
5686         (|#%app| ser-push!_0 'tag kw2299)
5687         (|#%app| ser-push!_0 (1/resolved-module-path-name r_0)))))
5688    (cons
5689     prop:custom-write
5690     (lambda (r_0 port_0 mode_0)
5691       (begin
5692         (if mode_0 (write-string "#<resolved-module-path:" port_0) (void))
5693         (fprintf
5694          port_0
5695          "~a"
5696          (format-resolved-module-path-name (1/resolved-module-path-name r_0)))
5697         (if mode_0 (write-string ">" port_0) (void)))))
5698    (cons
5699     prop:equal+hash
5700     (list
5701      (lambda (a_0 b_0 eql?_0)
5702        (|#%app|
5703         eql?_0
5704         (1/resolved-module-path-name a_0)
5705         (1/resolved-module-path-name b_0)))
5706      (lambda (a_0 hash-code_0)
5707        (|#%app| hash-code_0 (1/resolved-module-path-name a_0)))
5708      (lambda (a_0 hash-code_0)
5709        (|#%app| hash-code_0 (1/resolved-module-path-name a_0))))))
5710   (current-inspector)
5711   #f
5712   '(0)
5713   #f
5714   'resolved-module-path))
5715(define struct:resolved-module-path
5716  (make-record-type-descriptor*
5717   'resolved-module-path
5718   #f
5719   (|#%nongenerative-uid| resolved-module-path)
5720   #f
5721   #f
5722   1
5723   0))
5724(define effect_2442 (finish_2266 struct:resolved-module-path))
5725(define resolved-module-path1.1
5726  (|#%name|
5727   resolved-module-path
5728   (record-constructor
5729    (make-record-constructor-descriptor struct:resolved-module-path #f #f))))
5730(define 1/resolved-module-path?
5731  (|#%name|
5732   resolved-module-path?
5733   (record-predicate struct:resolved-module-path)))
5734(define 1/resolved-module-path-name
5735  (|#%name|
5736   resolved-module-path-name
5737   (record-accessor struct:resolved-module-path 0)))
5738(define format-resolved-module-path-name
5739  (lambda (p_0)
5740    (if (path? p_0)
5741      (string-append "\"" (path->string p_0) "\"")
5742      (if (symbol? p_0)
5743        (format-symbol p_0)
5744        (let ((app_0 (format-resolved-module-path-name (car p_0))))
5745          (format-submod app_0 (cdr p_0)))))))
5746(define format-symbol
5747  (lambda (p_0)
5748    (format
5749     "'~s~a"
5750     p_0
5751     (if (symbol-interned? p_0) "" (format "[~a]" (eq-hash-code p_0))))))
5752(define format-submod
5753  (lambda (base_0 syms_0)
5754    (format
5755     "(submod ~a~a)"
5756     base_0
5757     (apply
5758      string-append
5759      (reverse$1
5760       (begin
5761         (letrec*
5762          ((for-loop_0
5763            (|#%name|
5764             for-loop
5765             (lambda (fold-var_0 lst_0)
5766               (begin
5767                 (if (pair? lst_0)
5768                   (let ((i_0 (unsafe-car lst_0)))
5769                     (let ((rest_0 (unsafe-cdr lst_0)))
5770                       (let ((fold-var_1
5771                              (let ((fold-var_1
5772                                     (cons (format " ~s" i_0) fold-var_0)))
5773                                (values fold-var_1))))
5774                         (for-loop_0 fold-var_1 rest_0))))
5775                   fold-var_0))))))
5776          (for-loop_0 null syms_0))))))))
5777(define resolved-module-path-root-name
5778  (lambda (r_0)
5779    (let ((name_0 (1/resolved-module-path-name r_0)))
5780      (if (pair? name_0) (car name_0) name_0))))
5781(define resolved-module-paths (make-weak-intern-table))
5782(define 1/make-resolved-module-path
5783  (|#%name|
5784   make-resolved-module-path
5785   (lambda (p_0)
5786     (begin
5787       (begin
5788         (if (let ((or-part_0 (symbol? p_0)))
5789               (if or-part_0
5790                 or-part_0
5791                 (let ((or-part_1 (if (path? p_0) (complete-path? p_0) #f)))
5792                   (if or-part_1
5793                     or-part_1
5794                     (if (pair? p_0)
5795                       (if (pair? (cdr p_0))
5796                         (if (list? p_0)
5797                           (if (let ((or-part_2 (symbol? (car p_0))))
5798                                 (if or-part_2
5799                                   or-part_2
5800                                   (if (path? (car p_0))
5801                                     (complete-path? (car p_0))
5802                                     #f)))
5803                             (let ((lst_0 (cdr p_0)))
5804                               (begin
5805                                 (letrec*
5806                                  ((for-loop_0
5807                                    (|#%name|
5808                                     for-loop
5809                                     (lambda (result_0 lst_1)
5810                                       (begin
5811                                         (if (pair? lst_1)
5812                                           (let ((s_0 (unsafe-car lst_1)))
5813                                             (let ((rest_0 (unsafe-cdr lst_1)))
5814                                               (let ((result_1 (symbol? s_0)))
5815                                                 (let ((result_2
5816                                                        (values result_1)))
5817                                                   (if (if (not
5818                                                            (let ((x_0
5819                                                                   (list s_0)))
5820                                                              (not result_2)))
5821                                                         #t
5822                                                         #f)
5823                                                     (for-loop_0
5824                                                      result_2
5825                                                      rest_0)
5826                                                     result_2)))))
5827                                           result_0))))))
5828                                  (for-loop_0 #t lst_0))))
5829                             #f)
5830                           #f)
5831                         #f)
5832                       #f)))))
5833           (void)
5834           (raise-argument-error
5835            'make-resolved-module-path
5836            (string-append
5837             "(or/c symbol?\n"
5838             "      (and/c path? complete-path?)\n"
5839             "      (cons/c (or/c symbol?\n"
5840             "                    (and/c path? complete-path?))\n"
5841             "              (non-empty-listof symbol?)))")
5842            p_0))
5843         (weak-intern!
5844          resolved-module-paths
5845          (resolved-module-path1.1 p_0)))))))
5846(define resolved-module-path->module-path
5847  (lambda (r_0)
5848    (let ((name_0 (1/resolved-module-path-name r_0)))
5849      (let ((root-name_0 (if (pair? name_0) (car name_0) name_0)))
5850        (let ((root-mod-path_0
5851               (if (path? root-name_0) root-name_0 (list 'quote root-name_0))))
5852          (if (pair? name_0)
5853            (list* 'submod root-mod-path_0 (cdr name_0))
5854            root-mod-path_0))))))
5855(define finish_2578
5856  (make-struct-type-install-properties
5857   '(module-path-index)
5858   4
5859   0
5860   #f
5861   (list
5862    (cons prop:authentic #t)
5863    (cons
5864     prop:custom-write
5865     (lambda (r_0 port_0 mode_0)
5866       (begin
5867         (write-string "#<module-path-index" port_0)
5868         (if (|#%app| top-level-module-path-index? r_0)
5869           (fprintf port_0 ":top-level")
5870           (if (module-path-index-path r_0)
5871             (let ((l_0
5872                    (letrec*
5873                     ((loop_0
5874                       (|#%name|
5875                        loop
5876                        (lambda (r_1)
5877                          (begin
5878                            (if (not r_1)
5879                              null
5880                              (if (1/resolved-module-path? r_1)
5881                                (list "+" (format "~a" r_1))
5882                                (if (module-path-index-path r_1)
5883                                  (let ((app_0
5884                                         (letrec*
5885                                          ((loop_1
5886                                            (|#%name|
5887                                             loop
5888                                             (lambda (v_0)
5889                                               (begin
5890                                                 (if (if (pair? v_0)
5891                                                       (if (eq?
5892                                                            'quote
5893                                                            (car v_0))
5894                                                         (null? (cddr v_0))
5895                                                         #f)
5896                                                       #f)
5897                                                   (format-symbol (cadr v_0))
5898                                                   (if (if (pair? v_0)
5899                                                         (eq?
5900                                                          'submod
5901                                                          (car v_0))
5902                                                         #f)
5903                                                     (let ((app_0
5904                                                            (loop_1
5905                                                             (cadr v_0))))
5906                                                       (format-submod
5907                                                        app_0
5908                                                        (cddr v_0)))
5909                                                     (format "~.s" v_0))))))))
5910                                          (loop_1
5911                                           (module-path-index-path r_1)))))
5912                                    (cons
5913                                     app_0
5914                                     (loop_0 (module-path-index-base r_1))))
5915                                  (if (module-path-index-resolved r_1)
5916                                    (list
5917                                     "+"
5918                                     (format
5919                                      "~a"
5920                                      (module-path-index-resolved r_1)))
5921                                    null)))))))))
5922                     (loop_0 r_0))))
5923               (fprintf
5924                port_0
5925                ":~.a"
5926                (let ((app_0 (car l_0)))
5927                  (apply
5928                   string-append
5929                   app_0
5930                   (reverse$1
5931                    (let ((lst_0 (cdr l_0)))
5932                      (begin
5933                        (letrec*
5934                         ((for-loop_0
5935                           (|#%name|
5936                            for-loop
5937                            (lambda (fold-var_0 lst_1)
5938                              (begin
5939                                (if (pair? lst_1)
5940                                  (let ((i_0 (unsafe-car lst_1)))
5941                                    (let ((rest_0 (unsafe-cdr lst_1)))
5942                                      (let ((fold-var_1
5943                                             (let ((fold-var_1
5944                                                    (cons
5945                                                     (format " ~a" i_0)
5946                                                     fold-var_0)))
5947                                               (values fold-var_1))))
5948                                        (for-loop_0 fold-var_1 rest_0))))
5949                                  fold-var_0))))))
5950                         (for-loop_0 null lst_0)))))))))
5951             (if (module-path-index-resolved r_0)
5952               (fprintf port_0 "=~a" (module-path-index-resolved r_0))
5953               (void))))
5954         (write-string ">" port_0))))
5955    (cons
5956     prop:equal+hash
5957     (list
5958      (lambda (a_0 b_0 eql?_0)
5959        (if (|#%app|
5960             eql?_0
5961             (module-path-index-path a_0)
5962             (module-path-index-path b_0))
5963          (|#%app|
5964           eql?_0
5965           (module-path-index-base a_0)
5966           (module-path-index-base b_0))
5967          #f))
5968      (lambda (a_0 hash-code_0)
5969        (let ((app_0 (|#%app| hash-code_0 (module-path-index-path a_0))))
5970          (+ app_0 (|#%app| hash-code_0 (module-path-index-base a_0)))))
5971      (lambda (a_0 hash-code_0)
5972        (let ((app_0 (|#%app| hash-code_0 (module-path-index-path a_0))))
5973          (+ app_0 (|#%app| hash-code_0 (module-path-index-base a_0))))))))
5974   (current-inspector)
5975   #f
5976   '(0 1)
5977   #f
5978   'module-path-index))
5979(define struct:module-path-index
5980  (make-record-type-descriptor*
5981   'module-path-index
5982   #f
5983   (|#%nongenerative-uid| module-path-index)
5984   #f
5985   #f
5986   4
5987   12))
5988(define effect_2892 (finish_2578 struct:module-path-index))
5989(define module-path-index2.1
5990  (|#%name|
5991   module-path-index
5992   (record-constructor
5993    (make-record-constructor-descriptor struct:module-path-index #f #f))))
5994(define 1/module-path-index?
5995  (|#%name| module-path-index? (record-predicate struct:module-path-index)))
5996(define module-path-index-path
5997  (|#%name|
5998   module-path-index-path
5999   (record-accessor struct:module-path-index 0)))
6000(define module-path-index-base
6001  (|#%name|
6002   module-path-index-base
6003   (record-accessor struct:module-path-index 1)))
6004(define module-path-index-resolved
6005  (|#%name|
6006   module-path-index-resolved
6007   (record-accessor struct:module-path-index 2)))
6008(define module-path-index-shift-cache
6009  (|#%name|
6010   module-path-index-shift-cache
6011   (record-accessor struct:module-path-index 3)))
6012(define set-module-path-index-resolved!
6013  (|#%name|
6014   set-module-path-index-resolved!
6015   (record-mutator struct:module-path-index 2)))
6016(define set-module-path-index-shift-cache!
6017  (|#%name|
6018   set-module-path-index-shift-cache!
6019   (record-mutator struct:module-path-index 3)))
6020(define empty-shift-cache '())
6021(define deserialize-module-path-index
6022  (case-lambda
6023   ((path_0 base_0) (1/module-path-index-join path_0 base_0))
6024   ((name_0)
6025    (make-self-module-path-index (1/make-resolved-module-path name_0)))
6026   (() top-level-module-path-index)))
6027(define 1/module-path-index-resolve
6028  (let ((module-path-index-resolve_0
6029         (|#%name|
6030          module-path-index-resolve
6031          (lambda (mpi5_0 load?3_0 stx4_0)
6032            (begin
6033              (begin
6034                (if (1/module-path-index? mpi5_0)
6035                  (void)
6036                  (raise-argument-error
6037                   'module-path-index-resolve
6038                   "module-path-index?"
6039                   mpi5_0))
6040                (let ((or-part_0 (module-path-index-resolved mpi5_0)))
6041                  (if or-part_0
6042                    or-part_0
6043                    (let ((mod-name_0
6044                           (begin
6045                             (if log-performance?
6046                               (start-performance-region 'eval 'resolver)
6047                               (void))
6048                             (begin0
6049                               (let ((app_0
6050                                      (|#%app|
6051                                       1/current-module-name-resolver)))
6052                                 (|#%app|
6053                                  app_0
6054                                  (module-path-index-path mpi5_0)
6055                                  (module-path-index-resolve/maybe
6056                                   (module-path-index-base mpi5_0)
6057                                   load?3_0)
6058                                  stx4_0
6059                                  load?3_0))
6060                               (if log-performance?
6061                                 (end-performance-region)
6062                                 (void))))))
6063                      (begin
6064                        (if (1/resolved-module-path? mod-name_0)
6065                          (void)
6066                          (raise-arguments-error
6067                           'module-path-index-resolve
6068                           "current module name resolver's result is not a resolved module path"
6069                           "result"
6070                           mod-name_0))
6071                        (set-module-path-index-resolved! mpi5_0 mod-name_0)
6072                        mod-name_0))))))))))
6073    (|#%name|
6074     module-path-index-resolve
6075     (case-lambda
6076      ((mpi_0) (begin (module-path-index-resolve_0 mpi_0 #f #f)))
6077      ((mpi_0 load?_0 stx4_0)
6078       (module-path-index-resolve_0 mpi_0 load?_0 stx4_0))
6079      ((mpi_0 load?3_0) (module-path-index-resolve_0 mpi_0 load?3_0 #f))))))
6080(define module-path-index-fresh
6081  (lambda (mpi_0)
6082    (call-with-values
6083     (lambda () (1/module-path-index-split mpi_0))
6084     (case-lambda
6085      ((path_0 base_0) (1/module-path-index-join path_0 base_0))
6086      (args (raise-binding-result-arity-error 2 args))))))
6087(define 1/module-path-index-join
6088  (let ((module-path-index-join_0
6089         (|#%name|
6090          module-path-index-join
6091          (lambda (mod-path7_0 base8_0 submod6_0)
6092            (begin
6093              (begin
6094                (if (let ((or-part_0 (not mod-path7_0)))
6095                      (if or-part_0 or-part_0 (1/module-path? mod-path7_0)))
6096                  (void)
6097                  (raise-argument-error
6098                   'module-path-index-join
6099                   "(or/c #f module-path?)"
6100                   mod-path7_0))
6101                (if (let ((or-part_0 (not base8_0)))
6102                      (if or-part_0
6103                        or-part_0
6104                        (let ((or-part_1 (1/resolved-module-path? base8_0)))
6105                          (if or-part_1
6106                            or-part_1
6107                            (1/module-path-index? base8_0)))))
6108                  (void)
6109                  (raise-argument-error
6110                   'module-path-index-join
6111                   "(or/c #f resolved-module-path? module-path-index?)"
6112                   base8_0))
6113                (if (let ((or-part_0 (not submod6_0)))
6114                      (if or-part_0
6115                        or-part_0
6116                        (if (pair? submod6_0)
6117                          (if (list? submod6_0)
6118                            (andmap_2344 symbol? submod6_0)
6119                            #f)
6120                          #f)))
6121                  (void)
6122                  (raise-argument-error
6123                   'module-path-index-join
6124                   "(or/c #f (non-empty-listof symbol?))"
6125                   submod6_0))
6126                (if (if (not mod-path7_0) base8_0 #f)
6127                  (raise-arguments-error
6128                   'module-path-index-join
6129                   "cannot combine #f path with non-#f base"
6130                   "given base"
6131                   base8_0)
6132                  (void))
6133                (if (if submod6_0 mod-path7_0 #f)
6134                  (raise-arguments-error
6135                   'module-path-index-join
6136                   "cannot combine #f submodule list with non-#f module path"
6137                   "given module path"
6138                   mod-path7_0
6139                   "given submodule list"
6140                   submod6_0)
6141                  (void))
6142                (if submod6_0
6143                  (make-self-module-path-index
6144                   (1/make-resolved-module-path
6145                    (cons '|expanded module| submod6_0)))
6146                  (let ((keep-base_0
6147                         (letrec*
6148                          ((loop_0
6149                            (|#%name|
6150                             loop
6151                             (lambda (mod-path_0)
6152                               (begin
6153                                 (if (path? mod-path_0)
6154                                   #f
6155                                   (if (if (pair? mod-path_0)
6156                                         (eq? 'quote (car mod-path_0))
6157                                         #f)
6158                                     #f
6159                                     (if (symbol? mod-path_0)
6160                                       #f
6161                                       (if (if (pair? mod-path_0)
6162                                             (eq? 'submod (car mod-path_0))
6163                                             #f)
6164                                         (loop_0 (cadr mod-path_0))
6165                                         base8_0)))))))))
6166                          (loop_0 mod-path7_0))))
6167                    (module-path-index2.1
6168                     mod-path7_0
6169                     keep-base_0
6170                     #f
6171                     '())))))))))
6172    (|#%name|
6173     module-path-index-join
6174     (case-lambda
6175      ((mod-path_0 base_0)
6176       (begin (module-path-index-join_0 mod-path_0 base_0 #f)))
6177      ((mod-path_0 base_0 submod6_0)
6178       (module-path-index-join_0 mod-path_0 base_0 submod6_0))))))
6179(define module-path-index-resolve/maybe
6180  (lambda (base_0 load?_0)
6181    (if (1/module-path-index? base_0)
6182      (1/module-path-index-resolve base_0 load?_0)
6183      base_0)))
6184(define 1/module-path-index-split
6185  (|#%name|
6186   module-path-index-split
6187   (lambda (mpi_0)
6188     (begin
6189       (begin
6190         (if (1/module-path-index? mpi_0)
6191           (void)
6192           (raise-argument-error
6193            'module-path-index-split
6194            "module-path-index?"
6195            mpi_0))
6196         (values
6197          (module-path-index-path mpi_0)
6198          (module-path-index-base mpi_0)))))))
6199(define 1/module-path-index-submodule
6200  (|#%name|
6201   module-path-index-submodule
6202   (lambda (mpi_0)
6203     (begin
6204       (begin
6205         (if (1/module-path-index? mpi_0)
6206           (void)
6207           (raise-argument-error
6208            'module-path-index-submodule
6209            "module-path-index?"
6210            mpi_0))
6211         (if (not (module-path-index-path mpi_0))
6212           (let ((r_0 (module-path-index-resolved mpi_0)))
6213             (if r_0
6214               (let ((p_0 (1/resolved-module-path-name r_0)))
6215                 (if (pair? p_0) (cdr p_0) #f))
6216               #f))
6217           #f))))))
6218(define make-self-module-path-index
6219  (case-lambda
6220   ((name_0) (module-path-index2.1 #f #f name_0 '()))
6221   ((name_0 enclosing_0)
6222    (make-self-module-path-index
6223     (let ((temp21_0
6224            (if enclosing_0 (1/module-path-index-resolve enclosing_0) #f)))
6225       (|#%app| build-module-name.1 unsafe-undefined name_0 temp21_0))))))
6226(define cell.1$9 (unsafe-make-place-local (make-weak-hash)))
6227(define generic-module-name '|expanded module|)
6228(define module-path-place-init!
6229  (lambda () (unsafe-place-local-set! cell.1$9 (make-weak-hash))))
6230(define make-generic-self-module-path-index
6231  (lambda (self_0)
6232    (let ((r_0
6233           (resolved-module-path-to-generic-resolved-module-path
6234            (module-path-index-resolved self_0))))
6235      (begin
6236        (begin-unsafe (unsafe-start-atomic))
6237        (begin0
6238          (let ((or-part_0
6239                 (let ((e_0
6240                        (hash-ref (unsafe-place-local-ref cell.1$9) r_0 #f)))
6241                   (if e_0 (ephemeron-value e_0) #f))))
6242            (if or-part_0
6243              or-part_0
6244              (let ((mpi_0 (module-path-index2.1 #f #f r_0 '())))
6245                (begin
6246                  (hash-set!
6247                   (unsafe-place-local-ref cell.1$9)
6248                   r_0
6249                   (make-ephemeron r_0 mpi_0))
6250                  mpi_0))))
6251          (begin-unsafe (unsafe-end-atomic)))))))
6252(define resolved-module-path-to-generic-resolved-module-path
6253  (lambda (r_0)
6254    (let ((name_0 (1/resolved-module-path-name r_0)))
6255      (1/make-resolved-module-path
6256       (if (symbol? name_0)
6257         '|expanded module|
6258         (cons '|expanded module| (cdr name_0)))))))
6259(define imitate-generic-module-path-index!
6260  (lambda (mpi_0)
6261    (let ((r_0 (module-path-index-resolved mpi_0)))
6262      (if r_0
6263        (set-module-path-index-resolved!
6264         mpi_0
6265         (resolved-module-path-to-generic-resolved-module-path r_0))
6266        (void)))))
6267(define module-path-index-shift
6268  (lambda (mpi_0 from-mpi_0 to-mpi_0)
6269    (if (eq? mpi_0 from-mpi_0)
6270      to-mpi_0
6271      (let ((base_0 (module-path-index-base mpi_0)))
6272        (if (not base_0)
6273          mpi_0
6274          (let ((shifted-base_0
6275                 (module-path-index-shift base_0 from-mpi_0 to-mpi_0)))
6276            (if (eq? shifted-base_0 base_0)
6277              mpi_0
6278              (let ((c1_0
6279                     (shift-cache-ref
6280                      (module-path-index-shift-cache shifted-base_0)
6281                      mpi_0)))
6282                (if c1_0
6283                  c1_0
6284                  (let ((shifted-mpi_0
6285                         (module-path-index2.1
6286                          (module-path-index-path mpi_0)
6287                          shifted-base_0
6288                          #f
6289                          '())))
6290                    (begin
6291                      (shift-cache-set! shifted-base_0 shifted-mpi_0)
6292                      shifted-mpi_0)))))))))))
6293(define shift-cache-ref
6294  (lambda (cache_0 mpi_0)
6295    (begin
6296      (letrec*
6297       ((for-loop_0
6298         (|#%name|
6299          for-loop
6300          (lambda (result_0 lst_0)
6301            (begin
6302              (if (pair? lst_0)
6303                (let ((wb_0 (unsafe-car lst_0)))
6304                  (let ((rest_0 (unsafe-cdr lst_0)))
6305                    (let ((result_1
6306                           (let ((result_1
6307                                  (let ((v_0 (weak-box-value wb_0)))
6308                                    (if v_0
6309                                      (if (equal?
6310                                           (module-path-index-path v_0)
6311                                           (module-path-index-path mpi_0))
6312                                        v_0
6313                                        #f)
6314                                      #f))))
6315                             (values result_1))))
6316                      (if (if (not (let ((x_0 (list wb_0))) result_1)) #t #f)
6317                        (for-loop_0 result_1 rest_0)
6318                        result_1))))
6319                result_0))))))
6320       (for-loop_0 #f cache_0)))))
6321(define shift-cache-set!
6322  (lambda (base_0 v_0)
6323    (let ((app_0 (make-weak-box v_0)))
6324      (let ((new-cache_0
6325             (cons
6326              app_0
6327              (letrec*
6328               ((loop_0
6329                 (|#%name|
6330                  loop
6331                  (lambda (n_0 l_0)
6332                    (begin
6333                      (if (null? l_0)
6334                        null
6335                        (if (eqv? n_0 0)
6336                          null
6337                          (if (not (weak-box-value (car l_0)))
6338                            (loop_0 n_0 (cdr l_0))
6339                            (let ((r_0
6340                                   (let ((app_1 (fx- n_0 1)))
6341                                     (loop_0 app_1 (cdr l_0)))))
6342                              (if (eq? r_0 (cdr l_0))
6343                                l_0
6344                                (cons (car l_0) r_0)))))))))))
6345               (loop_0 32 (module-path-index-shift-cache base_0))))))
6346        (set-module-path-index-shift-cache! base_0 new-cache_0)))))
6347(define top-level-module-path-index
6348  (make-self-module-path-index (1/make-resolved-module-path 'top-level)))
6349(define top-level-module-path-index?
6350  (lambda (mpi_0) (eq? top-level-module-path-index mpi_0)))
6351(define non-self-module-path-index?
6352  (lambda (mpi_0) (if (module-path-index-path mpi_0) #t #f)))
6353(define inside-module-context?
6354  (lambda (mpi_0 inside-mpi_0)
6355    (let ((or-part_0 (eq? mpi_0 inside-mpi_0)))
6356      (if or-part_0
6357        or-part_0
6358        (if (1/module-path-index? mpi_0)
6359          (if (1/module-path-index? inside-mpi_0)
6360            (if (module-path-index-resolved mpi_0)
6361              (let ((app_0 (module-path-index-resolved mpi_0)))
6362                (eq? app_0 (module-path-index-resolved inside-mpi_0)))
6363              #f)
6364            #f)
6365          #f)))))
6366(define core-module-name-resolver
6367  (case-lambda
6368   ((name_0 from-namespace_0) (void))
6369   ((p_0 enclosing_0 source-stx-stx_0 load?_0)
6370    (begin
6371      (if (1/module-path? p_0)
6372        (void)
6373        (raise-argument-error 'core-module-name-resolver "module-path?" p_0))
6374      (if (let ((or-part_0 (not enclosing_0)))
6375            (if or-part_0 or-part_0 (1/resolved-module-path? enclosing_0)))
6376        (void)
6377        (raise-argument-error
6378         'core-module-name-resolver
6379         "resolved-module-path?"
6380         enclosing_0))
6381      (if (if (list? p_0)
6382            (if (= (length p_0) 2)
6383              (if (eq? 'quote (car p_0)) (symbol? (cadr p_0)) #f)
6384              #f)
6385            #f)
6386        (1/make-resolved-module-path (cadr p_0))
6387        (if (if (list? p_0)
6388              (if (eq? 'submod (car p_0)) (equal? ".." (cadr p_0)) #f)
6389              #f)
6390          (let ((lst_0 (cdr p_0)))
6391            (begin
6392              (letrec*
6393               ((for-loop_0
6394                 (|#%name|
6395                  for-loop
6396                  (lambda (enclosing_1 lst_1)
6397                    (begin
6398                      (if (pair? lst_1)
6399                        (let ((s_0 (unsafe-car lst_1)))
6400                          (let ((rest_0 (unsafe-cdr lst_1)))
6401                            (let ((enclosing_2
6402                                   (let ((enclosing_2
6403                                          (build-module-name.1
6404                                           p_0
6405                                           s_0
6406                                           enclosing_1)))
6407                                     (values enclosing_2))))
6408                              (for-loop_0 enclosing_2 rest_0))))
6409                        enclosing_1))))))
6410               (for-loop_0 enclosing_0 lst_0))))
6411          (if (if (list? p_0)
6412                (if (eq? 'submod (car p_0)) (equal? "." (cadr p_0)) #f)
6413                #f)
6414            (let ((lst_0 (cddr p_0)))
6415              (begin
6416                (letrec*
6417                 ((for-loop_0
6418                   (|#%name|
6419                    for-loop
6420                    (lambda (enclosing_1 lst_1)
6421                      (begin
6422                        (if (pair? lst_1)
6423                          (let ((s_0 (unsafe-car lst_1)))
6424                            (let ((rest_0 (unsafe-cdr lst_1)))
6425                              (let ((enclosing_2
6426                                     (let ((enclosing_2
6427                                            (build-module-name.1
6428                                             p_0
6429                                             s_0
6430                                             enclosing_1)))
6431                                       (values enclosing_2))))
6432                                (for-loop_0 enclosing_2 rest_0))))
6433                          enclosing_1))))))
6434                 (for-loop_0 enclosing_0 lst_0))))
6435            (if (if (list? p_0) (eq? 'submod (car p_0)) #f)
6436              (let ((base_0
6437                     (let ((app_0 (|#%app| 1/current-module-name-resolver)))
6438                       (|#%app| app_0 (cadr p_0) enclosing_0 #f #f))))
6439                (let ((lst_0 (cddr p_0)))
6440                  (begin
6441                    (letrec*
6442                     ((for-loop_0
6443                       (|#%name|
6444                        for-loop
6445                        (lambda (enclosing_1 lst_1)
6446                          (begin
6447                            (if (pair? lst_1)
6448                              (let ((s_0 (unsafe-car lst_1)))
6449                                (let ((rest_0 (unsafe-cdr lst_1)))
6450                                  (let ((enclosing_2
6451                                         (let ((enclosing_2
6452                                                (build-module-name.1
6453                                                 p_0
6454                                                 s_0
6455                                                 enclosing_1)))
6456                                           (values enclosing_2))))
6457                                    (for-loop_0 enclosing_2 rest_0))))
6458                              enclosing_1))))))
6459                     (for-loop_0 base_0 lst_0)))))
6460              (error
6461               'core-module-name-resolver
6462               "not a supported module path: ~v"
6463               p_0)))))))))
6464(define build-module-name.1
6465  (|#%name|
6466   build-module-name
6467   (lambda (original9_0 name11_0 enclosing12_0)
6468     (begin
6469       (let ((orig-name_0
6470              (if (eq? original9_0 unsafe-undefined) name11_0 original9_0)))
6471         (let ((enclosing-module-name_0
6472                (if enclosing12_0
6473                  (1/resolved-module-path-name enclosing12_0)
6474                  #f)))
6475           (1/make-resolved-module-path
6476            (if (not enclosing-module-name_0)
6477              name11_0
6478              (if (symbol? enclosing-module-name_0)
6479                (list enclosing-module-name_0 name11_0)
6480                (if (equal? name11_0 "..")
6481                  (if (symbol? enclosing-module-name_0)
6482                    (error "too many \"..\"s:" orig-name_0)
6483                    (if (= 2 (length enclosing-module-name_0))
6484                      (car enclosing-module-name_0)
6485                      (reverse$1 (cdr (reverse$1 enclosing-module-name_0)))))
6486                  (append enclosing-module-name_0 (list name11_0))))))))))))
6487(define 1/current-module-name-resolver
6488  (make-parameter
6489   core-module-name-resolver
6490   (lambda (v_0)
6491     (begin
6492       (if (if (procedure? v_0)
6493             (if (procedure-arity-includes? v_0 2)
6494               (procedure-arity-includes? v_0 4)
6495               #f)
6496             #f)
6497         (void)
6498         (raise-argument-error
6499          'current-module-name-resolver
6500          "(and/c (procedure-arity-includes/c 2) (procedure-arity-includes/c 4))"
6501          v_0))
6502       v_0))
6503   'current-module-name-resolver))
6504(define 1/current-module-declare-name
6505  (make-parameter
6506   #f
6507   (lambda (r_0)
6508     (begin
6509       (if (let ((or-part_0 (not r_0)))
6510             (if or-part_0 or-part_0 (1/resolved-module-path? r_0)))
6511         (void)
6512         (raise-argument-error
6513          'current-module-declare-name
6514          "(or/c #f resolved-module-path?)"
6515          r_0))
6516       r_0))
6517   'current-module-declare-name))
6518(define 1/current-module-declare-source
6519  (make-parameter
6520   #f
6521   (lambda (s_0)
6522     (begin
6523       (if (let ((or-part_0 (not s_0)))
6524             (if or-part_0
6525               or-part_0
6526               (let ((or-part_1 (symbol? s_0)))
6527                 (if or-part_1
6528                   or-part_1
6529                   (if (path? s_0) (complete-path? s_0) #f)))))
6530         (void)
6531         (raise-argument-error
6532          'current-module-declare-source
6533          "(or/c #f symbol? (and/c path? complete-path?))"
6534          s_0))
6535       s_0))
6536   'current-module-declare-source))
6537(define substitute-module-declare-name
6538  (lambda (default-name_0)
6539    (let ((current-name_0 (1/current-module-declare-name)))
6540      (let ((root-name_0
6541             (if current-name_0
6542               (resolved-module-path-root-name current-name_0)
6543               (if (pair? default-name_0)
6544                 (car default-name_0)
6545                 default-name_0))))
6546        (1/make-resolved-module-path
6547         (if (pair? default-name_0)
6548           (cons root-name_0 (cdr default-name_0))
6549           root-name_0))))))
6550(define finish_2890
6551  (make-struct-type-install-properties
6552   '(promise)
6553   2
6554   0
6555   #f
6556   (list (cons prop:authentic #t))
6557   (current-inspector)
6558   #f
6559   '()
6560   #f
6561   'promise))
6562(define struct:promise
6563  (make-record-type-descriptor*
6564   'promise
6565   #f
6566   (|#%nongenerative-uid| promise)
6567   #f
6568   #f
6569   2
6570   3))
6571(define effect_2268 (finish_2890 struct:promise))
6572(define promise1.1
6573  (|#%name|
6574   promise
6575   (record-constructor
6576    (make-record-constructor-descriptor struct:promise #f #f))))
6577(define promise? (|#%name| promise? (record-predicate struct:promise)))
6578(define promise-val (|#%name| promise-val (record-accessor struct:promise 0)))
6579(define promise-status
6580  (|#%name| promise-status (record-accessor struct:promise 1)))
6581(define set-promise-val!
6582  (|#%name| set-promise-val! (record-mutator struct:promise 0)))
6583(define set-promise-status!
6584  (|#%name| set-promise-status! (record-mutator struct:promise 1)))
6585(define force
6586  (lambda (v_0)
6587    (if (promise? v_0)
6588      (let ((s_0 (promise-status v_0)))
6589        (if (not s_0)
6590          (let ((result_0 (|#%app| (promise-val v_0))))
6591            (begin
6592              (set-promise-val! v_0 result_0)
6593              (set-promise-status! v_0 #t)
6594              result_0))
6595          (promise-val v_0)))
6596      v_0)))
6597(define phase?
6598  (lambda (v_0)
6599    (let ((or-part_0 (not v_0)))
6600      (if or-part_0 or-part_0 (exact-integer? v_0)))))
6601(define interned-symbol?
6602  (lambda (v_0) (if (symbol? v_0) (symbol-interned? v_0) #f)))
6603(define space?
6604  (lambda (v_0)
6605    (let ((or-part_0 (not v_0)))
6606      (if or-part_0 or-part_0 (interned-symbol? v_0)))))
6607(define phase+space?
6608  (lambda (v_0)
6609    (let ((or-part_0 (phase? v_0)))
6610      (if or-part_0
6611        or-part_0
6612        (if (pair? v_0)
6613          (if (interned-symbol? (cdr v_0)) (phase? (car v_0)) #f)
6614          #f)))))
6615(define phase+space-shift?
6616  (lambda (v_0)
6617    (let ((or-part_0 (phase? v_0)))
6618      (if or-part_0
6619        or-part_0
6620        (if (pair? v_0)
6621          (if (let ((or-part_1 (not (cdr v_0))))
6622                (if or-part_1 or-part_1 (interned-symbol? (cdr v_0))))
6623            (phase? (car v_0))
6624            #f)
6625          #f)))))
6626(define phase+space-phase
6627  (lambda (p+s_0) (begin (if (pair? p+s_0) (car p+s_0) p+s_0))))
6628(define phase+space-space
6629  (lambda (p+s_0) (begin (if (pair? p+s_0) (cdr p+s_0) #f))))
6630(define phase+space+$1
6631  (|#%name|
6632   phase+space+
6633   (lambda (p+s_0 s_0)
6634     (begin
6635       (begin
6636         (let ((p1_0 (if (pair? p+s_0) (car p+s_0) p+s_0)))
6637           (let ((p2_0 (if (pair? s_0) (car s_0) s_0)))
6638             (let ((sp1_0 (if (pair? p+s_0) (cdr p+s_0) #f)))
6639               (let ((p2_1 p2_0) (p1_1 p1_0))
6640                 (let ((p_0 (if p1_1 (if p2_1 (+ p1_1 p2_1) #f) #f)))
6641                   (let ((sp_0 (if (pair? s_0) (cdr s_0) sp1_0)))
6642                     (let ((p_1 p_0)) (if sp_0 (cons p_1 sp_0) p_1)))))))))))))
6643(define phase+ (lambda (a_0 b_0) (if a_0 (if b_0 (+ a_0 b_0) #f) #f)))
6644(define phase- (lambda (a_0 b_0) (if a_0 (if b_0 (- a_0 b_0) #f) #f)))
6645(define phase<?
6646  (lambda (a_0 b_0) (if (not b_0) #f (if (not a_0) #t (< a_0 b_0)))))
6647(define zero-phase? (lambda (a_0) (eq? a_0 0)))
6648(define label-phase? (lambda (a_0) (not a_0)))
6649(define phase?-string "phase?")
6650(define make-small-hasheq (lambda () (box hash2610)))
6651(define make-small-hasheqv (lambda () (box hash2589)))
6652(define small-hash-ref
6653  (lambda (small-ht_0 key_0 default_0)
6654    (hash-ref (unbox small-ht_0) key_0 default_0)))
6655(define small-hash-set!
6656  (lambda (small-ht_0 key_0 val_0)
6657    (set-box! small-ht_0 (hash-set (unbox small-ht_0) key_0 val_0))))
6658(define small-hash-keys (lambda (small-ht_0) (hash-keys (unbox small-ht_0))))
6659(define finish_3075
6660  (make-struct-type-install-properties
6661   '(serialize-state)
6662   14
6663   0
6664   #f
6665   (list (cons prop:authentic #t))
6666   (current-inspector)
6667   #f
6668   '(0 1 2 3 4 5 6 7 8 9 10 11 12 13)
6669   #f
6670   'serialize-state))
6671(define struct:serialize-state
6672  (make-record-type-descriptor*
6673   'serialize-state
6674   #f
6675   (|#%nongenerative-uid| serialize-state)
6676   #f
6677   #f
6678   14
6679   0))
6680(define effect_2707 (finish_3075 struct:serialize-state))
6681(define serialize-state1.1
6682  (|#%name|
6683   serialize-state
6684   (record-constructor
6685    (make-record-constructor-descriptor struct:serialize-state #f #f))))
6686(define serialize-state?
6687  (|#%name| serialize-state? (record-predicate struct:serialize-state)))
6688(define serialize-state-reachable-scopes
6689  (|#%name|
6690   serialize-state-reachable-scopes
6691   (record-accessor struct:serialize-state 0)))
6692(define serialize-state-bindings-intern
6693  (|#%name|
6694   serialize-state-bindings-intern
6695   (record-accessor struct:serialize-state 1)))
6696(define serialize-state-bulk-bindings-intern
6697  (|#%name|
6698   serialize-state-bulk-bindings-intern
6699   (record-accessor struct:serialize-state 2)))
6700(define serialize-state-scopes
6701  (|#%name| serialize-state-scopes (record-accessor struct:serialize-state 3)))
6702(define serialize-state-shifted-multi-scopes
6703  (|#%name|
6704   serialize-state-shifted-multi-scopes
6705   (record-accessor struct:serialize-state 4)))
6706(define serialize-state-multi-scope-tables
6707  (|#%name|
6708   serialize-state-multi-scope-tables
6709   (record-accessor struct:serialize-state 5)))
6710(define serialize-state-mpi-shifts
6711  (|#%name|
6712   serialize-state-mpi-shifts
6713   (record-accessor struct:serialize-state 6)))
6714(define serialize-state-context-triples
6715  (|#%name|
6716   serialize-state-context-triples
6717   (record-accessor struct:serialize-state 7)))
6718(define serialize-state-props
6719  (|#%name| serialize-state-props (record-accessor struct:serialize-state 8)))
6720(define serialize-state-interned-props
6721  (|#%name|
6722   serialize-state-interned-props
6723   (record-accessor struct:serialize-state 9)))
6724(define serialize-state-syntax-context
6725  (|#%name|
6726   serialize-state-syntax-context
6727   (record-accessor struct:serialize-state 10)))
6728(define serialize-state-sharing-syntaxes
6729  (|#%name|
6730   serialize-state-sharing-syntaxes
6731   (record-accessor struct:serialize-state 11)))
6732(define serialize-state-preserve-prop-keys
6733  (|#%name|
6734   serialize-state-preserve-prop-keys
6735   (record-accessor struct:serialize-state 12)))
6736(define serialize-state-keep-provides?
6737  (|#%name|
6738   serialize-state-keep-provides?
6739   (record-accessor struct:serialize-state 13)))
6740(define make-serialize-state
6741  (lambda (reachable-scopes_0 preserve-prop-keys_0 keep-provides?_0)
6742    (let ((state_0
6743           (let ((app_0 (make-hasheq)))
6744             (let ((app_1 (make-hasheq)))
6745               (let ((app_2 (make-hash)))
6746                 (let ((app_3 (make-hash)))
6747                   (let ((app_4 (make-hasheq)))
6748                     (let ((app_5 (make-hasheq)))
6749                       (let ((app_6 (make-hasheq)))
6750                         (let ((app_7 (make-hasheq)))
6751                           (let ((app_8 (make-hash)))
6752                             (let ((app_9 (box null)))
6753                               (serialize-state1.1
6754                                reachable-scopes_0
6755                                app_0
6756                                app_1
6757                                app_2
6758                                app_3
6759                                app_4
6760                                app_5
6761                                app_6
6762                                app_7
6763                                app_8
6764                                app_9
6765                                (make-hasheq)
6766                                preserve-prop-keys_0
6767                                keep-provides?_0)))))))))))))
6768      (let ((empty-seteq_0 (seteq)))
6769        (begin
6770          (hash-set!
6771           (serialize-state-scopes state_0)
6772           empty-seteq_0
6773           empty-seteq_0)
6774          (hash-set!
6775           (serialize-state-shifted-multi-scopes state_0)
6776           empty-seteq_0
6777           empty-seteq_0)
6778          (hash-set!
6779           (serialize-state-interned-props state_0)
6780           empty-seteq_0
6781           empty-seteq_0)
6782          state_0)))))
6783(define intern-scopes
6784  (lambda (scs_0 state_0)
6785    (let ((or-part_0 (hash-ref (serialize-state-scopes state_0) scs_0 #f)))
6786      (if or-part_0
6787        or-part_0
6788        (begin
6789          (hash-set! (serialize-state-scopes state_0) scs_0 scs_0)
6790          scs_0)))))
6791(define intern-shifted-multi-scopes
6792  (lambda (sms_0 state_0)
6793    (let ((or-part_0
6794           (hash-ref (serialize-state-shifted-multi-scopes state_0) sms_0 #f)))
6795      (if or-part_0
6796        or-part_0
6797        (begin
6798          (hash-set!
6799           (serialize-state-shifted-multi-scopes state_0)
6800           sms_0
6801           sms_0)
6802          sms_0)))))
6803(define intern-mpi-shifts
6804  (lambda (mpi-shifts_0 state_0)
6805    (if (null? mpi-shifts_0)
6806      null
6807      (let ((tail_0 (intern-mpi-shifts (cdr mpi-shifts_0) state_0)))
6808        (let ((tail-table_0
6809               (let ((or-part_0
6810                      (hash-ref
6811                       (serialize-state-mpi-shifts state_0)
6812                       tail_0
6813                       #f)))
6814                 (if or-part_0
6815                   or-part_0
6816                   (let ((ht_0 (make-hasheq)))
6817                     (begin
6818                       (hash-set!
6819                        (serialize-state-mpi-shifts state_0)
6820                        tail_0
6821                        ht_0)
6822                       ht_0))))))
6823          (let ((or-part_0 (hash-ref tail-table_0 (car mpi-shifts_0) #f)))
6824            (if or-part_0
6825              or-part_0
6826              (let ((v_0 (cons (car mpi-shifts_0) tail_0)))
6827                (begin
6828                  (hash-set! tail-table_0 (car mpi-shifts_0) v_0)
6829                  v_0)))))))))
6830(define intern-context-triple
6831  (lambda (scs_0 sms_0 mpi-shifts_0 state_0)
6832    (let ((scs-ht_0
6833           (let ((or-part_0
6834                  (hash-ref
6835                   (serialize-state-context-triples state_0)
6836                   scs_0
6837                   #f)))
6838             (if or-part_0
6839               or-part_0
6840               (let ((ht_0 (make-hasheq)))
6841                 (begin
6842                   (hash-set!
6843                    (serialize-state-context-triples state_0)
6844                    scs_0
6845                    ht_0)
6846                   ht_0))))))
6847      (let ((sms-ht_0
6848             (let ((or-part_0 (hash-ref scs-ht_0 sms_0 #f)))
6849               (if or-part_0
6850                 or-part_0
6851                 (let ((ht_0 (make-hasheq)))
6852                   (begin (hash-set! scs-ht_0 sms_0 ht_0) ht_0))))))
6853        (let ((or-part_0 (hash-ref sms-ht_0 mpi-shifts_0 #f)))
6854          (if or-part_0
6855            or-part_0
6856            (let ((vec_0 (vector-immutable scs_0 sms_0 mpi-shifts_0)))
6857              (begin (hash-set! sms-ht_0 mpi-shifts_0 vec_0) vec_0))))))))
6858(define intern-properties
6859  (lambda (all-props_0 get-preserved-props_0 state_0)
6860    (let ((v_0 (hash-ref (serialize-state-props state_0) all-props_0 'no)))
6861      (if (eq? v_0 'no)
6862        (let ((preserved-props_0 (|#%app| get-preserved-props_0)))
6863          (let ((p_0
6864                 (if (zero? (hash-count preserved-props_0))
6865                   #f
6866                   (let ((c1_0
6867                          (hash-ref
6868                           (serialize-state-interned-props state_0)
6869                           preserved-props_0
6870                           #f)))
6871                     (if c1_0
6872                       c1_0
6873                       (begin
6874                         (hash-set!
6875                          (serialize-state-interned-props state_0)
6876                          preserved-props_0
6877                          preserved-props_0)
6878                         preserved-props_0))))))
6879            (begin
6880              (hash-set! (serialize-state-props state_0) all-props_0 p_0)
6881              p_0)))
6882        v_0))))
6883(define push-syntax-context!
6884  (lambda (state_0 v_0)
6885    (let ((b_0 (serialize-state-syntax-context state_0)))
6886      (set-box! b_0 (cons v_0 (unbox b_0))))))
6887(define get-syntax-context
6888  (lambda (state_0)
6889    (let ((b_0 (serialize-state-syntax-context state_0)))
6890      (if (null? (unbox b_0)) #f (car (unbox b_0))))))
6891(define pop-syntax-context!
6892  (lambda (state_0)
6893    (let ((b_0 (serialize-state-syntax-context state_0)))
6894      (set-box! b_0 (cdr (unbox b_0))))))
6895(define root-tag (unsafe-root-continuation-prompt-tag))
6896(define default-val.1$2 #f)
6897(define current-module-code-inspector
6898  (lambda ()
6899    (continuation-mark-set-first
6900     #f
6901     current-module-code-inspector
6902     #f
6903     root-tag)))
6904(define immutable-prefab-struct-key
6905  (lambda (v_0)
6906    (let ((k_0 (prefab-struct-key v_0)))
6907      (if k_0 (if (all-fields-immutable?$1 k_0) k_0 #f) #f))))
6908(define prefab-key-all-fields-immutable?
6909  (lambda (k_0)
6910    (begin
6911      (if (prefab-key? k_0)
6912        (void)
6913        (raise-argument-error
6914         'prefab-key-all-fields-immutable?
6915         "prefab-key?"
6916         k_0))
6917      (all-fields-immutable?$1 k_0))))
6918(define all-fields-immutable?$1
6919  (|#%name|
6920   all-fields-immutable?
6921   (lambda (k_0)
6922     (begin
6923       (let ((or-part_0 (symbol? k_0)))
6924         (if or-part_0
6925           or-part_0
6926           (let ((or-part_1 (null? k_0)))
6927             (if or-part_1
6928               or-part_1
6929               (let ((rk_0 (cdr k_0)))
6930                 (let ((rk_1
6931                        (if (if (pair? rk_0) (exact-integer? (car rk_0)) #f)
6932                          (cdr rk_0)
6933                          rk_0)))
6934                   (let ((rk_2
6935                          (if (if (pair? rk_1) (pair? (car rk_1)) #f)
6936                            (if (zero? (caar rk_1))
6937                              (cdr rk_1)
6938                              (cons '#(1) (cdr rk_1)))
6939                            rk_1)))
6940                     (if (if (pair? rk_2) (vector? (car rk_2)) #f)
6941                       (if (zero? (vector-length (car rk_2)))
6942                         (all-fields-immutable?$1 (cdr rk_2))
6943                         #f)
6944                       (all-fields-immutable?$1 rk_2)))))))))))))
6945(define all-fields-immutable?
6946  (lambda (k_0) (prefab-key-all-fields-immutable? k_0)))
6947(define datum-map-slow
6948  (lambda (tail?_0 s_0 f_0 seen_0 known-pairs_0)
6949    (letrec*
6950     ((loop_0
6951       (|#%name|
6952        loop
6953        (lambda (tail?_1 s_1 prev-seen_0)
6954          (begin
6955            (let ((seen_1
6956                   (if (if prev-seen_0 (datum-has-elements? s_1) #f)
6957                     (if (hash-ref prev-seen_0 s_1 #f)
6958                       (|#%app| (hash-ref prev-seen_0 'cycle-fail) s_1)
6959                       (hash-set prev-seen_0 s_1 #t))
6960                     prev-seen_0)))
6961              (if (null? s_1)
6962                (|#%app| f_0 tail?_1 s_1)
6963                (if (pair? s_1)
6964                  (if (if known-pairs_0
6965                        (if tail?_1 (hash-ref known-pairs_0 s_1 #f) #f)
6966                        #f)
6967                    s_1
6968                    (|#%app|
6969                     f_0
6970                     tail?_1
6971                     (let ((app_0 (loop_0 #f (car s_1) seen_1)))
6972                       (cons
6973                        app_0
6974                        (let ((app_1 (if tail?_1 (fx+ 1 tail?_1) 1)))
6975                          (loop_0 app_1 (cdr s_1) seen_1))))))
6976                  (if (let ((or-part_0 (symbol? s_1)))
6977                        (if or-part_0
6978                          or-part_0
6979                          (let ((or-part_1 (boolean? s_1)))
6980                            (if or-part_1 or-part_1 (number? s_1)))))
6981                    (|#%app| f_0 #f s_1)
6982                    (if (vector? s_1)
6983                      (|#%app|
6984                       f_0
6985                       #f
6986                       (vector->immutable-vector
6987                        (let ((len_0 (vector-length s_1)))
6988                          (begin
6989                            (if (exact-nonnegative-integer? len_0)
6990                              (void)
6991                              (raise-argument-error
6992                               'for/vector
6993                               "exact-nonnegative-integer?"
6994                               len_0))
6995                            (let ((v_0 (make-vector len_0 0)))
6996                              (begin
6997                                (if (zero? len_0)
6998                                  (void)
6999                                  (call-with-values
7000                                   (lambda ()
7001                                     (begin
7002                                       (check-vector s_1)
7003                                       (values
7004                                        s_1
7005                                        (unsafe-vector-length s_1))))
7006                                   (case-lambda
7007                                    ((vec_0 len_1)
7008                                     (begin
7009                                       #f
7010                                       (letrec*
7011                                        ((for-loop_0
7012                                          (|#%name|
7013                                           for-loop
7014                                           (lambda (i_0 pos_0)
7015                                             (begin
7016                                               (if (unsafe-fx< pos_0 len_1)
7017                                                 (let ((e_0
7018                                                        (unsafe-vector-ref
7019                                                         vec_0
7020                                                         pos_0)))
7021                                                   (let ((i_1
7022                                                          (let ((i_1
7023                                                                 (begin
7024                                                                   (unsafe-vector*-set!
7025                                                                    v_0
7026                                                                    i_0
7027                                                                    (loop_0
7028                                                                     #f
7029                                                                     e_0
7030                                                                     seen_1))
7031                                                                   (unsafe-fx+
7032                                                                    1
7033                                                                    i_0))))
7034                                                            (values i_1))))
7035                                                     (if (if (not
7036                                                              (let ((x_0
7037                                                                     (list
7038                                                                      e_0)))
7039                                                                (unsafe-fx=
7040                                                                 i_1
7041                                                                 len_0)))
7042                                                           #t
7043                                                           #f)
7044                                                       (for-loop_0
7045                                                        i_1
7046                                                        (unsafe-fx+ 1 pos_0))
7047                                                       i_1)))
7048                                                 i_0))))))
7049                                        (for-loop_0 0 0))))
7050                                    (args
7051                                     (raise-binding-result-arity-error
7052                                      2
7053                                      args)))))
7054                                v_0))))))
7055                      (if (box? s_1)
7056                        (|#%app|
7057                         f_0
7058                         #f
7059                         (box-immutable (loop_0 #f (unbox s_1) seen_1)))
7060                        (let ((c1_0 (immutable-prefab-struct-key s_1)))
7061                          (if c1_0
7062                            (|#%app|
7063                             f_0
7064                             #f
7065                             (apply
7066                              make-prefab-struct
7067                              c1_0
7068                              (reverse$1
7069                               (call-with-values
7070                                (lambda ()
7071                                  (unsafe-normalise-inputs
7072                                   unsafe-vector-length
7073                                   (struct->vector s_1)
7074                                   1
7075                                   #f
7076                                   1))
7077                                (case-lambda
7078                                 ((v*_0 start*_0 stop*_0 step*_0)
7079                                  (begin
7080                                    #t
7081                                    (letrec*
7082                                     ((for-loop_0
7083                                       (|#%name|
7084                                        for-loop
7085                                        (lambda (fold-var_0 idx_0)
7086                                          (begin
7087                                            (if (unsafe-fx< idx_0 stop*_0)
7088                                              (let ((e_0
7089                                                     (unsafe-vector-ref
7090                                                      v*_0
7091                                                      idx_0)))
7092                                                (let ((fold-var_1
7093                                                       (let ((fold-var_1
7094                                                              (cons
7095                                                               (loop_0
7096                                                                #f
7097                                                                e_0
7098                                                                seen_1)
7099                                                               fold-var_0)))
7100                                                         (values fold-var_1))))
7101                                                  (for-loop_0
7102                                                   fold-var_1
7103                                                   (unsafe-fx+ idx_0 1))))
7104                                              fold-var_0))))))
7105                                     (for-loop_0 null start*_0))))
7106                                 (args
7107                                  (raise-binding-result-arity-error
7108                                   4
7109                                   args)))))))
7110                            (if (if (hash? s_1) (immutable? s_1) #f)
7111                              (if (hash-eq? s_1)
7112                                (|#%app|
7113                                 f_0
7114                                 #f
7115                                 (begin
7116                                   (letrec*
7117                                    ((for-loop_0
7118                                      (|#%name|
7119                                       for-loop
7120                                       (lambda (table_0 i_0)
7121                                         (begin
7122                                           (if i_0
7123                                             (call-with-values
7124                                              (lambda ()
7125                                                (hash-iterate-key+value
7126                                                 s_1
7127                                                 i_0))
7128                                              (case-lambda
7129                                               ((k_0 v_0)
7130                                                (let ((table_1
7131                                                       (let ((table_1
7132                                                              (call-with-values
7133                                                               (lambda ()
7134                                                                 (values
7135                                                                  k_0
7136                                                                  (loop_0
7137                                                                   #f
7138                                                                   v_0
7139                                                                   seen_1)))
7140                                                               (case-lambda
7141                                                                ((key_0 val_0)
7142                                                                 (hash-set
7143                                                                  table_0
7144                                                                  key_0
7145                                                                  val_0))
7146                                                                (args
7147                                                                 (raise-binding-result-arity-error
7148                                                                  2
7149                                                                  args))))))
7150                                                         (values table_1))))
7151                                                  (for-loop_0
7152                                                   table_1
7153                                                   (hash-iterate-next
7154                                                    s_1
7155                                                    i_0))))
7156                                               (args
7157                                                (raise-binding-result-arity-error
7158                                                 2
7159                                                 args))))
7160                                             table_0))))))
7161                                    (for-loop_0
7162                                     hash2610
7163                                     (hash-iterate-first s_1)))))
7164                                (if (hash-eqv? s_1)
7165                                  (|#%app|
7166                                   f_0
7167                                   #f
7168                                   (begin
7169                                     (letrec*
7170                                      ((for-loop_0
7171                                        (|#%name|
7172                                         for-loop
7173                                         (lambda (table_0 i_0)
7174                                           (begin
7175                                             (if i_0
7176                                               (call-with-values
7177                                                (lambda ()
7178                                                  (hash-iterate-key+value
7179                                                   s_1
7180                                                   i_0))
7181                                                (case-lambda
7182                                                 ((k_0 v_0)
7183                                                  (let ((table_1
7184                                                         (let ((table_1
7185                                                                (call-with-values
7186                                                                 (lambda ()
7187                                                                   (values
7188                                                                    k_0
7189                                                                    (loop_0
7190                                                                     #f
7191                                                                     v_0
7192                                                                     seen_1)))
7193                                                                 (case-lambda
7194                                                                  ((key_0
7195                                                                    val_0)
7196                                                                   (hash-set
7197                                                                    table_0
7198                                                                    key_0
7199                                                                    val_0))
7200                                                                  (args
7201                                                                   (raise-binding-result-arity-error
7202                                                                    2
7203                                                                    args))))))
7204                                                           (values table_1))))
7205                                                    (for-loop_0
7206                                                     table_1
7207                                                     (hash-iterate-next
7208                                                      s_1
7209                                                      i_0))))
7210                                                 (args
7211                                                  (raise-binding-result-arity-error
7212                                                   2
7213                                                   args))))
7214                                               table_0))))))
7215                                      (for-loop_0
7216                                       hash2589
7217                                       (hash-iterate-first s_1)))))
7218                                  (|#%app|
7219                                   f_0
7220                                   #f
7221                                   (begin
7222                                     (letrec*
7223                                      ((for-loop_0
7224                                        (|#%name|
7225                                         for-loop
7226                                         (lambda (table_0 i_0)
7227                                           (begin
7228                                             (if i_0
7229                                               (call-with-values
7230                                                (lambda ()
7231                                                  (hash-iterate-key+value
7232                                                   s_1
7233                                                   i_0))
7234                                                (case-lambda
7235                                                 ((k_0 v_0)
7236                                                  (let ((table_1
7237                                                         (let ((table_1
7238                                                                (call-with-values
7239                                                                 (lambda ()
7240                                                                   (values
7241                                                                    k_0
7242                                                                    (loop_0
7243                                                                     #f
7244                                                                     v_0
7245                                                                     seen_1)))
7246                                                                 (case-lambda
7247                                                                  ((key_0
7248                                                                    val_0)
7249                                                                   (hash-set
7250                                                                    table_0
7251                                                                    key_0
7252                                                                    val_0))
7253                                                                  (args
7254                                                                   (raise-binding-result-arity-error
7255                                                                    2
7256                                                                    args))))))
7257                                                           (values table_1))))
7258                                                    (for-loop_0
7259                                                     table_1
7260                                                     (hash-iterate-next
7261                                                      s_1
7262                                                      i_0))))
7263                                                 (args
7264                                                  (raise-binding-result-arity-error
7265                                                   2
7266                                                   args))))
7267                                               table_0))))))
7268                                      (for-loop_0
7269                                       hash2725
7270                                       (hash-iterate-first s_1)))))))
7271                              (|#%app| f_0 #f s_1)))))))))))))))
7272     (loop_0 tail?_0 s_0 seen_0))))
7273(define datum-has-elements?
7274  (lambda (d_0)
7275    (let ((or-part_0 (pair? d_0)))
7276      (if or-part_0
7277        or-part_0
7278        (let ((or-part_1 (vector? d_0)))
7279          (if or-part_1
7280            or-part_1
7281            (let ((or-part_2 (box? d_0)))
7282              (if or-part_2
7283                or-part_2
7284                (let ((or-part_3 (immutable-prefab-struct-key d_0)))
7285                  (if or-part_3
7286                    or-part_3
7287                    (if (hash? d_0)
7288                      (if (immutable? d_0) (positive? (hash-count d_0)) #f)
7289                      #f)))))))))))
7290(define finish_2102
7291  (make-struct-type-install-properties
7292   '(preserved-property-value)
7293   1
7294   0
7295   #f
7296   null
7297   (current-inspector)
7298   #f
7299   '(0)
7300   #f
7301   'preserved-property-value))
7302(define struct:preserved-property-value
7303  (make-record-type-descriptor*
7304   'preserved-property-value
7305   #f
7306   (|#%nongenerative-uid| preserved-property-value)
7307   #f
7308   #f
7309   1
7310   0))
7311(define effect_2588 (finish_2102 struct:preserved-property-value))
7312(define preserved-property-value1.1
7313  (|#%name|
7314   preserved-property-value
7315   (record-constructor
7316    (make-record-constructor-descriptor
7317     struct:preserved-property-value
7318     #f
7319     #f))))
7320(define preserved-property-value?_2252
7321  (|#%name|
7322   preserved-property-value?
7323   (record-predicate struct:preserved-property-value)))
7324(define preserved-property-value?
7325  (|#%name|
7326   preserved-property-value?
7327   (lambda (v)
7328     (if (preserved-property-value?_2252 v)
7329       #t
7330       ($value
7331        (if (impersonator? v)
7332          (preserved-property-value?_2252 (impersonator-val v))
7333          #f))))))
7334(define preserved-property-value-content_2497
7335  (|#%name|
7336   preserved-property-value-content
7337   (record-accessor struct:preserved-property-value 0)))
7338(define preserved-property-value-content
7339  (|#%name|
7340   preserved-property-value-content
7341   (lambda (s)
7342     (if (preserved-property-value?_2252 s)
7343       (preserved-property-value-content_2497 s)
7344       ($value
7345        (impersonate-ref
7346         preserved-property-value-content_2497
7347         struct:preserved-property-value
7348         0
7349         s
7350         'preserved-property-value
7351         'content))))))
7352(define plain-property-value
7353  (lambda (v_0)
7354    (if (preserved-property-value? v_0)
7355      (preserved-property-value-content v_0)
7356      v_0)))
7357(define check-value-to-preserve
7358  (lambda (v_0 syntax?_0)
7359    (let ((check-preserve_0
7360           (|#%name|
7361            check-preserve
7362            (lambda (tail?_0 v_1)
7363              (begin
7364                (begin
7365                  (if (let ((or-part_0 (null? v_1)))
7366                        (if or-part_0
7367                          or-part_0
7368                          (let ((or-part_1 (boolean? v_1)))
7369                            (if or-part_1
7370                              or-part_1
7371                              (let ((or-part_2 (symbol? v_1)))
7372                                (if or-part_2
7373                                  or-part_2
7374                                  (let ((or-part_3 (number? v_1)))
7375                                    (if or-part_3
7376                                      or-part_3
7377                                      (let ((or-part_4 (char? v_1)))
7378                                        (if or-part_4
7379                                          or-part_4
7380                                          (let ((or-part_5 (string? v_1)))
7381                                            (if or-part_5
7382                                              or-part_5
7383                                              (let ((or-part_6 (bytes? v_1)))
7384                                                (if or-part_6
7385                                                  or-part_6
7386                                                  (let ((or-part_7
7387                                                         (regexp? v_1)))
7388                                                    (if or-part_7
7389                                                      or-part_7
7390                                                      (let ((or-part_8
7391                                                             (|#%app|
7392                                                              syntax?_0
7393                                                              v_1)))
7394                                                        (if or-part_8
7395                                                          or-part_8
7396                                                          (let ((or-part_9
7397                                                                 (pair? v_1)))
7398                                                            (if or-part_9
7399                                                              or-part_9
7400                                                              (let ((or-part_10
7401                                                                     (vector?
7402                                                                      v_1)))
7403                                                                (if or-part_10
7404                                                                  or-part_10
7405                                                                  (let ((or-part_11
7406                                                                         (box?
7407                                                                          v_1)))
7408                                                                    (if or-part_11
7409                                                                      or-part_11
7410                                                                      (let ((or-part_12
7411                                                                             (hash?
7412                                                                              v_1)))
7413                                                                        (if or-part_12
7414                                                                          or-part_12
7415                                                                          (immutable-prefab-struct-key
7416                                                                           v_1)))))))))))))))))))))))))))
7417                    (void)
7418                    (raise-arguments-error
7419                     'write
7420                     "disallowed value in preserved syntax property"
7421                     "value"
7422                     v_1))
7423                  v_1))))))
7424      (letrec*
7425       ((loop_0
7426         (|#%name|
7427          loop
7428          (lambda (tail?_0 s_0 prev-depth_0)
7429            (begin
7430              (let ((depth_0 (fx+ 1 prev-depth_0)))
7431                (if (if disallow-cycles$1 (fx> depth_0 32) #f)
7432                  (datum-map-slow
7433                   tail?_0
7434                   s_0
7435                   (lambda (tail?_1 s_1) (check-preserve_0 tail?_1 s_1))
7436                   disallow-cycles$1
7437                   #f)
7438                  (if (null? s_0)
7439                    (check-preserve_0 tail?_0 s_0)
7440                    (if (pair? s_0)
7441                      (check-preserve_0
7442                       tail?_0
7443                       (let ((app_0 (loop_0 #f (car s_0) depth_0)))
7444                         (cons app_0 (loop_0 1 (cdr s_0) depth_0))))
7445                      (if (symbol? s_0)
7446                        (check-preserve_0 #f s_0)
7447                        (if (boolean? s_0)
7448                          (check-preserve_0 #f s_0)
7449                          (if (number? s_0)
7450                            (check-preserve_0 #f s_0)
7451                            (if (let ((or-part_0 (vector? s_0)))
7452                                  (if or-part_0
7453                                    or-part_0
7454                                    (let ((or-part_1 (box? s_0)))
7455                                      (if or-part_1
7456                                        or-part_1
7457                                        (let ((or-part_2
7458                                               (prefab-struct-key s_0)))
7459                                          (if or-part_2
7460                                            or-part_2
7461                                            (hash? s_0)))))))
7462                              (datum-map-slow
7463                               tail?_0
7464                               s_0
7465                               (lambda (tail?_1 s_1)
7466                                 (check-preserve_0 tail?_1 s_1))
7467                               disallow-cycles$1
7468                               #f)
7469                              (check-preserve_0 #f s_0))))))))))))))
7470       (loop_0 #f v_0 0)))))
7471(define disallow-cycles$1
7472  (hash
7473   'cycle-fail
7474   (lambda (v_0)
7475     (raise-arguments-error
7476      'write
7477      "disallowed cycle in preserved syntax property"
7478      "at"
7479      v_0))))
7480(define taint?
7481  (lambda (v_0)
7482    (let ((or-part_0 (not v_0))) (if or-part_0 or-part_0 (symbol? v_0)))))
7483(define tainted-for-content
7484  (lambda (v_0)
7485    (if (datum-has-elements? v_0) 'tainted/need-propagate 'tainted)))
7486(define taint-needs-propagate?
7487  (lambda (t_0) (eq? t_0 'tainted/need-propagate)))
7488(define taint-propagated
7489  (lambda (t_0) (if (eq? t_0 'tainted/need-propagate) 'tainted t_0)))
7490(define finish_2619
7491  (make-struct-type-install-properties
7492   '(modified-content)
7493   2
7494   0
7495   #f
7496   (list (cons prop:authentic #t))
7497   (current-inspector)
7498   #f
7499   '(0 1)
7500   #f
7501   'modified-content))
7502(define struct:modified-content
7503  (make-record-type-descriptor*
7504   'modified-content
7505   #f
7506   (|#%nongenerative-uid| modified-content)
7507   #f
7508   #f
7509   2
7510   0))
7511(define effect_2176 (finish_2619 struct:modified-content))
7512(define modified-content1.1
7513  (|#%name|
7514   modified-content
7515   (record-constructor
7516    (make-record-constructor-descriptor struct:modified-content #f #f))))
7517(define modified-content?
7518  (|#%name| modified-content? (record-predicate struct:modified-content)))
7519(define modified-content-content
7520  (|#%name|
7521   modified-content-content
7522   (record-accessor struct:modified-content 0)))
7523(define modified-content-scope-propagations+taint
7524  (|#%name|
7525   modified-content-scope-propagations+taint
7526   (record-accessor struct:modified-content 1)))
7527(define finish_2821
7528  (make-struct-type-install-properties
7529   '(syntax)
7530   7
7531   0
7532   #f
7533   (list
7534    (cons prop:sealed #t)
7535    (cons prop:authentic #t)
7536    (cons
7537     prop:reach-scopes
7538     (lambda (s_0 bulk-shifts_0 reach_0)
7539       (let ((content*_0 (syntax-content* s_0)))
7540         (begin
7541           (|#%app|
7542            reach_0
7543            (if (modified-content? content*_0)
7544              (let ((prop_0
7545                     (modified-content-scope-propagations+taint content*_0)))
7546                (if (propagation?$1 prop_0)
7547                  (|#%app| (propagation-ref prop_0) s_0)
7548                  (modified-content-content content*_0)))
7549              content*_0)
7550            bulk-shifts_0)
7551           (let ((shifts_0
7552                  (if bulk-shifts_0
7553                    (append bulk-shifts_0 (syntax-mpi-shifts s_0))
7554                    #f)))
7555             (begin
7556               (|#%app| reach_0 (syntax-scopes s_0) shifts_0)
7557               (|#%app| reach_0 (syntax-shifted-multi-scopes s_0) shifts_0)
7558               (let ((ht_0 (syntax-props s_0)))
7559                 (begin
7560                   (letrec*
7561                    ((for-loop_0
7562                      (|#%name|
7563                       for-loop
7564                       (lambda (i_0)
7565                         (begin
7566                           (if i_0
7567                             (call-with-values
7568                              (lambda ()
7569                                (unsafe-immutable-hash-iterate-key+value
7570                                 ht_0
7571                                 i_0))
7572                              (case-lambda
7573                               ((k_0 v_0)
7574                                (call-with-values
7575                                 (lambda ()
7576                                   (if (preserved-property-value? v_0)
7577                                     (begin
7578                                       (|#%app|
7579                                        reach_0
7580                                        (plain-property-value v_0)
7581                                        bulk-shifts_0)
7582                                       (values))
7583                                     (values)))
7584                                 (case-lambda
7585                                  (()
7586                                   (for-loop_0
7587                                    (unsafe-immutable-hash-iterate-next
7588                                     ht_0
7589                                     i_0)))
7590                                  (args
7591                                   (raise-binding-result-arity-error
7592                                    0
7593                                    args)))))
7594                               (args
7595                                (raise-binding-result-arity-error 2 args))))
7596                             (values)))))))
7597                    (for-loop_0 (unsafe-immutable-hash-iterate-first ht_0)))))
7598               (void)
7599               (|#%app| reach_0 (syntax-srcloc$1 s_0) bulk-shifts_0)))))))
7600    (cons
7601     prop:serialize
7602     (lambda (s_0 ser-push!_0 state_0)
7603       (let ((content*_0 (syntax-content* s_0)))
7604         (let ((content_0
7605                (if (modified-content? content*_0)
7606                  (let ((prop_0
7607                         (modified-content-scope-propagations+taint
7608                          content*_0)))
7609                    (if (propagation?$1 prop_0)
7610                      (|#%app| (propagation-ref prop_0) s_0)
7611                      (modified-content-content content*_0)))
7612                  content*_0)))
7613           (let ((properties_0
7614                  (intern-properties
7615                   (syntax-props s_0)
7616                   (lambda ()
7617                     (let ((preserve-keys_0
7618                            (serialize-state-preserve-prop-keys state_0)))
7619                       (let ((ht_0 (syntax-props s_0)))
7620                         (begin
7621                           (letrec*
7622                            ((for-loop_0
7623                              (|#%name|
7624                               for-loop
7625                               (lambda (table_0 i_0)
7626                                 (begin
7627                                   (if i_0
7628                                     (call-with-values
7629                                      (lambda ()
7630                                        (hash-iterate-key+value ht_0 i_0))
7631                                      (case-lambda
7632                                       ((k_0 v_0)
7633                                        (let ((table_1
7634                                               (if (let ((or-part_0
7635                                                          (preserved-property-value?
7636                                                           v_0)))
7637                                                     (if or-part_0
7638                                                       or-part_0
7639                                                       (hash-ref
7640                                                        preserve-keys_0
7641                                                        k_0
7642                                                        #f)))
7643                                                 (let ((table_1
7644                                                        (call-with-values
7645                                                         (lambda ()
7646                                                           (values
7647                                                            k_0
7648                                                            (check-value-to-preserve
7649                                                             (plain-property-value
7650                                                              v_0)
7651                                                             syntax?$1)))
7652                                                         (case-lambda
7653                                                          ((key_0 val_0)
7654                                                           (hash-set
7655                                                            table_0
7656                                                            key_0
7657                                                            val_0))
7658                                                          (args
7659                                                           (raise-binding-result-arity-error
7660                                                            2
7661                                                            args))))))
7662                                                   (values table_1))
7663                                                 table_0)))
7664                                          (for-loop_0
7665                                           table_1
7666                                           (hash-iterate-next ht_0 i_0))))
7667                                       (args
7668                                        (raise-binding-result-arity-error
7669                                         2
7670                                         args))))
7671                                     table_0))))))
7672                            (for-loop_0
7673                             hash2610
7674                             (hash-iterate-first ht_0)))))))
7675                   state_0)))
7676             (let ((taint_0 (syntax-taintness s_0)))
7677               (let ((context-triple_0
7678                      (let ((app_0
7679                             (intern-scopes (syntax-scopes s_0) state_0)))
7680                        (let ((app_1
7681                               (intern-shifted-multi-scopes
7682                                (syntax-shifted-multi-scopes s_0)
7683                                state_0)))
7684                          (intern-context-triple
7685                           app_0
7686                           app_1
7687                           (intern-mpi-shifts (syntax-mpi-shifts s_0) state_0)
7688                           state_0)))))
7689                 (let ((stx-state_0 (get-syntax-context state_0)))
7690                   (if (if properties_0 properties_0 taint_0)
7691                     (begin
7692                       (|#%app| ser-push!_0 'tag kw2226)
7693                       (push-syntax-context! state_0 #f)
7694                       (|#%app| ser-push!_0 content_0)
7695                       (pop-syntax-context! state_0)
7696                       (|#%app| ser-push!_0 'reference context-triple_0)
7697                       (|#%app| ser-push!_0 'reference (syntax-srcloc$1 s_0))
7698                       (|#%app| ser-push!_0 properties_0)
7699                       (|#%app| ser-push!_0 taint_0)
7700                       (if stx-state_0
7701                         (set-syntax-state-all-sharing?! stx-state_0 #f)
7702                         (void)))
7703                     (let ((sharing-mode_0
7704                            (hash-ref
7705                             (serialize-state-sharing-syntaxes state_0)
7706                             s_0
7707                             'unknown)))
7708                       (begin
7709                         (if (eq? sharing-mode_0 'share)
7710                           (begin
7711                             (|#%app| ser-push!_0 'tag kw2099)
7712                             (|#%app| ser-push!_0 (syntax->datum$1 s_0)))
7713                           (if (eq? sharing-mode_0 'unknown)
7714                             (begin
7715                               (|#%app| ser-push!_0 'tag kw2641)
7716                               (let ((this-state_0
7717                                      (if (no-pair-syntax-in-cdr? content_0)
7718                                        (syntax-state17.1
7719                                         #t
7720                                         context-triple_0
7721                                         (syntax-srcloc$1 s_0))
7722                                        #f)))
7723                                 (begin
7724                                   (push-syntax-context! state_0 this-state_0)
7725                                   (begin
7726                                     (|#%app| ser-push!_0 content_0)
7727                                     (begin
7728                                       (pop-syntax-context! state_0)
7729                                       (let ((new-sharing-mode_0
7730                                              (if (if this-state_0
7731                                                    (syntax-state-all-sharing?
7732                                                     this-state_0)
7733                                                    #f)
7734                                                'share
7735                                                'none)))
7736                                         (begin
7737                                           (hash-set!
7738                                            (serialize-state-sharing-syntaxes
7739                                             state_0)
7740                                            s_0
7741                                            (if (datum-has-elements? content_0)
7742                                              new-sharing-mode_0
7743                                              'none))
7744                                           (if (if stx-state_0
7745                                                 (eq? new-sharing-mode_0 'none)
7746                                                 #f)
7747                                             (set-syntax-state-all-sharing?!
7748                                              stx-state_0
7749                                              #f)
7750                                             (void)))))))))
7751                             (begin
7752                               (|#%app| ser-push!_0 'tag kw2641)
7753                               (push-syntax-context! state_0 #f)
7754                               (|#%app| ser-push!_0 content_0)
7755                               (pop-syntax-context! state_0))))
7756                         (|#%app| ser-push!_0 'reference context-triple_0)
7757                         (|#%app| ser-push!_0 'reference (syntax-srcloc$1 s_0))
7758                         (if stx-state_0
7759                           (if (if (eq?
7760                                    context-triple_0
7761                                    (syntax-state-context-triple stx-state_0))
7762                                 (equal?
7763                                  (syntax-srcloc$1 s_0)
7764                                  (syntax-state-srcloc stx-state_0))
7765                                 #f)
7766                             (void)
7767                             (set-syntax-state-all-sharing?! stx-state_0 #f))
7768                           (void)))))))))))))
7769    (cons
7770     prop:custom-write
7771     (lambda (s_0 port_0 mode_0)
7772       (begin
7773         (write-string "#<syntax" port_0)
7774         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
7775           (begin
7776             (if srcloc_0
7777               (let ((srcloc-str_0 (srcloc->string srcloc_0)))
7778                 (if srcloc-str_0 (fprintf port_0 ":~a" srcloc-str_0) (void)))
7779               (void))
7780             (let ((width_0 (print-syntax-width)))
7781               (begin
7782                 (if (eqv? width_0 0)
7783                   (void)
7784                   (if (eqv? width_0 +inf.0)
7785                     (fprintf port_0 " ~s" (syntax->datum$1 s_0))
7786                     (with-continuation-mark*
7787                      push-authentic
7788                      parameterization-key
7789                      (extend-parameterization
7790                       (continuation-mark-set-first #f parameterization-key)
7791                       error-print-width
7792                       width_0)
7793                      (fprintf port_0 " ~.s" (syntax->datum$1 s_0)))))
7794                 (write-string ">" port_0)))))))))
7795   (current-inspector)
7796   #f
7797   '(1 2 3 4 5 6)
7798   #f
7799   'syntax))
7800(define struct:syntax
7801  (make-record-type-descriptor*
7802   'syntax
7803   #f
7804   (|#%nongenerative-uid| syntax)
7805   #t
7806   #f
7807   7
7808   1))
7809(define effect_2447 (finish_2821 struct:syntax))
7810(define syntax2.1
7811  (|#%name|
7812   syntax
7813   (record-constructor
7814    (make-record-constructor-descriptor struct:syntax #f #f))))
7815(define syntax?$1 (|#%name| syntax? (record-predicate struct:syntax)))
7816(define syntax-content*
7817  (|#%name| syntax-content* (record-accessor struct:syntax 0)))
7818(define syntax-scopes
7819  (|#%name| syntax-scopes (record-accessor struct:syntax 1)))
7820(define syntax-shifted-multi-scopes
7821  (|#%name| syntax-shifted-multi-scopes (record-accessor struct:syntax 2)))
7822(define syntax-mpi-shifts
7823  (|#%name| syntax-mpi-shifts (record-accessor struct:syntax 3)))
7824(define syntax-srcloc$1
7825  (|#%name| syntax-srcloc (record-accessor struct:syntax 4)))
7826(define syntax-props (|#%name| syntax-props (record-accessor struct:syntax 5)))
7827(define syntax-inspector
7828  (|#%name| syntax-inspector (record-accessor struct:syntax 6)))
7829(define set-syntax-content*!
7830  (|#%name| set-syntax-content*! (record-mutator struct:syntax 0)))
7831(define-values
7832 (prop:propagation propagation?$1 propagation-ref)
7833 (make-struct-type-property 'propagation))
7834(define-values
7835 (prop:propagation-taint propagation-taint? propagation-taint-ref)
7836 (make-struct-type-property 'propagation-taint))
7837(define-values
7838 (prop:propagation-set-taint propagation-set-taint? propagation-set-taint-ref)
7839 (make-struct-type-property 'propagation-set-taint))
7840(define syntax-content
7841  (lambda (s_0)
7842    (let ((content*_0 (syntax-content* s_0)))
7843      (if (modified-content? content*_0)
7844        (modified-content-content content*_0)
7845        content*_0))))
7846(define syntax-taintness
7847  (lambda (s_0)
7848    (let ((content*_0 (syntax-content* s_0)))
7849      (if (modified-content? content*_0)
7850        (let ((v_0 (modified-content-scope-propagations+taint content*_0)))
7851          (if (taint? v_0) v_0 (|#%app| (propagation-taint-ref v_0) v_0)))
7852        #f))))
7853(define syntax-content*-cas!
7854  (lambda (stx_0 old_0 new_0) (unsafe-struct*-cas! stx_0 0 old_0 new_0)))
7855(define re-modify-content
7856  (lambda (s_0 d_0)
7857    (let ((content*_0 (syntax-content* s_0)))
7858      (if (modified-content? content*_0)
7859        (modified-content1.1
7860         d_0
7861         (modified-content-scope-propagations+taint content*_0))
7862        d_0))))
7863(define empty-scopes (seteq))
7864(define empty-shifted-multi-scopes (seteq))
7865(define empty-mpi-shifts null)
7866(define empty-props hash2610)
7867(define empty-syntax
7868  (syntax2.1
7869   #f
7870   empty-scopes
7871   empty-shifted-multi-scopes
7872   null
7873   #f
7874   empty-props
7875   #f))
7876(define identifier?
7877  (lambda (s_0) (if (syntax?$1 s_0) (symbol? (syntax-content s_0)) #f)))
7878(define syntax-identifier? (lambda (s_0) (symbol? (syntax-content s_0))))
7879(define syntax->datum$1
7880  (|#%name|
7881   syntax->datum
7882   (lambda (s_0)
7883     (begin
7884       (let ((f_0 (|#%name| f (lambda (tail?_0 x_0) (begin x_0)))))
7885         (let ((d->s_0 (|#%name| d->s (lambda (s_1 d_0) (begin d_0)))))
7886           (letrec*
7887            ((loop_0
7888              (|#%name|
7889               loop
7890               (lambda (s_1)
7891                 (begin
7892                   (let ((f_1 f_0))
7893                     (let ((gf_0
7894                            (|#%name|
7895                             gf
7896                             (lambda (tail?_0 v_0)
7897                               (begin
7898                                 (if (syntax?$1 v_0)
7899                                   (let ((d_0 (loop_0 (syntax-content v_0))))
7900                                     (begin-unsafe (begin d_0)))
7901                                   (begin-unsafe (begin v_0))))))))
7902                       (letrec*
7903                        ((loop_1
7904                          (|#%name|
7905                           loop
7906                           (lambda (tail?_0 s_2 prev-depth_0)
7907                             (begin
7908                               (let ((depth_0 (fx+ 1 prev-depth_0)))
7909                                 (if (null? s_2)
7910                                   (begin-unsafe (begin s_2))
7911                                   (if (pair? s_2)
7912                                     (let ((x_0
7913                                            (let ((app_0
7914                                                   (loop_1
7915                                                    #f
7916                                                    (car s_2)
7917                                                    depth_0)))
7918                                              (cons
7919                                               app_0
7920                                               (loop_1 1 (cdr s_2) depth_0)))))
7921                                       (begin-unsafe (begin x_0)))
7922                                     (if (symbol? s_2)
7923                                       (begin-unsafe (begin s_2))
7924                                       (if (boolean? s_2)
7925                                         (begin-unsafe (begin s_2))
7926                                         (if (number? s_2)
7927                                           (begin-unsafe (begin s_2))
7928                                           (if (let ((or-part_0 (vector? s_2)))
7929                                                 (if or-part_0
7930                                                   or-part_0
7931                                                   (let ((or-part_1
7932                                                          (box? s_2)))
7933                                                     (if or-part_1
7934                                                       or-part_1
7935                                                       (let ((or-part_2
7936                                                              (prefab-struct-key
7937                                                               s_2)))
7938                                                         (if or-part_2
7939                                                           or-part_2
7940                                                           (hash? s_2)))))))
7941                                             (datum-map-slow
7942                                              tail?_0
7943                                              s_2
7944                                              (lambda (tail?_1 s_3)
7945                                                (gf_0 tail?_1 s_3))
7946                                              #f
7947                                              #f)
7948                                             (gf_0 #f s_2)))))))))))))
7949                        (loop_1 #f s_1 0)))))))))
7950            (loop_0 s_0))))))))
7951(define cell.1$8 (unsafe-make-place-local (make-weak-hasheq)))
7952(define immediate-datum->syntax
7953  (lambda (stx-c_0 content_0 stx-l_0 props_0 insp_0)
7954    (let ((app_0
7955           (if (if stx-c_0 (syntax-taintness stx-c_0) #f)
7956             (modified-content1.1 content_0 (tainted-for-content content_0))
7957             content_0)))
7958      (let ((app_1 (if stx-c_0 (syntax-scopes stx-c_0) empty-scopes)))
7959        (let ((app_2
7960               (if stx-c_0
7961                 (syntax-shifted-multi-scopes stx-c_0)
7962                 empty-shifted-multi-scopes)))
7963          (let ((app_3 (if stx-c_0 (syntax-mpi-shifts stx-c_0) null)))
7964            (let ((app_4 (if stx-l_0 (syntax-srcloc$1 stx-l_0) #f)))
7965              (syntax2.1
7966               app_0
7967               app_1
7968               app_2
7969               app_3
7970               app_4
7971               props_0
7972               (if insp_0
7973                 (if stx-c_0
7974                   (let ((b_0 (syntax-inspector stx-c_0)))
7975                     (if (eq? insp_0 b_0)
7976                       insp_0
7977                       (if (not insp_0)
7978                         #f
7979                         (if (not b_0)
7980                           #f
7981                           (if (inspector-superior? insp_0 b_0)
7982                             b_0
7983                             (if (inspector-superior? b_0 insp_0)
7984                               insp_0
7985                               #f))))))
7986                   #f)
7987                 #f)))))))))
7988(define datum->syntax$1
7989  (let ((datum->syntax_0
7990         (|#%name|
7991          datum->syntax
7992          (lambda (stx-c5_0 s6_0 stx-l3_0 stx-p4_0)
7993            (begin
7994              (if (syntax?$1 s6_0)
7995                s6_0
7996                (let ((insp_0
7997                       (if (syntax?$1 s6_0)
7998                         'not-needed
7999                         (current-module-code-inspector))))
8000                  (let ((wrap_0
8001                         (|#%name|
8002                          wrap
8003                          (lambda (content_0)
8004                            (begin
8005                              (let ((content_1
8006                                     (datum-intern-literal content_0)))
8007                                (immediate-datum->syntax
8008                                 stx-c5_0
8009                                 content_1
8010                                 stx-l3_0
8011                                 empty-props
8012                                 insp_0)))))))
8013                    (let ((f_0
8014                           (|#%name|
8015                            f
8016                            (lambda (tail?_0 x_0)
8017                              (begin
8018                                (if tail?_0
8019                                  (begin
8020                                    (if (if (fx> tail?_0 32)
8021                                          (fx=
8022                                           0
8023                                           (fxand tail?_0 (fx- tail?_0 1)))
8024                                          #f)
8025                                      (hash-set!
8026                                       (unsafe-place-local-ref cell.1$8)
8027                                       x_0
8028                                       #t)
8029                                      (void))
8030                                    x_0)
8031                                  (wrap_0 x_0)))))))
8032                      (let ((result-s_0
8033                             (let ((s->_0
8034                                    (|#%name| s-> (lambda (s_0) (begin s_0)))))
8035                               (let ((known-pairs_0
8036                                      (unsafe-place-local-ref cell.1$8)))
8037                                 (let ((gf_0
8038                                        (|#%name|
8039                                         gf
8040                                         (lambda (tail?_0 v_0)
8041                                           (begin
8042                                             (if (syntax?$1 v_0)
8043                                               (begin-unsafe (begin v_0))
8044                                               (f_0 tail?_0 v_0)))))))
8045                                   (letrec*
8046                                    ((loop_0
8047                                      (|#%name|
8048                                       loop
8049                                       (lambda (tail?_0 s_0 prev-depth_0)
8050                                         (begin
8051                                           (let ((depth_0
8052                                                  (fx+ 1 prev-depth_0)))
8053                                             (if (if disallow-cycles
8054                                                   (fx> depth_0 32)
8055                                                   #f)
8056                                               (datum-map-slow
8057                                                tail?_0
8058                                                s_0
8059                                                (lambda (tail?_1 s_1)
8060                                                  (gf_0 tail?_1 s_1))
8061                                                disallow-cycles
8062                                                known-pairs_0)
8063                                               (if (null? s_0)
8064                                                 (f_0 tail?_0 s_0)
8065                                                 (if (pair? s_0)
8066                                                   (f_0
8067                                                    tail?_0
8068                                                    (let ((app_0
8069                                                           (loop_0
8070                                                            #f
8071                                                            (car s_0)
8072                                                            depth_0)))
8073                                                      (cons
8074                                                       app_0
8075                                                       (loop_0
8076                                                        1
8077                                                        (cdr s_0)
8078                                                        depth_0))))
8079                                                   (if (symbol? s_0)
8080                                                     (f_0 #f s_0)
8081                                                     (if (boolean? s_0)
8082                                                       (f_0 #f s_0)
8083                                                       (if (number? s_0)
8084                                                         (f_0 #f s_0)
8085                                                         (if (let ((or-part_0
8086                                                                    (vector?
8087                                                                     s_0)))
8088                                                               (if or-part_0
8089                                                                 or-part_0
8090                                                                 (let ((or-part_1
8091                                                                        (box?
8092                                                                         s_0)))
8093                                                                   (if or-part_1
8094                                                                     or-part_1
8095                                                                     (let ((or-part_2
8096                                                                            (prefab-struct-key
8097                                                                             s_0)))
8098                                                                       (if or-part_2
8099                                                                         or-part_2
8100                                                                         (hash?
8101                                                                          s_0)))))))
8102                                                           (datum-map-slow
8103                                                            tail?_0
8104                                                            s_0
8105                                                            (lambda (tail?_1
8106                                                                     s_1)
8107                                                              (gf_0
8108                                                               tail?_1
8109                                                               s_1))
8110                                                            disallow-cycles
8111                                                            known-pairs_0)
8112                                                           (gf_0
8113                                                            #f
8114                                                            s_0))))))))))))))
8115                                    (loop_0 #f s6_0 0)))))))
8116                        (if (if stx-p4_0
8117                              (not (eq? (syntax-props stx-p4_0) empty-props))
8118                              #f)
8119                          (if (syntax?$1 result-s_0)
8120                            (let ((props20_0 (syntax-props stx-p4_0)))
8121                              (syntax2.1
8122                               (syntax-content* result-s_0)
8123                               (syntax-scopes result-s_0)
8124                               (syntax-shifted-multi-scopes result-s_0)
8125                               (syntax-mpi-shifts result-s_0)
8126                               (syntax-srcloc$1 result-s_0)
8127                               props20_0
8128                               (syntax-inspector result-s_0)))
8129                            (raise-argument-error
8130                             'struct-copy
8131                             "syntax?"
8132                             result-s_0))
8133                          result-s_0)))))))))))
8134    (|#%name|
8135     datum->syntax
8136     (case-lambda
8137      ((stx-c_0 s_0) (begin (datum->syntax_0 stx-c_0 s_0 #f #f)))
8138      ((stx-c_0 s_0 stx-l_0 stx-p4_0)
8139       (datum->syntax_0 stx-c_0 s_0 stx-l_0 stx-p4_0))
8140      ((stx-c_0 s_0 stx-l3_0) (datum->syntax_0 stx-c_0 s_0 stx-l3_0 #f))))))
8141(define disallow-cycles
8142  (hasheq
8143   'cycle-fail
8144   (lambda (s_0)
8145     (raise-arguments-error
8146      'datum->syntax
8147      "cannot create syntax from cyclic datum"
8148      "datum"
8149      s_0))))
8150(define syntax-place-init!
8151  (lambda () (unsafe-place-local-set! cell.1$8 (make-weak-hasheq))))
8152(define finish_2442
8153  (make-struct-type-install-properties
8154   '(syntax-state)
8155   3
8156   0
8157   #f
8158   (list (cons prop:authentic #t))
8159   (current-inspector)
8160   #f
8161   '(1 2)
8162   #f
8163   'syntax-state))
8164(define struct:syntax-state
8165  (make-record-type-descriptor*
8166   'syntax-state
8167   #f
8168   (|#%nongenerative-uid| syntax-state)
8169   #f
8170   #f
8171   3
8172   1))
8173(define effect_2710 (finish_2442 struct:syntax-state))
8174(define syntax-state17.1
8175  (|#%name|
8176   syntax-state
8177   (record-constructor
8178    (make-record-constructor-descriptor struct:syntax-state #f #f))))
8179(define syntax-state?
8180  (|#%name| syntax-state? (record-predicate struct:syntax-state)))
8181(define syntax-state-all-sharing?
8182  (|#%name| syntax-state-all-sharing? (record-accessor struct:syntax-state 0)))
8183(define syntax-state-context-triple
8184  (|#%name|
8185   syntax-state-context-triple
8186   (record-accessor struct:syntax-state 1)))
8187(define syntax-state-srcloc
8188  (|#%name| syntax-state-srcloc (record-accessor struct:syntax-state 2)))
8189(define set-syntax-state-all-sharing?!
8190  (|#%name|
8191   set-syntax-state-all-sharing?!
8192   (record-mutator struct:syntax-state 0)))
8193(define no-pair-syntax-in-cdr?
8194  (lambda (content_0)
8195    (if (pair? content_0)
8196      (letrec*
8197       ((loop_0
8198         (|#%name|
8199          loop
8200          (lambda (content_1)
8201            (begin
8202              (if (if (syntax?$1 content_1)
8203                    (pair? (syntax-content content_1))
8204                    #f)
8205                #f
8206                (if (pair? content_1) (loop_0 (cdr content_1)) #t)))))))
8207       (loop_0 (cdr content_0)))
8208      #t)))
8209(define deserialize-syntax
8210  (lambda (content_0 context-triple_0 srcloc_0 props_0 taint_0 inspector_0)
8211    (let ((app_0
8212           (if taint_0 (modified-content1.1 content_0 taint_0) content_0)))
8213      (let ((app_1 (unsafe-vector*-ref context-triple_0 0)))
8214        (let ((app_2 (unsafe-vector*-ref context-triple_0 1)))
8215          (let ((app_3 (unsafe-vector*-ref context-triple_0 2)))
8216            (syntax2.1
8217             app_0
8218             app_1
8219             app_2
8220             app_3
8221             srcloc_0
8222             (if props_0
8223               (begin
8224                 (letrec*
8225                  ((for-loop_0
8226                    (|#%name|
8227                     for-loop
8228                     (lambda (table_0 i_0)
8229                       (begin
8230                         (if i_0
8231                           (call-with-values
8232                            (lambda ()
8233                              (unsafe-immutable-hash-iterate-key+value
8234                               props_0
8235                               i_0))
8236                            (case-lambda
8237                             ((k_0 v_0)
8238                              (let ((table_1
8239                                     (let ((table_1
8240                                            (call-with-values
8241                                             (lambda ()
8242                                               (values
8243                                                k_0
8244                                                (preserved-property-value1.1
8245                                                 v_0)))
8246                                             (case-lambda
8247                                              ((key_0 val_0)
8248                                               (hash-set table_0 key_0 val_0))
8249                                              (args
8250                                               (raise-binding-result-arity-error
8251                                                2
8252                                                args))))))
8253                                       (values table_1))))
8254                                (for-loop_0
8255                                 table_1
8256                                 (unsafe-immutable-hash-iterate-next
8257                                  props_0
8258                                  i_0))))
8259                             (args (raise-binding-result-arity-error 2 args))))
8260                           table_0))))))
8261                  (for-loop_0
8262                   hash2610
8263                   (unsafe-immutable-hash-iterate-first props_0))))
8264               empty-props)
8265             inspector_0)))))))
8266(define deserialize-datum->syntax
8267  (lambda (content_0 context-triple_0 srcloc_0 inspector_0)
8268    (let ((s_0
8269           (deserialize-syntax
8270            #f
8271            context-triple_0
8272            srcloc_0
8273            #f
8274            #f
8275            inspector_0)))
8276      (datum->syntax$1 s_0 content_0 s_0 s_0))))
8277(define finish_2247
8278  (make-struct-type-install-properties
8279   '(full-binding)
8280   2
8281   0
8282   #f
8283   (list
8284    (cons prop:authentic #t)
8285    (cons prop:binding-reach-scopes (lambda (b_0) (binding-free=id b_0))))
8286   (current-inspector)
8287   #f
8288   '(0 1)
8289   #f
8290   'full-binding))
8291(define struct:full-binding
8292  (make-record-type-descriptor*
8293   'full-binding
8294   #f
8295   (|#%nongenerative-uid| full-binding)
8296   #f
8297   #f
8298   2
8299   0))
8300(define effect_2734 (finish_2247 struct:full-binding))
8301(define full-binding1.1
8302  (|#%name|
8303   full-binding
8304   (record-constructor
8305    (make-record-constructor-descriptor struct:full-binding #f #f))))
8306(define full-binding?
8307  (|#%name| full-binding? (record-predicate struct:full-binding)))
8308(define full-binding-frame-id
8309  (|#%name| full-binding-frame-id (record-accessor struct:full-binding 0)))
8310(define full-binding-free=id
8311  (|#%name| full-binding-free=id (record-accessor struct:full-binding 1)))
8312(define binding-frame-id
8313  (lambda (b_0) (if (full-binding? b_0) (full-binding-frame-id b_0) #f)))
8314(define binding-free=id
8315  (lambda (b_0) (if (full-binding? b_0) (full-binding-free=id b_0) #f)))
8316(define cell.1$7 (unsafe-make-place-local (make-weak-hash)))
8317(define phase+space-place-init!
8318  (lambda () (unsafe-place-local-set! cell.1$7 (make-weak-hash))))
8319(define intern
8320  (lambda (new-key_0)
8321    (begin
8322      (begin-unsafe (unsafe-start-atomic))
8323      (let ((old-key_0
8324             (hash-ref-key (unsafe-place-local-ref cell.1$7) new-key_0 #f)))
8325        (begin
8326          (if old-key_0
8327            (void)
8328            (hash-set! (unsafe-place-local-ref cell.1$7) new-key_0 #t))
8329          (begin-unsafe (unsafe-end-atomic))
8330          (if old-key_0 old-key_0 new-key_0))))))
8331(define space+
8332  (lambda (s_0 s-level_0) (if (eq? s-level_0 kw2450) s_0 s-level_0)))
8333(define intern-phase+space
8334  (case-lambda
8335   ((phase_0 space_0)
8336    (if (not space_0) phase_0 (intern (cons phase_0 space_0))))
8337   ((phase+space_0) (intern phase+space_0))))
8338(define intern-phase+space-shift
8339  (case-lambda
8340   ((phase-level_0 space-level_0)
8341    (if (eq? space-level_0 kw2450)
8342      phase-level_0
8343      (intern (cons phase-level_0 space-level_0))))
8344   ((phase+space-shift_0) (intern phase+space-shift_0))))
8345(define phase+space-shift-phase-level
8346  (lambda (level_0) (if (pair? level_0) (car level_0) level_0)))
8347(define phase+space+
8348  (lambda (p+s_0 level_0) (intern-phase+space (phase+space+$1 p+s_0 level_0))))
8349(define phase+space?-string "phase+space?")
8350(define phase+space-shift?-string "phase+space-shift?")
8351(define phase+space<?
8352  (lambda (a_0 b_0)
8353    (let ((phase-a_0 (phase+space-phase a_0)))
8354      (let ((phase-b_0 (phase+space-phase b_0)))
8355        (let ((or-part_0 (phase<? phase-a_0 phase-b_0)))
8356          (if or-part_0
8357            or-part_0
8358            (if (eqv? phase-a_0 phase-b_0)
8359              (let ((space-a_0 (phase+space-space a_0)))
8360                (let ((space-b_0 (phase+space-space b_0)))
8361                  (let ((or-part_1 (not space-a_0)))
8362                    (if or-part_1
8363                      or-part_1
8364                      (if space-b_0 (symbol<? space-a_0 space-b_0) #f)))))
8365              #f)))))))
8366(define make-module-binding.1
8367  (|#%name|
8368   make-module-binding
8369   (lambda (extra-inspector7_0
8370            extra-nominal-bindings8_0
8371            frame-id5_0
8372            free=id6_0
8373            nominal-module1_0
8374            nominal-phase+space2_0
8375            nominal-require-phase+space-shift4_0
8376            nominal-sym3_0
8377            module17_0
8378            phase18_0
8379            sym19_0)
8380     (begin
8381       (let ((nominal-module_0
8382              (if (eq? nominal-module1_0 unsafe-undefined)
8383                module17_0
8384                nominal-module1_0)))
8385         (let ((nominal-phase+space_0
8386                (if (eq? nominal-phase+space2_0 unsafe-undefined)
8387                  phase18_0
8388                  nominal-phase+space2_0)))
8389           (let ((nominal-sym_0
8390                  (if (eq? nominal-sym3_0 unsafe-undefined)
8391                    sym19_0
8392                    nominal-sym3_0)))
8393             (if (if frame-id5_0
8394                   frame-id5_0
8395                   (if free=id6_0
8396                     free=id6_0
8397                     (if extra-inspector7_0
8398                       extra-inspector7_0
8399                       (not
8400                        (if (eqv? nominal-phase+space_0 phase18_0)
8401                          (if (eq? nominal-sym_0 sym19_0)
8402                            (if (eqv? nominal-require-phase+space-shift4_0 0)
8403                              (null? extra-nominal-bindings8_0)
8404                              #f)
8405                            #f)
8406                          #f)))))
8407               (full-module-binding45.1
8408                frame-id5_0
8409                free=id6_0
8410                module17_0
8411                phase18_0
8412                sym19_0
8413                nominal-module_0
8414                nominal-phase+space_0
8415                nominal-sym_0
8416                nominal-require-phase+space-shift4_0
8417                extra-inspector7_0
8418                extra-nominal-bindings8_0)
8419               (simple-module-binding46.1
8420                module17_0
8421                phase18_0
8422                sym19_0
8423                nominal-module_0)))))))))
8424(define module-binding-update.1
8425  (|#%name|
8426   module-binding-update
8427   (lambda (extra-inspector30_0
8428            extra-nominal-bindings31_0
8429            frame-id28_0
8430            free=id29_0
8431            module21_0
8432            nominal-module24_0
8433            nominal-phase+space25_0
8434            nominal-require-phase+space-shift27_0
8435            nominal-sym26_0
8436            phase22_0
8437            sym23_0
8438            b43_0)
8439     (begin
8440       (let ((module_0
8441              (if (eq? module21_0 unsafe-undefined)
8442                (module-binding-module b43_0)
8443                module21_0)))
8444         (let ((phase_0
8445                (if (eq? phase22_0 unsafe-undefined)
8446                  (module-binding-phase b43_0)
8447                  phase22_0)))
8448           (let ((sym_0
8449                  (if (eq? sym23_0 unsafe-undefined)
8450                    (module-binding-sym b43_0)
8451                    sym23_0)))
8452             (let ((nominal-module_0
8453                    (if (eq? nominal-module24_0 unsafe-undefined)
8454                      (module-binding-nominal-module b43_0)
8455                      nominal-module24_0)))
8456               (let ((nominal-phase+space_0
8457                      (if (eq? nominal-phase+space25_0 unsafe-undefined)
8458                        (module-binding-nominal-phase+space b43_0)
8459                        nominal-phase+space25_0)))
8460                 (let ((nominal-sym_0
8461                        (if (eq? nominal-sym26_0 unsafe-undefined)
8462                          (module-binding-nominal-sym b43_0)
8463                          nominal-sym26_0)))
8464                   (let ((nominal-require-phase+space-shift_0
8465                          (if (eq?
8466                               nominal-require-phase+space-shift27_0
8467                               unsafe-undefined)
8468                            (module-binding-nominal-require-phase+space-shift
8469                             b43_0)
8470                            nominal-require-phase+space-shift27_0)))
8471                     (let ((frame-id_0
8472                            (if (eq? frame-id28_0 unsafe-undefined)
8473                              (binding-frame-id b43_0)
8474                              frame-id28_0)))
8475                       (let ((free=id_0
8476                              (if (eq? free=id29_0 unsafe-undefined)
8477                                (binding-free=id b43_0)
8478                                free=id29_0)))
8479                         (let ((extra-inspector_0
8480                                (if (eq? extra-inspector30_0 unsafe-undefined)
8481                                  (module-binding-extra-inspector b43_0)
8482                                  extra-inspector30_0)))
8483                           (let ((extra-nominal-bindings_0
8484                                  (if (eq?
8485                                       extra-nominal-bindings31_0
8486                                       unsafe-undefined)
8487                                    (module-binding-extra-nominal-bindings
8488                                     b43_0)
8489                                    extra-nominal-bindings31_0)))
8490                             (make-module-binding.1
8491                              extra-inspector_0
8492                              extra-nominal-bindings_0
8493                              frame-id_0
8494                              free=id_0
8495                              nominal-module_0
8496                              nominal-phase+space_0
8497                              nominal-require-phase+space-shift_0
8498                              nominal-sym_0
8499                              module_0
8500                              phase_0
8501                              sym_0))))))))))))))))
8502(define module-binding?
8503  (lambda (b_0)
8504    (let ((or-part_0 (simple-module-binding? b_0)))
8505      (if or-part_0 or-part_0 (full-module-binding? b_0)))))
8506(define finish_2397
8507  (make-struct-type-install-properties
8508   '(full-module-binding)
8509   9
8510   0
8511   struct:full-binding
8512   (list
8513    (cons prop:authentic #t)
8514    (cons
8515     prop:serialize
8516     (lambda (b_0 ser-push!_0 state_0)
8517       (let ((simplified-b_0
8518              (if (full-binding-frame-id b_0)
8519                (module-binding-update.1
8520                 unsafe-undefined
8521                 unsafe-undefined
8522                 #f
8523                 unsafe-undefined
8524                 unsafe-undefined
8525                 unsafe-undefined
8526                 unsafe-undefined
8527                 unsafe-undefined
8528                 unsafe-undefined
8529                 unsafe-undefined
8530                 unsafe-undefined
8531                 b_0)
8532                b_0)))
8533         (if (full-module-binding? simplified-b_0)
8534           (begin
8535             (|#%app| ser-push!_0 'tag kw2804)
8536             (|#%app| ser-push!_0 (full-module-binding-module b_0))
8537             (|#%app| ser-push!_0 (full-module-binding-sym b_0))
8538             (|#%app| ser-push!_0 (full-module-binding-phase b_0))
8539             (|#%app| ser-push!_0 (full-module-binding-nominal-module b_0))
8540             (|#%app|
8541              ser-push!_0
8542              (full-module-binding-nominal-phase+space b_0))
8543             (|#%app| ser-push!_0 (full-module-binding-nominal-sym b_0))
8544             (|#%app|
8545              ser-push!_0
8546              (full-module-binding-nominal-require-phase+space-shift b_0))
8547             (|#%app| ser-push!_0 (full-binding-free=id b_0))
8548             (if (full-module-binding-extra-inspector b_0)
8549               (|#%app| ser-push!_0 'tag kw1932)
8550               (|#%app| ser-push!_0 #f))
8551             (|#%app|
8552              ser-push!_0
8553              (full-module-binding-extra-nominal-bindings b_0)))
8554           (|#%app| ser-push!_0 simplified-b_0))))))
8555   #f
8556   #f
8557   '(0 1 2 3 4 5 6 7 8)
8558   #f
8559   'full-module-binding))
8560(define struct:full-module-binding
8561  (make-record-type-descriptor*
8562   'full-module-binding
8563   struct:full-binding
8564   (|#%nongenerative-uid| full-module-binding)
8565   #f
8566   #f
8567   9
8568   0))
8569(define effect_2481 (finish_2397 struct:full-module-binding))
8570(define full-module-binding45.1
8571  (|#%name|
8572   full-module-binding
8573   (record-constructor
8574    (make-record-constructor-descriptor struct:full-module-binding #f #f))))
8575(define full-module-binding?
8576  (|#%name|
8577   full-module-binding?
8578   (record-predicate struct:full-module-binding)))
8579(define full-module-binding-module
8580  (|#%name|
8581   full-module-binding-module
8582   (record-accessor struct:full-module-binding 0)))
8583(define full-module-binding-phase
8584  (|#%name|
8585   full-module-binding-phase
8586   (record-accessor struct:full-module-binding 1)))
8587(define full-module-binding-sym
8588  (|#%name|
8589   full-module-binding-sym
8590   (record-accessor struct:full-module-binding 2)))
8591(define full-module-binding-nominal-module
8592  (|#%name|
8593   full-module-binding-nominal-module
8594   (record-accessor struct:full-module-binding 3)))
8595(define full-module-binding-nominal-phase+space
8596  (|#%name|
8597   full-module-binding-nominal-phase+space
8598   (record-accessor struct:full-module-binding 4)))
8599(define full-module-binding-nominal-sym
8600  (|#%name|
8601   full-module-binding-nominal-sym
8602   (record-accessor struct:full-module-binding 5)))
8603(define full-module-binding-nominal-require-phase+space-shift
8604  (|#%name|
8605   full-module-binding-nominal-require-phase+space-shift
8606   (record-accessor struct:full-module-binding 6)))
8607(define full-module-binding-extra-inspector
8608  (|#%name|
8609   full-module-binding-extra-inspector
8610   (record-accessor struct:full-module-binding 7)))
8611(define full-module-binding-extra-nominal-bindings
8612  (|#%name|
8613   full-module-binding-extra-nominal-bindings
8614   (record-accessor struct:full-module-binding 8)))
8615(define finish_2371
8616  (make-struct-type-install-properties
8617   '(simple-module-binding)
8618   4
8619   0
8620   #f
8621   (list
8622    (cons prop:authentic #t)
8623    (cons
8624     prop:serialize
8625     (lambda (b_0 ser-push!_0 state_0)
8626       (begin
8627         (|#%app| ser-push!_0 'tag kw2755)
8628         (|#%app| ser-push!_0 (simple-module-binding-module b_0))
8629         (|#%app| ser-push!_0 (simple-module-binding-sym b_0))
8630         (|#%app| ser-push!_0 (simple-module-binding-phase b_0))
8631         (|#%app| ser-push!_0 (simple-module-binding-nominal-module b_0))))))
8632   #f
8633   #f
8634   '(0 1 2 3)
8635   #f
8636   'simple-module-binding))
8637(define struct:simple-module-binding
8638  (make-record-type-descriptor*
8639   'simple-module-binding
8640   #f
8641   (|#%nongenerative-uid| simple-module-binding)
8642   #f
8643   #f
8644   4
8645   0))
8646(define effect_2891 (finish_2371 struct:simple-module-binding))
8647(define simple-module-binding46.1
8648  (|#%name|
8649   simple-module-binding
8650   (record-constructor
8651    (make-record-constructor-descriptor struct:simple-module-binding #f #f))))
8652(define simple-module-binding?
8653  (|#%name|
8654   simple-module-binding?
8655   (record-predicate struct:simple-module-binding)))
8656(define simple-module-binding-module
8657  (|#%name|
8658   simple-module-binding-module
8659   (record-accessor struct:simple-module-binding 0)))
8660(define simple-module-binding-phase
8661  (|#%name|
8662   simple-module-binding-phase
8663   (record-accessor struct:simple-module-binding 1)))
8664(define simple-module-binding-sym
8665  (|#%name|
8666   simple-module-binding-sym
8667   (record-accessor struct:simple-module-binding 2)))
8668(define simple-module-binding-nominal-module
8669  (|#%name|
8670   simple-module-binding-nominal-module
8671   (record-accessor struct:simple-module-binding 3)))
8672(define deserialize-full-module-binding
8673  (lambda (module_0
8674           sym_0
8675           phase_0
8676           nominal-module_0
8677           nominal-phase+space_0
8678           nominal-sym_0
8679           nominal-require-phase+space-shift_0
8680           free=id_0
8681           extra-inspector_0
8682           extra-nominal-bindings_0)
8683    (let ((temp66_0 (intern-phase+space nominal-phase+space_0)))
8684      (let ((temp68_0
8685             (intern-phase+space-shift nominal-require-phase+space-shift_0)))
8686        (let ((temp66_1 temp66_0))
8687          (make-module-binding.1
8688           extra-inspector_0
8689           extra-nominal-bindings_0
8690           #f
8691           free=id_0
8692           nominal-module_0
8693           temp66_1
8694           temp68_0
8695           nominal-sym_0
8696           module_0
8697           phase_0
8698           sym_0))))))
8699(define deserialize-simple-module-binding
8700  (lambda (module_0 sym_0 phase_0 nominal-module_0)
8701    (simple-module-binding46.1 module_0 phase_0 sym_0 nominal-module_0)))
8702(define module-binding-module
8703  (lambda (b_0)
8704    (if (simple-module-binding? b_0)
8705      (simple-module-binding-module b_0)
8706      (full-module-binding-module b_0))))
8707(define module-binding-phase
8708  (lambda (b_0)
8709    (if (simple-module-binding? b_0)
8710      (simple-module-binding-phase b_0)
8711      (full-module-binding-phase b_0))))
8712(define module-binding-sym
8713  (lambda (b_0)
8714    (if (simple-module-binding? b_0)
8715      (simple-module-binding-sym b_0)
8716      (full-module-binding-sym b_0))))
8717(define module-binding-nominal-module
8718  (lambda (b_0)
8719    (if (simple-module-binding? b_0)
8720      (simple-module-binding-nominal-module b_0)
8721      (full-module-binding-nominal-module b_0))))
8722(define module-binding-nominal-phase+space
8723  (lambda (b_0)
8724    (if (simple-module-binding? b_0)
8725      (simple-module-binding-phase b_0)
8726      (full-module-binding-nominal-phase+space b_0))))
8727(define module-binding-nominal-sym
8728  (lambda (b_0)
8729    (if (simple-module-binding? b_0)
8730      (simple-module-binding-sym b_0)
8731      (full-module-binding-nominal-sym b_0))))
8732(define module-binding-nominal-require-phase+space-shift
8733  (lambda (b_0)
8734    (if (simple-module-binding? b_0)
8735      0
8736      (full-module-binding-nominal-require-phase+space-shift b_0))))
8737(define module-binding-extra-inspector
8738  (lambda (b_0)
8739    (if (simple-module-binding? b_0)
8740      #f
8741      (full-module-binding-extra-inspector b_0))))
8742(define module-binding-extra-nominal-bindings
8743  (lambda (b_0)
8744    (if (simple-module-binding? b_0)
8745      null
8746      (full-module-binding-extra-nominal-bindings b_0))))
8747(define finish_2061
8748  (make-struct-type-install-properties
8749   '(like-ambiguous-binding)
8750   0
8751   0
8752   #f
8753   (list
8754    (cons prop:authentic #t)
8755    (cons
8756     prop:serialize
8757     (lambda (b_0 ser-push!_0 state_0) (|#%app| ser-push!_0 'tag kw2335))))
8758   #f
8759   #f
8760   '()
8761   #f
8762   'like-ambiguous-binding))
8763(define struct:like-ambiguous-binding
8764  (make-record-type-descriptor*
8765   'like-ambiguous-binding
8766   #f
8767   (|#%nongenerative-uid| like-ambiguous-binding)
8768   #f
8769   #f
8770   0
8771   0))
8772(define effect_2690 (finish_2061 struct:like-ambiguous-binding))
8773(define like-ambiguous-binding1.1
8774  (|#%name|
8775   like-ambiguous-binding
8776   (record-constructor
8777    (make-record-constructor-descriptor struct:like-ambiguous-binding #f #f))))
8778(define like-ambiguous-binding?
8779  (|#%name|
8780   like-ambiguous-binding?
8781   (record-predicate struct:like-ambiguous-binding)))
8782(define empty-binding-table hash2610)
8783(define finish_2494
8784  (make-struct-type-install-properties
8785   '(table-with-bulk-bindings)
8786   3
8787   0
8788   #f
8789   (list
8790    (cons prop:authentic #t)
8791    (cons
8792     prop:serialize
8793     (lambda (twbb_0 ser-push!_0 state_0)
8794       (begin
8795         (|#%app| ser-push!_0 'tag kw2169)
8796         (|#%app| ser-push!_0 (table-with-bulk-bindings-syms/serialize twbb_0))
8797         (|#%app|
8798          ser-push!_0
8799          (table-with-bulk-bindings-bulk-bindings twbb_0))))))
8800   (current-inspector)
8801   #f
8802   '(0 1 2)
8803   #f
8804   'table-with-bulk-bindings))
8805(define struct:table-with-bulk-bindings
8806  (make-record-type-descriptor*
8807   'table-with-bulk-bindings
8808   #f
8809   (|#%nongenerative-uid| table-with-bulk-bindings)
8810   #f
8811   #f
8812   3
8813   0))
8814(define effect_2950 (finish_2494 struct:table-with-bulk-bindings))
8815(define table-with-bulk-bindings1.1
8816  (|#%name|
8817   table-with-bulk-bindings
8818   (record-constructor
8819    (make-record-constructor-descriptor
8820     struct:table-with-bulk-bindings
8821     #f
8822     #f))))
8823(define table-with-bulk-bindings?
8824  (|#%name|
8825   table-with-bulk-bindings?
8826   (record-predicate struct:table-with-bulk-bindings)))
8827(define table-with-bulk-bindings-syms
8828  (|#%name|
8829   table-with-bulk-bindings-syms
8830   (record-accessor struct:table-with-bulk-bindings 0)))
8831(define table-with-bulk-bindings-syms/serialize
8832  (|#%name|
8833   table-with-bulk-bindings-syms/serialize
8834   (record-accessor struct:table-with-bulk-bindings 1)))
8835(define table-with-bulk-bindings-bulk-bindings
8836  (|#%name|
8837   table-with-bulk-bindings-bulk-bindings
8838   (record-accessor struct:table-with-bulk-bindings 2)))
8839(define deserialize-table-with-bulk-bindings
8840  (lambda (syms_0 bulk-bindings_0)
8841    (table-with-bulk-bindings1.1 syms_0 syms_0 bulk-bindings_0)))
8842(define finish_2866
8843  (make-struct-type-install-properties
8844   '(bulk-binding-at)
8845   2
8846   0
8847   #f
8848   (list
8849    (cons prop:authentic #t)
8850    (cons
8851     prop:reach-scopes
8852     (lambda (sms_0 extra-scopes_0 reach_0) (error "shouldn't get here")))
8853    (cons
8854     prop:serialize
8855     (lambda (bba_0 ser-push!_0 state_0)
8856       (begin
8857         (|#%app| ser-push!_0 'tag kw2707)
8858         (|#%app| ser-push!_0 (bulk-binding-at-scopes bba_0))
8859         (|#%app| ser-push!_0 (bulk-binding-at-bulk bba_0))))))
8860   (current-inspector)
8861   #f
8862   '(0 1)
8863   #f
8864   'bulk-binding-at))
8865(define struct:bulk-binding-at
8866  (make-record-type-descriptor*
8867   'bulk-binding-at
8868   #f
8869   (|#%nongenerative-uid| bulk-binding-at)
8870   #f
8871   #f
8872   2
8873   0))
8874(define effect_2253 (finish_2866 struct:bulk-binding-at))
8875(define bulk-binding-at2.1
8876  (|#%name|
8877   bulk-binding-at
8878   (record-constructor
8879    (make-record-constructor-descriptor struct:bulk-binding-at #f #f))))
8880(define bulk-binding-at?
8881  (|#%name| bulk-binding-at? (record-predicate struct:bulk-binding-at)))
8882(define bulk-binding-at-scopes
8883  (|#%name| bulk-binding-at-scopes (record-accessor struct:bulk-binding-at 0)))
8884(define bulk-binding-at-bulk
8885  (|#%name| bulk-binding-at-bulk (record-accessor struct:bulk-binding-at 1)))
8886(define deserialize-bulk-binding-at
8887  (lambda (scopes_0 bulk_0) (bulk-binding-at2.1 scopes_0 bulk_0)))
8888(define-values
8889 (prop:bulk-binding bulk-binding?$1 bulk-binding-ref)
8890 (make-struct-type-property 'bulk-binding))
8891(define finish_2649
8892  (make-struct-type-install-properties
8893   '(bulk-binding-class)
8894   3
8895   0
8896   #f
8897   null
8898   (current-inspector)
8899   #f
8900   '(0 1 2)
8901   #f
8902   'bulk-binding-class))
8903(define struct:bulk-binding-class
8904  (make-record-type-descriptor*
8905   'bulk-binding-class
8906   #f
8907   (|#%nongenerative-uid| bulk-binding-class)
8908   #f
8909   #f
8910   3
8911   0))
8912(define effect_2841 (finish_2649 struct:bulk-binding-class))
8913(define bulk-binding-class3.1
8914  (|#%name|
8915   bulk-binding-class
8916   (record-constructor
8917    (make-record-constructor-descriptor struct:bulk-binding-class #f #f))))
8918(define bulk-binding-class?_2308
8919  (|#%name| bulk-binding-class? (record-predicate struct:bulk-binding-class)))
8920(define bulk-binding-class?
8921  (|#%name|
8922   bulk-binding-class?
8923   (lambda (v)
8924     (if (bulk-binding-class?_2308 v)
8925       #t
8926       ($value
8927        (if (impersonator? v)
8928          (bulk-binding-class?_2308 (impersonator-val v))
8929          #f))))))
8930(define bulk-binding-class-get-symbols_2451
8931  (|#%name|
8932   bulk-binding-class-get-symbols
8933   (record-accessor struct:bulk-binding-class 0)))
8934(define bulk-binding-class-get-symbols
8935  (|#%name|
8936   bulk-binding-class-get-symbols
8937   (lambda (s)
8938     (if (bulk-binding-class?_2308 s)
8939       (bulk-binding-class-get-symbols_2451 s)
8940       ($value
8941        (impersonate-ref
8942         bulk-binding-class-get-symbols_2451
8943         struct:bulk-binding-class
8944         0
8945         s
8946         'bulk-binding-class
8947         'get-symbols))))))
8948(define bulk-binding-class-create_3361
8949  (|#%name|
8950   bulk-binding-class-create
8951   (record-accessor struct:bulk-binding-class 1)))
8952(define bulk-binding-class-create
8953  (|#%name|
8954   bulk-binding-class-create
8955   (lambda (s)
8956     (if (bulk-binding-class?_2308 s)
8957       (bulk-binding-class-create_3361 s)
8958       ($value
8959        (impersonate-ref
8960         bulk-binding-class-create_3361
8961         struct:bulk-binding-class
8962         1
8963         s
8964         'bulk-binding-class
8965         'create))))))
8966(define bulk-binding-class-modname_2547
8967  (|#%name|
8968   bulk-binding-class-modname
8969   (record-accessor struct:bulk-binding-class 2)))
8970(define bulk-binding-class-modname
8971  (|#%name|
8972   bulk-binding-class-modname
8973   (lambda (s)
8974     (if (bulk-binding-class?_2308 s)
8975       (bulk-binding-class-modname_2547 s)
8976       ($value
8977        (impersonate-ref
8978         bulk-binding-class-modname_2547
8979         struct:bulk-binding-class
8980         2
8981         s
8982         'bulk-binding-class
8983         'modname))))))
8984(define bulk-binding-symbols
8985  (lambda (b_0 s_0 extra-shifts_0)
8986    (let ((app_0 (bulk-binding-class-get-symbols (bulk-binding-ref b_0))))
8987      (|#%app|
8988       app_0
8989       b_0
8990       (append extra-shifts_0 (if s_0 (syntax-mpi-shifts s_0) null))))))
8991(define bulk-binding-create
8992  (lambda (b_0) (bulk-binding-class-create (bulk-binding-ref b_0))))
8993(define force-bulk-bindings
8994  (lambda (b_0 bulk-shifts_0)
8995    (let ((modname-ht_0 (car bulk-shifts_0)))
8996      (let ((extra-shifts_0 (cdr bulk-shifts_0)))
8997        (begin
8998          (hash-set!
8999           modname-ht_0
9000           b_0
9001           (|#%app|
9002            (bulk-binding-class-modname (bulk-binding-ref b_0))
9003            b_0
9004            extra-shifts_0))
9005          (bulk-binding-symbols b_0 #f extra-shifts_0))))))
9006(define binding-table-empty?
9007  (lambda (bt_0) (if (hash? bt_0) (zero? (hash-count bt_0)) #f)))
9008(define binding-table-add
9009  (lambda (bt_0 scopes_0 sym_0 binding_0 just-for-nominal?_0)
9010    (if (hash? bt_0)
9011      (hash-set
9012       bt_0
9013       sym_0
9014       (hash-set (hash-ref bt_0 sym_0 hash2725) scopes_0 binding_0))
9015      (let ((new-syms_0
9016             (binding-table-add
9017              (table-with-bulk-bindings-syms bt_0)
9018              scopes_0
9019              sym_0
9020              binding_0
9021              just-for-nominal?_0)))
9022        (let ((new-syms/serialize_0
9023               (if just-for-nominal?_0
9024                 (table-with-bulk-bindings-syms/serialize bt_0)
9025                 (if (eq?
9026                      (table-with-bulk-bindings-syms bt_0)
9027                      (table-with-bulk-bindings-syms/serialize bt_0))
9028                   new-syms_0
9029                   (binding-table-add
9030                    (table-with-bulk-bindings-syms/serialize bt_0)
9031                    scopes_0
9032                    sym_0
9033                    binding_0
9034                    #f)))))
9035          (if (table-with-bulk-bindings? bt_0)
9036            (table-with-bulk-bindings1.1
9037             new-syms_0
9038             new-syms/serialize_0
9039             (table-with-bulk-bindings-bulk-bindings bt_0))
9040            (raise-argument-error
9041             'struct-copy
9042             "table-with-bulk-bindings?"
9043             bt_0)))))))
9044(define-values
9045 (prop:implicitly-reachable implicitly-reachable? implicitly-reachable-ref)
9046 (make-struct-type-property 'implicitly-reachable))
9047(define binding-table-add-bulk.1
9048  (|#%name|
9049   binding-table-add-bulk
9050   (lambda (shadow-except4_0 bt6_0 scopes7_0 bulk8_0)
9051     (begin
9052       (if (table-with-bulk-bindings? bt6_0)
9053         (let ((temp28_0 (table-with-bulk-bindings-syms bt6_0)))
9054           (let ((new-syms_0
9055                  (remove-matching-bindings.1
9056                   shadow-except4_0
9057                   temp28_0
9058                   scopes7_0
9059                   bulk8_0)))
9060             (let ((new-syms/serialize_0
9061                    (if (eq?
9062                         (table-with-bulk-bindings-syms bt6_0)
9063                         (table-with-bulk-bindings-syms/serialize bt6_0))
9064                      new-syms_0
9065                      (let ((temp32_0
9066                             (table-with-bulk-bindings-syms/serialize bt6_0)))
9067                        (remove-matching-bindings.1
9068                         shadow-except4_0
9069                         temp32_0
9070                         scopes7_0
9071                         bulk8_0)))))
9072               (table-with-bulk-bindings1.1
9073                new-syms_0
9074                new-syms/serialize_0
9075                (cons
9076                 (bulk-binding-at2.1 scopes7_0 bulk8_0)
9077                 (table-with-bulk-bindings-bulk-bindings bt6_0))))))
9078         (let ((temp36_0 (table-with-bulk-bindings1.1 bt6_0 bt6_0 null)))
9079           (binding-table-add-bulk.1 #f temp36_0 scopes7_0 bulk8_0)))))))
9080(define remove-matching-bindings.1
9081  (|#%name|
9082   remove-matching-bindings
9083   (lambda (except10_0 syms12_0 scopes13_0 bulk14_0)
9084     (begin
9085       (let ((bulk-symbols_0 (bulk-binding-symbols bulk14_0 #f null)))
9086         (if (let ((app_0 (hash-count syms12_0)))
9087               (< app_0 (hash-count bulk-symbols_0)))
9088           (begin
9089             (letrec*
9090              ((for-loop_0
9091                (|#%name|
9092                 for-loop
9093                 (lambda (syms_0 i_0)
9094                   (begin
9095                     (if i_0
9096                       (call-with-values
9097                        (lambda ()
9098                          (unsafe-immutable-hash-iterate-key+value
9099                           syms12_0
9100                           i_0))
9101                        (case-lambda
9102                         ((sym_0 sym-bindings_0)
9103                          (let ((syms_1
9104                                 (let ((syms_1
9105                                        (if (hash-ref bulk-symbols_0 sym_0 #f)
9106                                          (remove-matching-binding.1
9107                                           except10_0
9108                                           syms_0
9109                                           sym_0
9110                                           sym-bindings_0
9111                                           scopes13_0)
9112                                          syms_0)))
9113                                   (values syms_1))))
9114                            (for-loop_0
9115                             syms_1
9116                             (unsafe-immutable-hash-iterate-next
9117                              syms12_0
9118                              i_0))))
9119                         (args (raise-binding-result-arity-error 2 args))))
9120                       syms_0))))))
9121              (for-loop_0
9122               syms12_0
9123               (unsafe-immutable-hash-iterate-first syms12_0))))
9124           (begin
9125             (letrec*
9126              ((for-loop_0
9127                (|#%name|
9128                 for-loop
9129                 (lambda (syms_0 i_0)
9130                   (begin
9131                     (if i_0
9132                       (let ((sym_0
9133                              (unsafe-immutable-hash-iterate-key
9134                               bulk-symbols_0
9135                               i_0)))
9136                         (let ((syms_1
9137                                (let ((syms_1
9138                                       (let ((sym-bindings_0
9139                                              (hash-ref syms_0 sym_0 #f)))
9140                                         (if sym-bindings_0
9141                                           (remove-matching-binding.1
9142                                            except10_0
9143                                            syms_0
9144                                            sym_0
9145                                            sym-bindings_0
9146                                            scopes13_0)
9147                                           syms_0))))
9148                                  (values syms_1))))
9149                           (for-loop_0
9150                            syms_1
9151                            (unsafe-immutable-hash-iterate-next
9152                             bulk-symbols_0
9153                             i_0))))
9154                       syms_0))))))
9155              (for-loop_0
9156               syms12_0
9157               (unsafe-immutable-hash-iterate-first bulk-symbols_0))))))))))
9158(define remove-matching-binding.1
9159  (|#%name|
9160   remove-matching-binding
9161   (lambda (except16_0 syms18_0 sym19_0 sym-bindings20_0 scopes21_0)
9162     (begin
9163       (if (if except16_0
9164             (let ((b_0 (hash-ref sym-bindings20_0 scopes21_0 #f)))
9165               (let ((or-part_0
9166                      (if (module-binding? b_0)
9167                        (eq? except16_0 (module-binding-module b_0))
9168                        #f)))
9169                 (if or-part_0 or-part_0 (like-ambiguous-binding? b_0))))
9170             #f)
9171         syms18_0
9172         (hash-set
9173          syms18_0
9174          sym19_0
9175          (hash-remove sym-bindings20_0 scopes21_0)))))))
9176(define next-state-in-full-binding-table
9177  (lambda (sym-ht_0 sym-i_0)
9178    (if sym-i_0
9179      (let ((ht_0 (hash-iterate-value sym-ht_0 sym-i_0)))
9180        (let ((i_0 (hash-iterate-first ht_0)))
9181          (if i_0
9182            (cons
9183             (vector sym-i_0 (hash-iterate-key sym-ht_0 sym-i_0) ht_0)
9184             i_0)
9185            (next-state-in-full-binding-table
9186             sym-ht_0
9187             (hash-iterate-next sym-ht_0 sym-i_0)))))
9188      '(#f . #f))))
9189(define binding-table-symbols
9190  (lambda (table_0 scs_0 s_0 extra-shifts_0)
9191    (call-with-values
9192     (lambda ()
9193       (if (hash? table_0)
9194         (values table_0 null)
9195         (values
9196          (table-with-bulk-bindings-syms table_0)
9197          (table-with-bulk-bindings-bulk-bindings table_0))))
9198     (case-lambda
9199      ((ht_0 bulk-bindings_0)
9200       (let ((app_0
9201              (begin
9202                (letrec*
9203                 ((for-loop_0
9204                   (|#%name|
9205                    for-loop
9206                    (lambda (table_1 i_0)
9207                      (begin
9208                        (if i_0
9209                          (call-with-values
9210                           (lambda () (hash-iterate-key+value ht_0 i_0))
9211                           (case-lambda
9212                            ((sym_0 at-sym_0)
9213                             (let ((table_2
9214                                    (if (begin
9215                                          (letrec*
9216                                           ((for-loop_1
9217                                             (|#%name|
9218                                              for-loop
9219                                              (lambda (result_0 i_1)
9220                                                (begin
9221                                                  (if i_1
9222                                                    (let ((an-scs_0
9223                                                           (hash-iterate-key
9224                                                            at-sym_0
9225                                                            i_1)))
9226                                                      (let ((result_1
9227                                                             (let ((result_1
9228                                                                    (begin-unsafe
9229                                                                     (hash-keys-subset?
9230                                                                      an-scs_0
9231                                                                      scs_0))))
9232                                                               (values
9233                                                                result_1))))
9234                                                        (if (if (not
9235                                                                 (let ((x_0
9236                                                                        (list
9237                                                                         an-scs_0)))
9238                                                                   result_1))
9239                                                              #t
9240                                                              #f)
9241                                                          (for-loop_1
9242                                                           result_1
9243                                                           (hash-iterate-next
9244                                                            at-sym_0
9245                                                            i_1))
9246                                                          result_1)))
9247                                                    result_0))))))
9248                                           (for-loop_1
9249                                            #f
9250                                            (hash-iterate-first at-sym_0))))
9251                                      (let ((table_2
9252                                             (call-with-values
9253                                              (lambda () (values sym_0 #t))
9254                                              (case-lambda
9255                                               ((key_0 val_0)
9256                                                (hash-set table_1 key_0 val_0))
9257                                               (args
9258                                                (raise-binding-result-arity-error
9259                                                 2
9260                                                 args))))))
9261                                        (values table_2))
9262                                      table_1)))
9263                               (for-loop_0
9264                                table_2
9265                                (hash-iterate-next ht_0 i_0))))
9266                            (args (raise-binding-result-arity-error 2 args))))
9267                          table_1))))))
9268                 (for-loop_0 hash2610 (hash-iterate-first ht_0))))))
9269         (set-union
9270          app_0
9271          (begin
9272            (letrec*
9273             ((for-loop_0
9274               (|#%name|
9275                for-loop
9276                (lambda (table_1 lst_0)
9277                  (begin
9278                    (if (pair? lst_0)
9279                      (let ((bba_0 (unsafe-car lst_0)))
9280                        (let ((rest_0 (unsafe-cdr lst_0)))
9281                          (let ((table_2
9282                                 (if (let ((s1_0
9283                                            (bulk-binding-at-scopes bba_0)))
9284                                       (begin-unsafe
9285                                        (hash-keys-subset? s1_0 scs_0)))
9286                                   (let ((ht_1
9287                                          (bulk-binding-symbols
9288                                           (bulk-binding-at-bulk bba_0)
9289                                           s_0
9290                                           extra-shifts_0)))
9291                                     (begin
9292                                       (letrec*
9293                                        ((for-loop_1
9294                                          (|#%name|
9295                                           for-loop
9296                                           (lambda (table_2 i_0)
9297                                             (begin
9298                                               (if i_0
9299                                                 (let ((sym_0
9300                                                        (hash-iterate-key
9301                                                         ht_1
9302                                                         i_0)))
9303                                                   (let ((table_3
9304                                                          (let ((table_3
9305                                                                 (call-with-values
9306                                                                  (lambda ()
9307                                                                    (values
9308                                                                     sym_0
9309                                                                     #t))
9310                                                                  (case-lambda
9311                                                                   ((key_0
9312                                                                     val_0)
9313                                                                    (hash-set
9314                                                                     table_2
9315                                                                     key_0
9316                                                                     val_0))
9317                                                                   (args
9318                                                                    (raise-binding-result-arity-error
9319                                                                     2
9320                                                                     args))))))
9321                                                            (values table_3))))
9322                                                     (for-loop_1
9323                                                      table_3
9324                                                      (hash-iterate-next
9325                                                       ht_1
9326                                                       i_0))))
9327                                                 table_2))))))
9328                                        (for-loop_1
9329                                         table_1
9330                                         (hash-iterate-first ht_1)))))
9331                                   table_1)))
9332                            (for-loop_0 table_2 rest_0))))
9333                      table_1))))))
9334             (for-loop_0 hash2610 bulk-bindings_0))))))
9335      (args (raise-binding-result-arity-error 2 args))))))
9336(define binding-table-prune-to-reachable
9337  (lambda (bt_0 state_0)
9338    (let ((or-part_0
9339           (hash-ref (serialize-state-bindings-intern state_0) bt_0 #f)))
9340      (if or-part_0
9341        or-part_0
9342        (let ((reachable-scopes_0 (serialize-state-reachable-scopes state_0)))
9343          (let ((new-syms_0
9344                 (let ((ht_0
9345                        (if (hash? bt_0)
9346                          bt_0
9347                          (table-with-bulk-bindings-syms/serialize bt_0))))
9348                   (begin
9349                     (letrec*
9350                      ((for-loop_0
9351                        (|#%name|
9352                         for-loop
9353                         (lambda (table_0 i_0)
9354                           (begin
9355                             (if i_0
9356                               (call-with-values
9357                                (lambda ()
9358                                  (unsafe-immutable-hash-iterate-key+value
9359                                   ht_0
9360                                   i_0))
9361                                (case-lambda
9362                                 ((sym_0 bindings-for-sym_0)
9363                                  (let ((table_1
9364                                         (let ((id*_0
9365                                                (begin
9366                                                  (letrec*
9367                                                   ((for-loop_1
9368                                                     (|#%name|
9369                                                      for-loop
9370                                                      (lambda (table_1 i_1)
9371                                                        (begin
9372                                                          (if i_1
9373                                                            (call-with-values
9374                                                             (lambda ()
9375                                                               (unsafe-immutable-hash-iterate-key+value
9376                                                                bindings-for-sym_0
9377                                                                i_1))
9378                                                             (case-lambda
9379                                                              ((scopes_0
9380                                                                binding_0)
9381                                                               (let ((table_2
9382                                                                      (if (begin-unsafe
9383                                                                           (hash-keys-subset?
9384                                                                            scopes_0
9385                                                                            reachable-scopes_0))
9386                                                                        (let ((table_2
9387                                                                               (call-with-values
9388                                                                                (lambda ()
9389                                                                                  (values
9390                                                                                   (intern-scopes
9391                                                                                    scopes_0
9392                                                                                    state_0)
9393                                                                                   binding_0))
9394                                                                                (case-lambda
9395                                                                                 ((key_0
9396                                                                                   val_0)
9397                                                                                  (hash-set
9398                                                                                   table_1
9399                                                                                   key_0
9400                                                                                   val_0))
9401                                                                                 (args
9402                                                                                  (raise-binding-result-arity-error
9403                                                                                   2
9404                                                                                   args))))))
9405                                                                          (values
9406                                                                           table_2))
9407                                                                        table_1)))
9408                                                                 (for-loop_1
9409                                                                  table_2
9410                                                                  (unsafe-immutable-hash-iterate-next
9411                                                                   bindings-for-sym_0
9412                                                                   i_1))))
9413                                                              (args
9414                                                               (raise-binding-result-arity-error
9415                                                                2
9416                                                                args))))
9417                                                            table_1))))))
9418                                                   (for-loop_1
9419                                                    hash2725
9420                                                    (unsafe-immutable-hash-iterate-first
9421                                                     bindings-for-sym_0))))))
9422                                           (begin
9423                                             #t
9424                                             (letrec*
9425                                              ((for-loop_1
9426                                                (|#%name|
9427                                                 for-loop
9428                                                 (lambda (table_1)
9429                                                   (begin
9430                                                     (let ((table_2
9431                                                            (if (positive?
9432                                                                 (hash-count
9433                                                                  id*_0))
9434                                                              (let ((table_2
9435                                                                     (call-with-values
9436                                                                      (lambda ()
9437                                                                        (values
9438                                                                         sym_0
9439                                                                         id*_0))
9440                                                                      (case-lambda
9441                                                                       ((key_0
9442                                                                         val_0)
9443                                                                        (hash-set
9444                                                                         table_1
9445                                                                         key_0
9446                                                                         val_0))
9447                                                                       (args
9448                                                                        (raise-binding-result-arity-error
9449                                                                         2
9450                                                                         args))))))
9451                                                                (values
9452                                                                 table_2))
9453                                                              table_1)))
9454                                                       table_2))))))
9455                                              (for-loop_1 table_0))))))
9456                                    (for-loop_0
9457                                     table_1
9458                                     (unsafe-immutable-hash-iterate-next
9459                                      ht_0
9460                                      i_0))))
9461                                 (args
9462                                  (raise-binding-result-arity-error 2 args))))
9463                               table_0))))))
9464                      (for-loop_0
9465                       hash2610
9466                       (unsafe-immutable-hash-iterate-first ht_0)))))))
9467            (let ((new-bulk-bindings_0
9468                   (if (hash? bt_0)
9469                     null
9470                     (reverse$1
9471                      (let ((lst_0
9472                             (table-with-bulk-bindings-bulk-bindings bt_0)))
9473                        (begin
9474                          (letrec*
9475                           ((for-loop_0
9476                             (|#%name|
9477                              for-loop
9478                              (lambda (fold-var_0 lst_1)
9479                                (begin
9480                                  (if (pair? lst_1)
9481                                    (let ((bba_0 (unsafe-car lst_1)))
9482                                      (let ((rest_0 (unsafe-cdr lst_1)))
9483                                        (let ((fold-var_1
9484                                               (if (let ((s1_0
9485                                                          (bulk-binding-at-scopes
9486                                                           bba_0)))
9487                                                     (begin-unsafe
9488                                                      (hash-keys-subset?
9489                                                       s1_0
9490                                                       reachable-scopes_0)))
9491                                                 (let ((fold-var_1
9492                                                        (cons
9493                                                         (if (bulk-binding-at?
9494                                                              bba_0)
9495                                                           (let ((scopes49_0
9496                                                                  (intern-scopes
9497                                                                   (bulk-binding-at-scopes
9498                                                                    bba_0)
9499                                                                   state_0)))
9500                                                             (bulk-binding-at2.1
9501                                                              scopes49_0
9502                                                              (bulk-binding-at-bulk
9503                                                               bba_0)))
9504                                                           (raise-argument-error
9505                                                            'struct-copy
9506                                                            "bulk-binding-at?"
9507                                                            bba_0))
9508                                                         fold-var_0)))
9509                                                   (values fold-var_1))
9510                                                 fold-var_0)))
9511                                          (for-loop_0 fold-var_1 rest_0))))
9512                                    fold-var_0))))))
9513                           (for-loop_0 null lst_0))))))))
9514              (let ((new-bt_0
9515                     (if (pair? new-bulk-bindings_0)
9516                       (table-with-bulk-bindings1.1
9517                        new-syms_0
9518                        new-syms_0
9519                        new-bulk-bindings_0)
9520                       new-syms_0)))
9521                (begin
9522                  (hash-set!
9523                   (serialize-state-bulk-bindings-intern state_0)
9524                   bt_0
9525                   new-bt_0)
9526                  new-bt_0)))))))))
9527(define binding-table-register-reachable
9528  (lambda (bt_0
9529           get-reachable-scopes_0
9530           bulk-shifts_0
9531           reach_0
9532           register-trigger_0)
9533    (begin
9534      (let ((ht_0
9535             (if (hash? bt_0)
9536               bt_0
9537               (table-with-bulk-bindings-syms/serialize bt_0))))
9538        (begin
9539          (letrec*
9540           ((for-loop_0
9541             (|#%name|
9542              for-loop
9543              (lambda (i_0)
9544                (begin
9545                  (if i_0
9546                    (call-with-values
9547                     (lambda ()
9548                       (unsafe-immutable-hash-iterate-key+value ht_0 i_0))
9549                     (case-lambda
9550                      ((sym_0 bindings-for-sym_0)
9551                       (call-with-values
9552                        (lambda ()
9553                          (begin
9554                            (letrec*
9555                             ((for-loop_1
9556                               (|#%name|
9557                                for-loop
9558                                (lambda (i_1)
9559                                  (begin
9560                                    (if i_1
9561                                      (call-with-values
9562                                       (lambda ()
9563                                         (unsafe-immutable-hash-iterate-key+value
9564                                          bindings-for-sym_0
9565                                          i_1))
9566                                       (case-lambda
9567                                        ((scopes_0 binding_0)
9568                                         (begin
9569                                           (let ((v_0
9570                                                  (if (binding-reach-scopes?
9571                                                       binding_0)
9572                                                    (|#%app|
9573                                                     (binding-reach-scopes-ref
9574                                                      binding_0)
9575                                                     binding_0)
9576                                                    #f)))
9577                                             (scopes-register-reachable
9578                                              scopes_0
9579                                              v_0
9580                                              get-reachable-scopes_0
9581                                              bulk-shifts_0
9582                                              reach_0
9583                                              register-trigger_0))
9584                                           (for-loop_1
9585                                            (unsafe-immutable-hash-iterate-next
9586                                             bindings-for-sym_0
9587                                             i_1))))
9588                                        (args
9589                                         (raise-binding-result-arity-error
9590                                          2
9591                                          args))))
9592                                      (values)))))))
9593                             (for-loop_1
9594                              (unsafe-immutable-hash-iterate-first
9595                               bindings-for-sym_0)))))
9596                        (case-lambda
9597                         (()
9598                          (for-loop_0
9599                           (unsafe-immutable-hash-iterate-next ht_0 i_0)))
9600                         (args (raise-binding-result-arity-error 0 args)))))
9601                      (args (raise-binding-result-arity-error 2 args))))
9602                    (values)))))))
9603           (for-loop_0 (unsafe-immutable-hash-iterate-first ht_0)))))
9604      (void)
9605      (if (table-with-bulk-bindings? bt_0)
9606        (begin
9607          (let ((lst_0 (table-with-bulk-bindings-bulk-bindings bt_0)))
9608            (begin
9609              (letrec*
9610               ((for-loop_0
9611                 (|#%name|
9612                  for-loop
9613                  (lambda (lst_1)
9614                    (begin
9615                      (if (pair? lst_1)
9616                        (let ((bba_0 (unsafe-car lst_1)))
9617                          (let ((rest_0 (unsafe-cdr lst_1)))
9618                            (begin
9619                              (begin
9620                                (if bulk-shifts_0
9621                                  (force-bulk-bindings
9622                                   (bulk-binding-at-bulk bba_0)
9623                                   bulk-shifts_0)
9624                                  (void))
9625                                (scopes-register-reachable
9626                                 (bulk-binding-at-scopes bba_0)
9627                                 #f
9628                                 get-reachable-scopes_0
9629                                 bulk-shifts_0
9630                                 reach_0
9631                                 register-trigger_0))
9632                              (for-loop_0 rest_0))))
9633                        (values)))))))
9634               (for-loop_0 lst_0))))
9635          (void))
9636        (void)))))
9637(define scopes-register-reachable
9638  (lambda (scopes_0
9639           v_0
9640           get-reachable-scopes_0
9641           bulk-shifts_0
9642           reach_0
9643           register-trigger_0)
9644    (let ((reachable-scopes_0 (|#%app| get-reachable-scopes_0)))
9645      (if (begin-unsafe (hash-keys-subset? scopes_0 reachable-scopes_0))
9646        (|#%app| reach_0 v_0 bulk-shifts_0)
9647        (let ((pending-scopes_0
9648               (begin
9649                 (letrec*
9650                  ((for-loop_0
9651                    (|#%name|
9652                     for-loop
9653                     (lambda (table_0 i_0)
9654                       (begin
9655                         (if i_0
9656                           (let ((sc_0
9657                                  (unsafe-immutable-hash-iterate-key
9658                                   scopes_0
9659                                   i_0)))
9660                             (let ((table_1
9661                                    (if (let ((or-part_0
9662                                               (begin-unsafe
9663                                                (hash-ref
9664                                                 reachable-scopes_0
9665                                                 sc_0
9666                                                 #f))))
9667                                          (if or-part_0
9668                                            or-part_0
9669                                            (implicitly-reachable? sc_0)))
9670                                      table_0
9671                                      (let ((table_1
9672                                             (call-with-values
9673                                              (lambda () (values sc_0 #t))
9674                                              (case-lambda
9675                                               ((key_0 val_0)
9676                                                (hash-set table_0 key_0 val_0))
9677                                               (args
9678                                                (raise-binding-result-arity-error
9679                                                 2
9680                                                 args))))))
9681                                        (values table_1)))))
9682                               (for-loop_0
9683                                table_1
9684                                (unsafe-immutable-hash-iterate-next
9685                                 scopes_0
9686                                 i_0))))
9687                           table_0))))))
9688                  (for-loop_0
9689                   hash2610
9690                   (unsafe-immutable-hash-iterate-first scopes_0))))))
9691          (let ((check-trigger_0
9692                 (|#%name|
9693                  check-trigger
9694                  (lambda (reach_1)
9695                    (begin
9696                      (if (zero? (hash-count pending-scopes_0))
9697                        (begin
9698                          (|#%app| reach_1 v_0 bulk-shifts_0)
9699                          (begin
9700                            (letrec*
9701                             ((for-loop_0
9702                               (|#%name|
9703                                for-loop
9704                                (lambda (i_0)
9705                                  (begin
9706                                    (if i_0
9707                                      (let ((sc_0
9708                                             (unsafe-immutable-hash-iterate-key
9709                                              scopes_0
9710                                              i_0)))
9711                                        (begin
9712                                          (if (implicitly-reachable? sc_0)
9713                                            (|#%app|
9714                                             reach_1
9715                                             sc_0
9716                                             bulk-shifts_0)
9717                                            (void))
9718                                          (for-loop_0
9719                                           (unsafe-immutable-hash-iterate-next
9720                                            scopes_0
9721                                            i_0))))
9722                                      (values)))))))
9723                             (for-loop_0
9724                              (unsafe-immutable-hash-iterate-first scopes_0))))
9725                          (void))
9726                        (void)))))))
9727            (begin
9728              (let ((ht_0 pending-scopes_0))
9729                (begin
9730                  (letrec*
9731                   ((for-loop_0
9732                     (|#%name|
9733                      for-loop
9734                      (lambda (i_0)
9735                        (begin
9736                          (if i_0
9737                            (let ((sc_0
9738                                   (unsafe-immutable-hash-iterate-key
9739                                    ht_0
9740                                    i_0)))
9741                              (begin
9742                                (|#%app|
9743                                 register-trigger_0
9744                                 sc_0
9745                                 (lambda (reach_1)
9746                                   (begin
9747                                     (set! pending-scopes_0
9748                                       (hash-remove pending-scopes_0 sc_0))
9749                                     (check-trigger_0 reach_1))))
9750                                (for-loop_0
9751                                 (unsafe-immutable-hash-iterate-next
9752                                  ht_0
9753                                  i_0))))
9754                            (values)))))))
9755                   (for-loop_0 (unsafe-immutable-hash-iterate-first ht_0)))))
9756              (void)
9757              (check-trigger_0 reach_0))))))))
9758(define taint-content
9759  (lambda (d_0)
9760    (let ((f_0 (|#%name| f (lambda (tail?_0 x_0) (begin x_0)))))
9761      (let ((s->_0
9762             (|#%name|
9763              s->
9764              (lambda (sub-s_0)
9765                (begin
9766                  (if (syntax-taintness sub-s_0)
9767                    sub-s_0
9768                    (let ((t_0 (tainted-for-content (syntax-content sub-s_0))))
9769                      (let ((content*_0 (syntax-content* sub-s_0)))
9770                        (let ((content_0
9771                               (if (modified-content? content*_0)
9772                                 (modified-content-content content*_0)
9773                                 content*_0)))
9774                          (let ((p_0
9775                                 (if (modified-content? content*_0)
9776                                   (modified-content-scope-propagations+taint
9777                                    content*_0)
9778                                   #f)))
9779                            (if (syntax?$1 sub-s_0)
9780                              (let ((content*1_0
9781                                     (let ((new-p_0
9782                                            (if (taint? p_0)
9783                                              t_0
9784                                              (|#%app|
9785                                               (propagation-set-taint-ref p_0)
9786                                               p_0
9787                                               t_0))))
9788                                       (if new-p_0
9789                                         (modified-content1.1
9790                                          content_0
9791                                          new-p_0)
9792                                         content_0))))
9793                                (syntax2.1
9794                                 content*1_0
9795                                 (syntax-scopes sub-s_0)
9796                                 (syntax-shifted-multi-scopes sub-s_0)
9797                                 (syntax-mpi-shifts sub-s_0)
9798                                 (syntax-srcloc$1 sub-s_0)
9799                                 (syntax-props sub-s_0)
9800                                 (syntax-inspector sub-s_0)))
9801                              (raise-argument-error
9802                               'struct-copy
9803                               "syntax?"
9804                               sub-s_0))))))))))))
9805        (let ((f_1 f_0))
9806          (let ((gf_0
9807                 (|#%name|
9808                  gf
9809                  (lambda (tail?_0 v_0)
9810                    (begin
9811                      (if (syntax?$1 v_0)
9812                        (s->_0 v_0)
9813                        (begin-unsafe (begin v_0))))))))
9814            (letrec*
9815             ((loop_0
9816               (|#%name|
9817                loop
9818                (lambda (tail?_0 s_0 prev-depth_0)
9819                  (begin
9820                    (let ((depth_0 (fx+ 1 prev-depth_0)))
9821                      (if (null? s_0)
9822                        (begin-unsafe (begin s_0))
9823                        (if (pair? s_0)
9824                          (let ((x_0
9825                                 (let ((app_0 (loop_0 #f (car s_0) depth_0)))
9826                                   (cons app_0 (loop_0 1 (cdr s_0) depth_0)))))
9827                            (begin-unsafe (begin x_0)))
9828                          (if (symbol? s_0)
9829                            (begin-unsafe (begin s_0))
9830                            (if (boolean? s_0)
9831                              (begin-unsafe (begin s_0))
9832                              (if (number? s_0)
9833                                (begin-unsafe (begin s_0))
9834                                (if (let ((or-part_0 (vector? s_0)))
9835                                      (if or-part_0
9836                                        or-part_0
9837                                        (let ((or-part_1 (box? s_0)))
9838                                          (if or-part_1
9839                                            or-part_1
9840                                            (let ((or-part_2
9841                                                   (prefab-struct-key s_0)))
9842                                              (if or-part_2
9843                                                or-part_2
9844                                                (hash? s_0)))))))
9845                                  (datum-map-slow
9846                                   tail?_0
9847                                   s_0
9848                                   (lambda (tail?_1 s_1) (gf_0 tail?_1 s_1))
9849                                   #f
9850                                   #f)
9851                                  (gf_0 #f s_0)))))))))))))
9852             (loop_0 #f d_0 0))))))))
9853(define syntax-tainted?$1
9854  (|#%name|
9855   syntax-tainted?
9856   (lambda (s_0) (begin (if (syntax-taintness s_0) #t #f)))))
9857(define syntax-clean? (lambda (s_0) (not (syntax-taintness s_0))))
9858(define syntax-taint$1
9859  (|#%name|
9860   syntax-taint
9861   (lambda (s_0)
9862     (begin
9863       (if (syntax-taintness s_0)
9864         s_0
9865         (let ((t_0 (tainted-for-content (syntax-content s_0))))
9866           (let ((content*_0 (syntax-content* s_0)))
9867             (let ((content_0
9868                    (if (modified-content? content*_0)
9869                      (modified-content-content content*_0)
9870                      content*_0)))
9871               (let ((p_0
9872                      (if (modified-content? content*_0)
9873                        (modified-content-scope-propagations+taint content*_0)
9874                        #f)))
9875                 (if (syntax?$1 s_0)
9876                   (let ((content*2_0
9877                          (let ((new-p_0
9878                                 (if (taint? p_0)
9879                                   t_0
9880                                   (|#%app|
9881                                    (propagation-set-taint-ref p_0)
9882                                    p_0
9883                                    t_0))))
9884                            (if new-p_0
9885                              (modified-content1.1 content_0 new-p_0)
9886                              content_0))))
9887                     (syntax2.1
9888                      content*2_0
9889                      (syntax-scopes s_0)
9890                      (syntax-shifted-multi-scopes s_0)
9891                      (syntax-mpi-shifts s_0)
9892                      (syntax-srcloc$1 s_0)
9893                      (syntax-props s_0)
9894                      (syntax-inspector s_0)))
9895                   (raise-argument-error 'struct-copy "syntax?" s_0)))))))))))
9896(define syntax-property$1
9897  (|#%name|
9898   syntax-property
9899   (case-lambda
9900    ((s_0 key_0)
9901     (begin
9902       (begin
9903         (if (syntax?$1 s_0)
9904           (void)
9905           (raise-argument-error 'syntax-property "syntax?" s_0))
9906         (let ((v_0 (hash-ref (syntax-props s_0) key_0 #f)))
9907           (let ((plain-v_0 (plain-property-value v_0)))
9908             (if (syntax-taintness s_0)
9909               (taint-content plain-v_0)
9910               plain-v_0))))))
9911    ((s_0 key_0 val_0)
9912     (begin
9913       (if (syntax?$1 s_0)
9914         (void)
9915         (raise-argument-error 'syntax-property "syntax?" s_0))
9916       (let ((pval_0
9917              (if (eq? key_0 'paren-shape)
9918                (preserved-property-value1.1 val_0)
9919                val_0)))
9920         (if (syntax?$1 s_0)
9921           (let ((props2_0 (hash-set (syntax-props s_0) key_0 pval_0)))
9922             (syntax2.1
9923              (syntax-content* s_0)
9924              (syntax-scopes s_0)
9925              (syntax-shifted-multi-scopes s_0)
9926              (syntax-mpi-shifts s_0)
9927              (syntax-srcloc$1 s_0)
9928              props2_0
9929              (syntax-inspector s_0)))
9930           (raise-argument-error 'struct-copy "syntax?" s_0)))))
9931    ((s_0 key_0 val_0 preserved?_0)
9932     (begin
9933       (if (syntax?$1 s_0)
9934         (void)
9935         (raise-argument-error 'syntax-property "syntax?" s_0))
9936       (begin
9937         (if preserved?_0
9938           (if (if (symbol? key_0) (symbol-interned? key_0) #f)
9939             (void)
9940             (raise-arguments-error
9941              'syntax-property
9942              "key for a preserved property must be an interned symbol"
9943              "given key"
9944              key_0
9945              "given value"
9946              val_0))
9947           (void))
9948         (let ((pval_0
9949                (if preserved?_0 (preserved-property-value1.1 val_0) val_0)))
9950           (if (syntax?$1 s_0)
9951             (let ((props3_0 (hash-set (syntax-props s_0) key_0 pval_0)))
9952               (syntax2.1
9953                (syntax-content* s_0)
9954                (syntax-scopes s_0)
9955                (syntax-shifted-multi-scopes s_0)
9956                (syntax-mpi-shifts s_0)
9957                (syntax-srcloc$1 s_0)
9958                props3_0
9959                (syntax-inspector s_0)))
9960             (raise-argument-error 'struct-copy "syntax?" s_0)))))))))
9961(define 1/syntax-property-preserved?
9962  (|#%name|
9963   syntax-property-preserved?
9964   (lambda (s_0 key_0)
9965     (begin
9966       (begin
9967         (if (syntax?$1 s_0)
9968           (void)
9969           (raise-argument-error 'syntax-property-preserved? "syntax?" s_0))
9970         (if (if (symbol? key_0) (symbol-interned? key_0) #f)
9971           (void)
9972           (raise-argument-error
9973            'syntax-property-preserved?
9974            "(and/c symbol? symbol-interned?)"
9975            key_0))
9976         (preserved-property-value?
9977          (hash-ref (syntax-props s_0) key_0 #f)))))))
9978(define 1/syntax-property-symbol-keys
9979  (|#%name|
9980   syntax-property-symbol-keys
9981   (lambda (s_0)
9982     (begin
9983       (begin
9984         (if (syntax?$1 s_0)
9985           (void)
9986           (raise-argument-error 'syntax-property-symbol-keys "syntax" s_0))
9987         (reverse$1
9988          (let ((ht_0 (syntax-props s_0)))
9989            (begin
9990              (letrec*
9991               ((for-loop_0
9992                 (|#%name|
9993                  for-loop
9994                  (lambda (fold-var_0 i_0)
9995                    (begin
9996                      (if i_0
9997                        (call-with-values
9998                         (lambda ()
9999                           (unsafe-immutable-hash-iterate-key+value ht_0 i_0))
10000                         (case-lambda
10001                          ((k_0 v_0)
10002                           (let ((fold-var_1
10003                                  (if (if (symbol? k_0)
10004                                        (symbol-interned? k_0)
10005                                        #f)
10006                                    (let ((fold-var_1 (cons k_0 fold-var_0)))
10007                                      (values fold-var_1))
10008                                    fold-var_0)))
10009                             (for-loop_0
10010                              fold-var_1
10011                              (unsafe-immutable-hash-iterate-next ht_0 i_0))))
10012                          (args (raise-binding-result-arity-error 2 args))))
10013                        fold-var_0))))))
10014               (for-loop_0
10015                null
10016                (unsafe-immutable-hash-iterate-first ht_0)))))))))))
10017(define 1/syntax-property-remove
10018  (|#%name|
10019   syntax-property-remove
10020   (lambda (s_0 key_0)
10021     (begin
10022       (begin
10023         (if (syntax?$1 s_0)
10024           (void)
10025           (raise-argument-error 'syntax-property-remove "syntax?" s_0))
10026         (if (hash-ref (syntax-props s_0) key_0 #f)
10027           (if (syntax?$1 s_0)
10028             (let ((props7_0 (hash-remove (syntax-props s_0) key_0)))
10029               (syntax2.1
10030                (syntax-content* s_0)
10031                (syntax-scopes s_0)
10032                (syntax-shifted-multi-scopes s_0)
10033                (syntax-mpi-shifts s_0)
10034                (syntax-srcloc$1 s_0)
10035                props7_0
10036                (syntax-inspector s_0)))
10037             (raise-argument-error 'struct-copy "syntax?" s_0))
10038           s_0))))))
10039(define syntax-has-property?
10040  (lambda (from-s_0 key_0) (hash-ref (syntax-props from-s_0) key_0 #f)))
10041(define finish_2185
10042  (make-struct-type-install-properties
10043   '(fallback)
10044   1
10045   0
10046   #f
10047   null
10048   'prefab
10049   #f
10050   '(0)
10051   #f
10052   'fallback))
10053(define struct:fallback
10054  (make-record-type-descriptor*
10055   'fallback
10056   #f
10057   (structure-type-lookup-prefab-uid 'fallback #f 1 0 #f '(0))
10058   #f
10059   #f
10060   1
10061   1))
10062(define effect_2114 (finish_2185 struct:fallback))
10063(define fallback1.1
10064  (|#%name|
10065   fallback
10066   (record-constructor
10067    (make-record-constructor-descriptor struct:fallback #f #f))))
10068(define fallback?_2815 (|#%name| fallback? (record-predicate struct:fallback)))
10069(define fallback?
10070  (|#%name|
10071   fallback?
10072   (lambda (v)
10073     (if (fallback?_2815 v)
10074       #t
10075       ($value
10076        (if (impersonator? v) (fallback?_2815 (impersonator-val v)) #f))))))
10077(define fallback-search-list_2731
10078  (|#%name| fallback-search-list (record-accessor struct:fallback 0)))
10079(define fallback-search-list
10080  (|#%name|
10081   fallback-search-list
10082   (lambda (s)
10083     (if (fallback?_2815 s)
10084       (fallback-search-list_2731 s)
10085       ($value
10086        (impersonate-ref
10087         fallback-search-list_2731
10088         struct:fallback
10089         0
10090         s
10091         'fallback
10092         'search-list))))))
10093(define fallback-first
10094  (lambda (smss_0)
10095    (if (fallback? smss_0) (car (fallback-search-list smss_0)) smss_0)))
10096(define fallback-rest
10097  (lambda (smss_0)
10098    (let ((l_0 (cdr (fallback-search-list smss_0))))
10099      (if (null? (cdr l_0)) (car l_0) (fallback1.1 l_0)))))
10100(define fallback-push
10101  (lambda (smss_0 smss/maybe-fallback_0)
10102    (fallback1.1
10103     (cons
10104      smss_0
10105      (if (fallback? smss/maybe-fallback_0)
10106        (fallback-search-list smss/maybe-fallback_0)
10107        (list smss/maybe-fallback_0))))))
10108(define fallback-update-first
10109  (lambda (smss_0 f_0)
10110    (if (fallback? smss_0)
10111      (let ((l_0 (fallback-search-list smss_0)))
10112        (fallback1.1
10113         (let ((app_0 (|#%app| f_0 (car l_0)))) (cons app_0 (cdr l_0)))))
10114      (|#%app| f_0 smss_0))))
10115(define fallback-map
10116  (lambda (smss_0 f_0)
10117    (if (fallback? smss_0)
10118      (fallback1.1
10119       (reverse$1
10120        (let ((lst_0 (fallback-search-list smss_0)))
10121          (begin
10122            (letrec*
10123             ((for-loop_0
10124               (|#%name|
10125                for-loop
10126                (lambda (fold-var_0 lst_1)
10127                  (begin
10128                    (if (pair? lst_1)
10129                      (let ((smss_1 (unsafe-car lst_1)))
10130                        (let ((rest_0 (unsafe-cdr lst_1)))
10131                          (let ((fold-var_1
10132                                 (let ((fold-var_1
10133                                        (cons
10134                                         (|#%app| f_0 smss_1)
10135                                         fold-var_0)))
10136                                   (values fold-var_1))))
10137                            (for-loop_0 fold-var_1 rest_0))))
10138                      fold-var_0))))))
10139             (for-loop_0 null lst_0))))))
10140      (|#%app| f_0 smss_0))))
10141(define fallback->list
10142  (lambda (smss_0)
10143    (if (fallback? smss_0) (fallback-search-list smss_0) (list smss_0))))
10144(define make-cache$1
10145  (|#%name| make-cache (lambda () (begin (box (make-weak-box #f))))))
10146(define cell.1$6 (unsafe-make-place-local (make-cache$1)))
10147(define resolve-cache-place-init!
10148  (lambda () (unsafe-place-local-set! cell.1$6 (make-cache$1))))
10149(define clear-resolve-cache!
10150  (case-lambda
10151   ((sym_0)
10152    (let ((c_0
10153           (weak-box-value (unsafe-unbox* (unsafe-place-local-ref cell.1$6)))))
10154      (begin
10155        (if c_0 (hash-remove! c_0 sym_0) (void))
10156        (unsafe-set-box*! (unsafe-place-local-ref cell.2$3) #f))))
10157   (()
10158    (let ((c_0
10159           (weak-box-value (unsafe-unbox* (unsafe-place-local-ref cell.1$6)))))
10160      (begin
10161        (if c_0 (hash-clear! c_0) (void))
10162        (unsafe-set-box*! (unsafe-place-local-ref cell.2$3) #f))))))
10163(define finish_2822
10164  (make-struct-type-install-properties
10165   '(entry)
10166   4
10167   0
10168   #f
10169   (list (cons prop:authentic #t))
10170   (current-inspector)
10171   #f
10172   '(0 1 2 3)
10173   #f
10174   'entry))
10175(define struct:entry
10176  (make-record-type-descriptor*
10177   'entry
10178   #f
10179   (|#%nongenerative-uid| entry)
10180   #f
10181   #f
10182   4
10183   0))
10184(define effect_2728 (finish_2822 struct:entry))
10185(define entry1.1
10186  (|#%name|
10187   entry
10188   (record-constructor
10189    (make-record-constructor-descriptor struct:entry #f #f))))
10190(define entry? (|#%name| entry? (record-predicate struct:entry)))
10191(define entry-scs (|#%name| entry-scs (record-accessor struct:entry 0)))
10192(define entry-smss (|#%name| entry-smss (record-accessor struct:entry 1)))
10193(define entry-phase (|#%name| entry-phase (record-accessor struct:entry 2)))
10194(define entry-binding
10195  (|#%name| entry-binding (record-accessor struct:entry 3)))
10196(define resolve-cache-get
10197  (lambda (sym_0 phase_0 scs_0 smss_0)
10198    (let ((c_0
10199           (weak-box-value (unsafe-unbox* (unsafe-place-local-ref cell.1$6)))))
10200      (if c_0
10201        (let ((v_0 (hash-ref c_0 sym_0 #f)))
10202          (if v_0
10203            (if (eqv? phase_0 (entry-phase v_0))
10204              (if (set=? scs_0 (entry-scs v_0))
10205                (if (set=? smss_0 (entry-smss v_0)) (entry-binding v_0) #f)
10206                #f)
10207              #f)
10208            #f))
10209        #f))))
10210(define resolve-cache-set!
10211  (lambda (sym_0 phase_0 scs_0 smss_0 b_0)
10212    (let ((wb_0 (unsafe-unbox* (unsafe-place-local-ref cell.1$6))))
10213      (let ((c_0 (weak-box-value wb_0)))
10214        (if (not c_0)
10215          (begin
10216            (unsafe-box*-cas!
10217             (unsafe-place-local-ref cell.1$6)
10218             wb_0
10219             (make-weak-box (make-hasheq)))
10220            (resolve-cache-set! sym_0 phase_0 scs_0 smss_0 b_0))
10221          (hash-set! c_0 sym_0 (entry1.1 scs_0 smss_0 phase_0 b_0)))))))
10222(define SHIFTED-CACHE-SIZE 16)
10223(define cell.2$3 (unsafe-make-place-local (box #f)))
10224(define cell.3$1 (unsafe-make-place-local 0))
10225(define finish_2410
10226  (make-struct-type-install-properties
10227   '(shifted-entry)
10228   3
10229   0
10230   #f
10231   (list (cons prop:authentic #t))
10232   (current-inspector)
10233   #f
10234   '(0 1 2)
10235   #f
10236   'shifted-entry))
10237(define struct:shifted-entry
10238  (make-record-type-descriptor*
10239   'shifted-entry
10240   #f
10241   (|#%nongenerative-uid| shifted-entry)
10242   #f
10243   #f
10244   3
10245   0))
10246(define effect_2358 (finish_2410 struct:shifted-entry))
10247(define shifted-entry2.1
10248  (|#%name|
10249   shifted-entry
10250   (record-constructor
10251    (make-record-constructor-descriptor struct:shifted-entry #f #f))))
10252(define shifted-entry?
10253  (|#%name| shifted-entry? (record-predicate struct:shifted-entry)))
10254(define shifted-entry-s
10255  (|#%name| shifted-entry-s (record-accessor struct:shifted-entry 0)))
10256(define shifted-entry-phase
10257  (|#%name| shifted-entry-phase (record-accessor struct:shifted-entry 1)))
10258(define shifted-entry-binding
10259  (|#%name| shifted-entry-binding (record-accessor struct:shifted-entry 2)))
10260(define shifted-cache-vector
10261  (lambda ()
10262    (let ((wb_0 (unsafe-unbox* (unsafe-place-local-ref cell.2$3))))
10263      (let ((c1_0 (if wb_0 (weak-box-value wb_0) #f)))
10264        (if c1_0
10265          c1_0
10266          (let ((vec_0 (make-vector 16 #f)))
10267            (begin
10268              (unsafe-set-box*!
10269               (unsafe-place-local-ref cell.2$3)
10270               (make-weak-box vec_0))
10271              vec_0)))))))
10272(define resolve+shift-cache-get
10273  (lambda (s_0 phase_0)
10274    (let ((vec_0 (shifted-cache-vector)))
10275      (call-with-values
10276       (lambda ()
10277         (begin
10278           (check-vector vec_0)
10279           (values vec_0 (unsafe-vector-length vec_0))))
10280       (case-lambda
10281        ((vec_1 len_0)
10282         (begin
10283           #f
10284           (letrec*
10285            ((for-loop_0
10286              (|#%name|
10287               for-loop
10288               (lambda (result_0 pos_0)
10289                 (begin
10290                   (if (unsafe-fx< pos_0 len_0)
10291                     (let ((e_0 (unsafe-vector-ref vec_1 pos_0)))
10292                       (let ((result_1
10293                              (let ((result_1
10294                                     (if e_0
10295                                       (if (eq? s_0 (shifted-entry-s e_0))
10296                                         (if (eqv?
10297                                              phase_0
10298                                              (shifted-entry-phase e_0))
10299                                           (shifted-entry-binding e_0)
10300                                           #f)
10301                                         #f)
10302                                       #f)))
10303                                (values result_1))))
10304                         (if (if (not (let ((x_0 (list e_0))) result_1)) #t #f)
10305                           (for-loop_0 result_1 (unsafe-fx+ 1 pos_0))
10306                           result_1)))
10307                     result_0))))))
10308            (for-loop_0 #f 0))))
10309        (args (raise-binding-result-arity-error 2 args)))))))
10310(define resolve+shift-cache-set!
10311  (lambda (s_0 phase_0 b_0)
10312    (let ((vec_0 (shifted-cache-vector)))
10313      (let ((p_0 (unsafe-place-local-ref cell.3$1)))
10314        (begin
10315          (unsafe-vector*-set! vec_0 p_0 (shifted-entry2.1 s_0 phase_0 b_0))
10316          (unsafe-place-local-set! cell.3$1 (fxand (fx+ 1 p_0) 15)))))))
10317(define NUM-CACHE-SLOTS 8)
10318(define make-cached-sets (lambda () (make-weak-box (make-vector 8 #f))))
10319(define cell.4$1 (unsafe-make-place-local (make-cached-sets)))
10320(define cell.5$1 (unsafe-make-place-local 0))
10321(define make-cached-hashes (lambda () (make-weak-box (make-vector 8 #f))))
10322(define cell.6$1 (unsafe-make-place-local (make-cached-hashes)))
10323(define cell.7 (unsafe-make-place-local 0))
10324(define sets-place-init!
10325  (lambda ()
10326    (begin
10327      (unsafe-place-local-set! cell.4$1 (make-cached-sets))
10328      (unsafe-place-local-set! cell.6$1 (make-cached-hashes)))))
10329(define cache-or-reuse-set
10330  (lambda (s_0)
10331    (let ((vec_0
10332           (let ((or-part_0
10333                  (weak-box-value (unsafe-place-local-ref cell.4$1))))
10334             (if or-part_0
10335               or-part_0
10336               (let ((vec_0 (make-vector 8 #f)))
10337                 (begin
10338                   (unsafe-place-local-set! cell.4$1 (make-weak-box vec_0))
10339                   vec_0))))))
10340      (let ((or-part_0
10341             (call-with-values
10342              (lambda ()
10343                (begin
10344                  (check-vector vec_0)
10345                  (values vec_0 (unsafe-vector-length vec_0))))
10346              (case-lambda
10347               ((vec_1 len_0)
10348                (begin
10349                  #f
10350                  (letrec*
10351                   ((for-loop_0
10352                     (|#%name|
10353                      for-loop
10354                      (lambda (result_0 pos_0)
10355                        (begin
10356                          (if (unsafe-fx< pos_0 len_0)
10357                            (let ((s2_0 (unsafe-vector-ref vec_1 pos_0)))
10358                              (let ((result_1
10359                                     (let ((result_1
10360                                            (if s2_0
10361                                              (if (set=? s_0 s2_0) s2_0 #f)
10362                                              #f)))
10363                                       (values result_1))))
10364                                (if (if (not
10365                                         (let ((x_0 (list s2_0))) result_1))
10366                                      #t
10367                                      #f)
10368                                  (for-loop_0 result_1 (unsafe-fx+ 1 pos_0))
10369                                  result_1)))
10370                            result_0))))))
10371                   (for-loop_0 #f 0))))
10372               (args (raise-binding-result-arity-error 2 args))))))
10373        (if or-part_0
10374          or-part_0
10375          (begin
10376            (unsafe-vector*-set! vec_0 (unsafe-place-local-ref cell.5$1) s_0)
10377            (unsafe-place-local-set!
10378             cell.5$1
10379             (fxand (fx+ 1 (unsafe-place-local-ref cell.5$1)) 7))
10380            s_0))))))
10381(define cache-or-reuse-hash
10382  (lambda (s_0)
10383    (let ((vec_0
10384           (let ((or-part_0
10385                  (weak-box-value (unsafe-place-local-ref cell.6$1))))
10386             (if or-part_0
10387               or-part_0
10388               (let ((vec_0 (make-vector 8 #f)))
10389                 (begin
10390                   (unsafe-place-local-set! cell.6$1 (make-weak-box vec_0))
10391                   vec_0))))))
10392      (let ((or-part_0
10393             (call-with-values
10394              (lambda ()
10395                (begin
10396                  (check-vector vec_0)
10397                  (values vec_0 (unsafe-vector-length vec_0))))
10398              (case-lambda
10399               ((vec_1 len_0)
10400                (begin
10401                  #f
10402                  (letrec*
10403                   ((for-loop_0
10404                     (|#%name|
10405                      for-loop
10406                      (lambda (result_0 pos_0)
10407                        (begin
10408                          (if (unsafe-fx< pos_0 len_0)
10409                            (let ((s2_0 (unsafe-vector-ref vec_1 pos_0)))
10410                              (let ((result_1
10411                                     (let ((result_1
10412                                            (if s2_0
10413                                              (if (equal? s_0 s2_0) s2_0 #f)
10414                                              #f)))
10415                                       (values result_1))))
10416                                (if (if (not
10417                                         (let ((x_0 (list s2_0))) result_1))
10418                                      #t
10419                                      #f)
10420                                  (for-loop_0 result_1 (unsafe-fx+ 1 pos_0))
10421                                  result_1)))
10422                            result_0))))))
10423                   (for-loop_0 #f 0))))
10424               (args (raise-binding-result-arity-error 2 args))))))
10425        (if or-part_0
10426          or-part_0
10427          (begin
10428            (unsafe-vector*-set! vec_0 (unsafe-place-local-ref cell.7) s_0)
10429            (unsafe-place-local-set!
10430             cell.7
10431             (fxand (fx+ 1 (unsafe-place-local-ref cell.7)) 7))
10432            s_0))))))
10433(define cache-place-init!
10434  (lambda () (begin (resolve-cache-place-init!) (sets-place-init!))))
10435(define finish_3056
10436  (make-struct-type-install-properties
10437   '(scope)
10438   3
10439   0
10440   #f
10441   (list
10442    (cons prop:authentic #t)
10443    (cons
10444     prop:scope-with-bindings
10445     (lambda (s_0
10446              get-reachable-scopes_0
10447              extra-shifts_0
10448              reach_0
10449              register-trigger_0)
10450       (binding-table-register-reachable
10451        (scope-binding-table s_0)
10452        get-reachable-scopes_0
10453        extra-shifts_0
10454        reach_0
10455        register-trigger_0)))
10456    (cons prop:reach-scopes (lambda (s_0 extra-shifts_0 reach_0) (void)))
10457    (cons
10458     prop:serialize-fill!
10459     (lambda (s_0 ser-push!_0 state_0)
10460       (if (binding-table-empty? (scope-binding-table s_0))
10461         (|#%app| ser-push!_0 'tag #f)
10462         (begin
10463           (|#%app| ser-push!_0 'tag kw2576)
10464           (|#%app|
10465            ser-push!_0
10466            (binding-table-prune-to-reachable
10467             (scope-binding-table s_0)
10468             state_0))))))
10469    (cons
10470     prop:serialize
10471     (lambda (s_0 ser-push!_0 state_0)
10472       (begin
10473         (if (let ((s_1 (serialize-state-reachable-scopes state_0)))
10474               (begin-unsafe (hash-ref s_1 s_0 #f)))
10475           (void)
10476           (error "internal error: found supposedly unreachable scope"))
10477         (if (eq? s_0 top-level-common-scope)
10478           (|#%app| ser-push!_0 'tag kw2129)
10479           (begin
10480             (|#%app| ser-push!_0 'tag kw2535)
10481             (|#%app| ser-push!_0 (scope-kind s_0)))))))
10482    (cons
10483     prop:custom-write
10484     (lambda (sc_0 port_0 mode_0)
10485       (begin
10486         (write-string "#<scope:" port_0)
10487         (display (scope-id sc_0) port_0)
10488         (write-string ":" port_0)
10489         (display (scope-kind sc_0) port_0)
10490         (write-string ">" port_0)))))
10491   (current-inspector)
10492   #f
10493   '(0 1)
10494   #f
10495   'scope))
10496(define struct:scope
10497  (make-record-type-descriptor*
10498   'scope
10499   #f
10500   (|#%nongenerative-uid| scope)
10501   #f
10502   #f
10503   3
10504   4))
10505(define effect_2269 (finish_3056 struct:scope))
10506(define scope1.1
10507  (|#%name|
10508   scope
10509   (record-constructor
10510    (make-record-constructor-descriptor struct:scope #f #f))))
10511(define scope? (|#%name| scope? (record-predicate struct:scope)))
10512(define scope-id (|#%name| scope-id (record-accessor struct:scope 0)))
10513(define scope-kind (|#%name| scope-kind (record-accessor struct:scope 1)))
10514(define scope-binding-table
10515  (|#%name| scope-binding-table (record-accessor struct:scope 2)))
10516(define set-scope-binding-table!
10517  (|#%name| set-scope-binding-table! (record-mutator struct:scope 2)))
10518(define deserialize-scope
10519  (case-lambda
10520   (() top-level-common-scope)
10521   ((kind_0)
10522    (scope1.1 (new-deserialize-scope-id!) kind_0 empty-binding-table))))
10523(define deserialize-scope-fill!
10524  (lambda (s_0 bt_0) (set-scope-binding-table! s_0 bt_0)))
10525(define finish_2547
10526  (make-struct-type-install-properties
10527   '(interned-scope)
10528   1
10529   0
10530   struct:scope
10531   (list
10532    (cons prop:authentic #t)
10533    (cons
10534     prop:serialize
10535     (lambda (s_0 ser-push!_0 state_0)
10536       (begin
10537         (if (let ((s_1 (serialize-state-reachable-scopes state_0)))
10538               (begin-unsafe (hash-ref s_1 s_0 #f)))
10539           (void)
10540           (error "internal error: found supposedly unreachable scope"))
10541         (|#%app| ser-push!_0 'tag kw2241)
10542         (|#%app| ser-push!_0 (interned-scope-key s_0)))))
10543    (cons
10544     prop:custom-write
10545     (lambda (sc_0 port_0 mode_0)
10546       (begin
10547         (write-string "#<scope:" port_0)
10548         (display (scope-id sc_0) port_0)
10549         (write-string ":" port_0)
10550         (display (scope-kind sc_0) port_0)
10551         (write-string " " port_0)
10552         (display (interned-scope-key sc_0) port_0)
10553         (write-string ">" port_0)))))
10554   (current-inspector)
10555   #f
10556   '(0)
10557   #f
10558   'interned-scope))
10559(define struct:interned-scope
10560  (make-record-type-descriptor*
10561   'interned-scope
10562   struct:scope
10563   (|#%nongenerative-uid| interned-scope)
10564   #f
10565   #f
10566   1
10567   0))
10568(define effect_2498 (finish_2547 struct:interned-scope))
10569(define interned-scope2.1
10570  (|#%name|
10571   interned-scope
10572   (record-constructor
10573    (make-record-constructor-descriptor struct:interned-scope #f #f))))
10574(define interned-scope?
10575  (|#%name| interned-scope? (record-predicate struct:interned-scope)))
10576(define interned-scope-key
10577  (|#%name| interned-scope-key (record-accessor struct:interned-scope 0)))
10578(define finish_1876
10579  (make-struct-type-install-properties
10580   '(multi-scope)
10581   5
10582   0
10583   #f
10584   (list
10585    (cons prop:sealed #t)
10586    (cons prop:authentic #t)
10587    (cons
10588     prop:scope-with-bindings
10589     (lambda (ms_0
10590              get-reachable-scopes_0
10591              bulk-shifts_0
10592              reach_0
10593              register-trigger_0)
10594       (begin
10595         (let ((ht_0 (unbox (multi-scope-scopes ms_0))))
10596           (begin
10597             (letrec*
10598              ((for-loop_0
10599                (|#%name|
10600                 for-loop
10601                 (lambda (i_0)
10602                   (begin
10603                     (if i_0
10604                       (let ((sc_0 (hash-iterate-value ht_0 i_0)))
10605                         (begin
10606                           (if (binding-table-empty?
10607                                (scope-binding-table sc_0))
10608                             (void)
10609                             (|#%app| reach_0 sc_0 bulk-shifts_0))
10610                           (for-loop_0 (hash-iterate-next ht_0 i_0))))
10611                       (values)))))))
10612              (for-loop_0 (hash-iterate-first ht_0)))))
10613         (void))))
10614    (cons prop:reach-scopes (lambda (s_0 extra-shifts_0 reach_0) (void)))
10615    (cons
10616     prop:serialize
10617     (lambda (ms_0 ser-push!_0 state_0)
10618       (begin
10619         (|#%app| ser-push!_0 'tag kw2645)
10620         (begin
10621           (|#%app| ser-push!_0 (multi-scope-name ms_0))
10622           (let ((multi-scope-tables_0
10623                  (serialize-state-multi-scope-tables state_0)))
10624             (|#%app|
10625              ser-push!_0
10626              (let ((or-part_0
10627                     (hash-ref
10628                      multi-scope-tables_0
10629                      (multi-scope-scopes ms_0)
10630                      #f)))
10631                (if or-part_0
10632                  or-part_0
10633                  (let ((ht_0
10634                         (let ((ht_0 (unbox (multi-scope-scopes ms_0))))
10635                           (begin
10636                             (letrec*
10637                              ((for-loop_0
10638                                (|#%name|
10639                                 for-loop
10640                                 (lambda (table_0 i_0)
10641                                   (begin
10642                                     (if i_0
10643                                       (call-with-values
10644                                        (lambda ()
10645                                          (hash-iterate-key+value ht_0 i_0))
10646                                        (case-lambda
10647                                         ((phase_0 sc_0)
10648                                          (let ((table_1
10649                                                 (if (let ((s_0
10650                                                            (serialize-state-reachable-scopes
10651                                                             state_0)))
10652                                                       (begin-unsafe
10653                                                        (hash-ref
10654                                                         s_0
10655                                                         sc_0
10656                                                         #f)))
10657                                                   (let ((table_1
10658                                                          (call-with-values
10659                                                           (lambda ()
10660                                                             (values
10661                                                              phase_0
10662                                                              sc_0))
10663                                                           (case-lambda
10664                                                            ((key_0 val_0)
10665                                                             (hash-set
10666                                                              table_0
10667                                                              key_0
10668                                                              val_0))
10669                                                            (args
10670                                                             (raise-binding-result-arity-error
10671                                                              2
10672                                                              args))))))
10673                                                     (values table_1))
10674                                                   table_0)))
10675                                            (for-loop_0
10676                                             table_1
10677                                             (hash-iterate-next ht_0 i_0))))
10678                                         (args
10679                                          (raise-binding-result-arity-error
10680                                           2
10681                                           args))))
10682                                       table_0))))))
10683                              (for-loop_0
10684                               hash2589
10685                               (hash-iterate-first ht_0)))))))
10686                    (begin
10687                      (hash-set!
10688                       multi-scope-tables_0
10689                       (multi-scope-scopes ms_0)
10690                       ht_0)
10691                      ht_0)))))))))))
10692   (current-inspector)
10693   #f
10694   '(0 1 2 3 4)
10695   #f
10696   'multi-scope))
10697(define struct:multi-scope
10698  (make-record-type-descriptor*
10699   'multi-scope
10700   #f
10701   (|#%nongenerative-uid| multi-scope)
10702   #t
10703   #f
10704   5
10705   0))
10706(define effect_1895 (finish_1876 struct:multi-scope))
10707(define multi-scope3.1
10708  (|#%name|
10709   multi-scope
10710   (record-constructor
10711    (make-record-constructor-descriptor struct:multi-scope #f #f))))
10712(define multi-scope?
10713  (|#%name| multi-scope? (record-predicate struct:multi-scope)))
10714(define multi-scope-id
10715  (|#%name| multi-scope-id (record-accessor struct:multi-scope 0)))
10716(define multi-scope-name
10717  (|#%name| multi-scope-name (record-accessor struct:multi-scope 1)))
10718(define multi-scope-scopes
10719  (|#%name| multi-scope-scopes (record-accessor struct:multi-scope 2)))
10720(define multi-scope-shifted
10721  (|#%name| multi-scope-shifted (record-accessor struct:multi-scope 3)))
10722(define multi-scope-label-shifted
10723  (|#%name| multi-scope-label-shifted (record-accessor struct:multi-scope 4)))
10724(define deserialize-multi-scope
10725  (lambda (name_0 scopes_0)
10726    (let ((app_0 (new-deserialize-scope-id!)))
10727      (let ((app_1 (box scopes_0)))
10728        (let ((app_2 (box (hasheqv))))
10729          (multi-scope3.1 app_0 name_0 app_1 app_2 (box (hash))))))))
10730(define finish_3510
10731  (make-struct-type-install-properties
10732   '(representative-scope)
10733   2
10734   0
10735   struct:scope
10736   (list
10737    (cons prop:authentic #t)
10738    (cons prop:implicitly-reachable #t)
10739    (cons
10740     prop:reach-scopes
10741     (lambda (s_0 bulk-shifts_0 reach_0)
10742       (|#%app| reach_0 (representative-scope-owner s_0) bulk-shifts_0)))
10743    (cons
10744     prop:serialize-fill!
10745     (lambda (s_0 ser-push!_0 state_0)
10746       (begin
10747         (|#%app| ser-push!_0 'tag kw2073)
10748         (|#%app|
10749          ser-push!_0
10750          (binding-table-prune-to-reachable (scope-binding-table s_0) state_0))
10751         (|#%app| ser-push!_0 (representative-scope-owner s_0)))))
10752    (cons
10753     prop:serialize
10754     (lambda (s_0 ser-push!_0 state_0)
10755       (begin
10756         (|#%app| ser-push!_0 'tag kw2600)
10757         (|#%app| ser-push!_0 (scope-kind s_0))
10758         (|#%app| ser-push!_0 (representative-scope-phase s_0)))))
10759    (cons
10760     prop:custom-write
10761     (lambda (sc_0 port_0 mode_0)
10762       (begin
10763         (write-string "#<scope:" port_0)
10764         (display (scope-id sc_0) port_0)
10765         (if (representative-scope-owner sc_0)
10766           (begin
10767             (write-string "=" port_0)
10768             (display
10769              (multi-scope-id (representative-scope-owner sc_0))
10770              port_0))
10771           (void))
10772         (write-string "@" port_0)
10773         (display (representative-scope-phase sc_0) port_0)
10774         (write-string ">" port_0)))))
10775   (current-inspector)
10776   #f
10777   '()
10778   #f
10779   'representative-scope))
10780(define struct:representative-scope
10781  (make-record-type-descriptor*
10782   'representative-scope
10783   struct:scope
10784   (|#%nongenerative-uid| representative-scope)
10785   #f
10786   #f
10787   2
10788   3))
10789(define effect_2683 (finish_3510 struct:representative-scope))
10790(define representative-scope4.1
10791  (|#%name|
10792   representative-scope
10793   (record-constructor
10794    (make-record-constructor-descriptor struct:representative-scope #f #f))))
10795(define representative-scope?
10796  (|#%name|
10797   representative-scope?
10798   (record-predicate struct:representative-scope)))
10799(define representative-scope-owner
10800  (|#%name|
10801   representative-scope-owner
10802   (record-accessor struct:representative-scope 0)))
10803(define representative-scope-phase
10804  (|#%name|
10805   representative-scope-phase
10806   (record-accessor struct:representative-scope 1)))
10807(define set-representative-scope-owner!
10808  (|#%name|
10809   set-representative-scope-owner!
10810   (record-mutator struct:representative-scope 0)))
10811(define set-representative-scope-phase!
10812  (|#%name|
10813   set-representative-scope-phase!
10814   (record-mutator struct:representative-scope 1)))
10815(define deserialize-representative-scope
10816  (lambda (kind_0 phase_0)
10817    (let ((v_0
10818           (representative-scope4.1
10819            (new-deserialize-scope-id!)
10820            kind_0
10821            #f
10822            #f
10823            phase_0)))
10824      v_0)))
10825(define deserialize-representative-scope-fill!
10826  (lambda (s_0 bt_0 owner_0)
10827    (begin
10828      (begin-unsafe (set-scope-binding-table! s_0 bt_0))
10829      (set-representative-scope-owner! s_0 owner_0))))
10830(define finish_3292
10831  (make-struct-type-install-properties
10832   '(shifted-multi-scope)
10833   2
10834   0
10835   #f
10836   (list
10837    (cons prop:sealed #t)
10838    (cons prop:authentic #t)
10839    (cons
10840     prop:reach-scopes
10841     (lambda (sms_0 bulk-shifts_0 reach_0)
10842       (|#%app|
10843        reach_0
10844        (shifted-multi-scope-multi-scope sms_0)
10845        bulk-shifts_0)))
10846    (cons
10847     prop:serialize
10848     (lambda (sms_0 ser-push!_0 state_0)
10849       (begin
10850         (|#%app| ser-push!_0 'tag kw2201)
10851         (|#%app| ser-push!_0 (shifted-multi-scope-phase sms_0))
10852         (|#%app| ser-push!_0 (shifted-multi-scope-multi-scope sms_0)))))
10853    (cons
10854     prop:custom-write
10855     (lambda (sms_0 port_0 mode_0)
10856       (begin
10857         (write-string "#<scope:" port_0)
10858         (display
10859          (multi-scope-id (shifted-multi-scope-multi-scope sms_0))
10860          port_0)
10861         (write-string "@" port_0)
10862         (display (shifted-multi-scope-phase sms_0) port_0)
10863         (write-string ">" port_0)))))
10864   (current-inspector)
10865   #f
10866   '(0 1)
10867   #f
10868   'shifted-multi-scope))
10869(define struct:shifted-multi-scope
10870  (make-record-type-descriptor*
10871   'shifted-multi-scope
10872   #f
10873   (|#%nongenerative-uid| shifted-multi-scope)
10874   #t
10875   #f
10876   2
10877   0))
10878(define effect_2854 (finish_3292 struct:shifted-multi-scope))
10879(define shifted-multi-scope5.1
10880  (|#%name|
10881   shifted-multi-scope
10882   (record-constructor
10883    (make-record-constructor-descriptor struct:shifted-multi-scope #f #f))))
10884(define shifted-multi-scope?
10885  (|#%name|
10886   shifted-multi-scope?
10887   (record-predicate struct:shifted-multi-scope)))
10888(define shifted-multi-scope-phase
10889  (|#%name|
10890   shifted-multi-scope-phase
10891   (record-accessor struct:shifted-multi-scope 0)))
10892(define shifted-multi-scope-multi-scope
10893  (|#%name|
10894   shifted-multi-scope-multi-scope
10895   (record-accessor struct:shifted-multi-scope 1)))
10896(define deserialize-shifted-multi-scope
10897  (lambda (phase_0 multi-scope_0)
10898    (intern-shifted-multi-scope phase_0 multi-scope_0)))
10899(define intern-shifted-multi-scope
10900  (lambda (phase_0 multi-scope_0)
10901    (letrec*
10902     ((transaction-loop_0
10903       (|#%name|
10904        transaction-loop
10905        (lambda (boxed-table_0 key_0 make_0)
10906          (begin
10907            (let ((or-part_0 (hash-ref (unbox boxed-table_0) phase_0 #f)))
10908              (if or-part_0
10909                or-part_0
10910                (let ((val_0 (|#%app| make_0)))
10911                  (let ((current_0 (unbox boxed-table_0)))
10912                    (let ((next_0 (hash-set current_0 key_0 val_0)))
10913                      (if (unsafe-box*-cas! boxed-table_0 current_0 next_0)
10914                        val_0
10915                        (transaction-loop_0
10916                         boxed-table_0
10917                         key_0
10918                         make_0))))))))))))
10919     (if (phase? phase_0)
10920       (let ((or-part_0
10921              (hash-ref
10922               (unbox (multi-scope-shifted multi-scope_0))
10923               phase_0
10924               #f)))
10925         (if or-part_0
10926           or-part_0
10927           (transaction-loop_0
10928            (multi-scope-shifted multi-scope_0)
10929            phase_0
10930            (lambda () (shifted-multi-scope5.1 phase_0 multi-scope_0)))))
10931       (let ((or-part_0
10932              (hash-ref
10933               (unbox (multi-scope-label-shifted multi-scope_0))
10934               phase_0
10935               #f)))
10936         (if or-part_0
10937           or-part_0
10938           (transaction-loop_0
10939            (multi-scope-label-shifted multi-scope_0)
10940            phase_0
10941            (lambda () (shifted-multi-scope5.1 phase_0 multi-scope_0)))))))))
10942(define finish_3013
10943  (make-struct-type-install-properties
10944   '(shifted-to-label-phase)
10945   1
10946   0
10947   #f
10948   null
10949   'prefab
10950   #f
10951   '(0)
10952   #f
10953   'shifted-to-label-phase))
10954(define struct:shifted-to-label-phase
10955  (make-record-type-descriptor*
10956   'shifted-to-label-phase
10957   #f
10958   (structure-type-lookup-prefab-uid 'shifted-to-label-phase #f 1 0 #f '(0))
10959   #f
10960   #f
10961   1
10962   1))
10963(define effect_2315 (finish_3013 struct:shifted-to-label-phase))
10964(define shifted-to-label-phase6.1
10965  (|#%name|
10966   shifted-to-label-phase
10967   (record-constructor
10968    (make-record-constructor-descriptor struct:shifted-to-label-phase #f #f))))
10969(define shifted-to-label-phase?_2495
10970  (|#%name|
10971   shifted-to-label-phase?
10972   (record-predicate struct:shifted-to-label-phase)))
10973(define shifted-to-label-phase?
10974  (|#%name|
10975   shifted-to-label-phase?
10976   (lambda (v)
10977     (if (shifted-to-label-phase?_2495 v)
10978       #t
10979       ($value
10980        (if (impersonator? v)
10981          (shifted-to-label-phase?_2495 (impersonator-val v))
10982          #f))))))
10983(define shifted-to-label-phase-from_2273
10984  (|#%name|
10985   shifted-to-label-phase-from
10986   (record-accessor struct:shifted-to-label-phase 0)))
10987(define shifted-to-label-phase-from
10988  (|#%name|
10989   shifted-to-label-phase-from
10990   (lambda (s)
10991     (if (shifted-to-label-phase?_2495 s)
10992       (shifted-to-label-phase-from_2273 s)
10993       ($value
10994        (impersonate-ref
10995         shifted-to-label-phase-from_2273
10996         struct:shifted-to-label-phase
10997         0
10998         s
10999         'shifted-to-label-phase
11000         'from))))))
11001(define cell.1$5 (unsafe-make-place-local 0))
11002(define new-scope-id!
11003  (lambda ()
11004    (begin
11005      (unsafe-place-local-set!
11006       cell.1$5
11007       (add1 (unsafe-place-local-ref cell.1$5)))
11008      (unsafe-place-local-ref cell.1$5))))
11009(define new-deserialize-scope-id! (lambda () (- (new-scope-id!))))
11010(define deserialized-scope-id? (lambda (scope-id_0) (negative? scope-id_0)))
11011(define top-level-common-scope (scope1.1 0 'module empty-binding-table))
11012(define new-scope
11013  (lambda (kind_0) (scope1.1 (new-scope-id!) kind_0 empty-binding-table)))
11014(define cell.2$2 (unsafe-make-place-local (make-ephemeron-hasheq)))
11015(define interned-scope-symbols
11016  (lambda ()
11017    (call-as-atomic
11018     (lambda () (hash-keys (unsafe-place-local-ref cell.2$2))))))
11019(define scope-place-init!
11020  (lambda () (unsafe-place-local-set! cell.2$2 (make-ephemeron-hasheq))))
11021(define make-interned-scope
11022  (lambda (sym_0)
11023    (let ((make_0
11024           (|#%name|
11025            make
11026            (lambda ()
11027              (begin
11028                (interned-scope2.1
11029                 (- (new-scope-id!))
11030                 'interned
11031                 empty-binding-table
11032                 sym_0))))))
11033      (call-as-atomic
11034       (lambda ()
11035         (let ((or-part_0
11036                (hash-ref! (unsafe-place-local-ref cell.2$2) sym_0 #f)))
11037           (if or-part_0
11038             or-part_0
11039             (let ((new_0 (make_0)))
11040               (begin
11041                 (hash-set! (unsafe-place-local-ref cell.2$2) sym_0 new_0)
11042                 new_0)))))))))
11043(define new-multi-scope
11044  (let ((new-multi-scope_0
11045         (|#%name|
11046          new-multi-scope
11047          (lambda (name7_0)
11048            (begin
11049              (intern-shifted-multi-scope
11050               0
11051               (let ((app_0 (new-scope-id!)))
11052                 (let ((app_1 (box (hasheqv))))
11053                   (let ((app_2 (box (hasheqv))))
11054                     (multi-scope3.1
11055                      app_0
11056                      name7_0
11057                      app_1
11058                      app_2
11059                      (box (hash))))))))))))
11060    (case-lambda
11061     (() (new-multi-scope_0 #f))
11062     ((name7_0) (new-multi-scope_0 name7_0)))))
11063(define multi-scope-to-scope-at-phase
11064  (lambda (ms_0 phase_0)
11065    (let ((scopes_0 (unbox (multi-scope-scopes ms_0))))
11066      (let ((or-part_0 (hash-ref scopes_0 phase_0 #f)))
11067        (if or-part_0
11068          or-part_0
11069          (let ((s_0
11070                 (representative-scope4.1
11071                  (if (let ((scope-id_0 (multi-scope-id ms_0)))
11072                        (begin-unsafe (negative? scope-id_0)))
11073                    (new-deserialize-scope-id!)
11074                    (new-scope-id!))
11075                  'module
11076                  empty-binding-table
11077                  ms_0
11078                  phase_0)))
11079            (if (unsafe-box*-cas!
11080                 (multi-scope-scopes ms_0)
11081                 scopes_0
11082                 (hash-set scopes_0 phase_0 s_0))
11083              s_0
11084              (multi-scope-to-scope-at-phase ms_0 phase_0))))))))
11085(define scope>? (lambda (sc1_0 sc2_0) (> (scope-id sc1_0) (scope-id sc2_0))))
11086(define scope<? (lambda (sc1_0 sc2_0) (< (scope-id sc1_0) (scope-id sc2_0))))
11087(define shifted-multi-scope<?
11088  (lambda (sms1_0 sms2_0)
11089    (let ((ms1_0 (shifted-multi-scope-multi-scope sms1_0)))
11090      (let ((ms2_0 (shifted-multi-scope-multi-scope sms2_0)))
11091        (if (eq? ms1_0 ms2_0)
11092          (let ((p1_0 (shifted-multi-scope-phase sms1_0)))
11093            (let ((p2_0 (shifted-multi-scope-phase sms2_0)))
11094              (if (shifted-to-label-phase? p1_0)
11095                (if (shifted-to-label-phase? p2_0)
11096                  (let ((app_0 (shifted-to-label-phase-from p1_0)))
11097                    (phase<? app_0 (shifted-to-label-phase-from p2_0)))
11098                  #f)
11099                (if (shifted-to-label-phase? p2_0) #t (phase<? p1_0 p2_0)))))
11100          (< (multi-scope-id ms1_0) (multi-scope-id ms2_0)))))))
11101(define syntax-propagated-content*
11102  (lambda (s_0)
11103    (let ((content*_0 (syntax-content* s_0)))
11104      (if (not (modified-content? content*_0))
11105        content*_0
11106        (let ((prop_0 (modified-content-scope-propagations+taint content*_0)))
11107          (if (let ((or-part_0 (propagation? prop_0)))
11108                (if or-part_0
11109                  or-part_0
11110                  (begin-unsafe (eq? prop_0 'tainted/need-propagate))))
11111            (let ((content_0 (modified-content-content content*_0)))
11112              (let ((new-content_0
11113                     (if (propagation? prop_0)
11114                       (let ((f_0
11115                              (|#%name| f (lambda (tail?_0 x_0) (begin x_0)))))
11116                         (let ((s->_0
11117                                (|#%name|
11118                                 s->
11119                                 (lambda (sub-s_0)
11120                                   (begin
11121                                     (let ((sub-content*_0
11122                                            (syntax-content* sub-s_0)))
11123                                       (let ((sub-content_0
11124                                              (if (modified-content?
11125                                                   sub-content*_0)
11126                                                (modified-content-content
11127                                                 sub-content*_0)
11128                                                sub-content*_0)))
11129                                         (let ((scope-propagations+taint_0
11130                                                (propagation-merge
11131                                                 sub-content_0
11132                                                 prop_0
11133                                                 (if (modified-content?
11134                                                      sub-content*_0)
11135                                                   (modified-content-scope-propagations+taint
11136                                                    sub-content*_0)
11137                                                   #f)
11138                                                 (syntax-scopes sub-s_0)
11139                                                 (syntax-shifted-multi-scopes
11140                                                  sub-s_0)
11141                                                 (syntax-mpi-shifts sub-s_0))))
11142                                           (if (syntax?$1 sub-s_0)
11143                                             (let ((scopes41_0
11144                                                    (propagation-apply
11145                                                     prop_0
11146                                                     (syntax-scopes sub-s_0)
11147                                                     s_0)))
11148                                               (let ((shifted-multi-scopes42_0
11149                                                      (propagation-apply-shifted
11150                                                       prop_0
11151                                                       (syntax-shifted-multi-scopes
11152                                                        sub-s_0)
11153                                                       s_0)))
11154                                                 (let ((mpi-shifts43_0
11155                                                        (propagation-apply-mpi-shifts
11156                                                         prop_0
11157                                                         (syntax-mpi-shifts
11158                                                          sub-s_0)
11159                                                         s_0)))
11160                                                   (let ((inspector44_0
11161                                                          (propagation-apply-inspector
11162                                                           prop_0
11163                                                           (syntax-inspector
11164                                                            sub-s_0))))
11165                                                     (let ((content*45_0
11166                                                            (if scope-propagations+taint_0
11167                                                              (modified-content1.1
11168                                                               sub-content_0
11169                                                               scope-propagations+taint_0)
11170                                                              sub-content_0)))
11171                                                       (let ((inspector44_1
11172                                                              inspector44_0)
11173                                                             (mpi-shifts43_1
11174                                                              mpi-shifts43_0)
11175                                                             (shifted-multi-scopes42_1
11176                                                              shifted-multi-scopes42_0)
11177                                                             (scopes41_1
11178                                                              scopes41_0))
11179                                                         (syntax2.1
11180                                                          content*45_0
11181                                                          scopes41_1
11182                                                          shifted-multi-scopes42_1
11183                                                          mpi-shifts43_1
11184                                                          (syntax-srcloc$1
11185                                                           sub-s_0)
11186                                                          (syntax-props
11187                                                           sub-s_0)
11188                                                          inspector44_1)))))))
11189                                             (raise-argument-error
11190                                              'struct-copy
11191                                              "syntax?"
11192                                              sub-s_0))))))))))
11193                           (let ((f_1 f_0))
11194                             (let ((gf_0
11195                                    (|#%name|
11196                                     gf
11197                                     (lambda (tail?_0 v_0)
11198                                       (begin
11199                                         (if (syntax?$1 v_0)
11200                                           (s->_0 v_0)
11201                                           (begin-unsafe (begin v_0))))))))
11202                               (letrec*
11203                                ((loop_0
11204                                  (|#%name|
11205                                   loop
11206                                   (lambda (tail?_0 s_1 prev-depth_0)
11207                                     (begin
11208                                       (let ((depth_0 (fx+ 1 prev-depth_0)))
11209                                         (if (null? s_1)
11210                                           (begin-unsafe (begin s_1))
11211                                           (if (pair? s_1)
11212                                             (let ((x_0
11213                                                    (let ((app_0
11214                                                           (loop_0
11215                                                            #f
11216                                                            (car s_1)
11217                                                            depth_0)))
11218                                                      (cons
11219                                                       app_0
11220                                                       (loop_0
11221                                                        1
11222                                                        (cdr s_1)
11223                                                        depth_0)))))
11224                                               (begin-unsafe (begin x_0)))
11225                                             (if (symbol? s_1)
11226                                               (begin-unsafe (begin s_1))
11227                                               (if (boolean? s_1)
11228                                                 (begin-unsafe (begin s_1))
11229                                                 (if (number? s_1)
11230                                                   (begin-unsafe (begin s_1))
11231                                                   (if (let ((or-part_0
11232                                                              (vector? s_1)))
11233                                                         (if or-part_0
11234                                                           or-part_0
11235                                                           (let ((or-part_1
11236                                                                  (box? s_1)))
11237                                                             (if or-part_1
11238                                                               or-part_1
11239                                                               (let ((or-part_2
11240                                                                      (prefab-struct-key
11241                                                                       s_1)))
11242                                                                 (if or-part_2
11243                                                                   or-part_2
11244                                                                   (hash?
11245                                                                    s_1)))))))
11246                                                     (datum-map-slow
11247                                                      tail?_0
11248                                                      s_1
11249                                                      (lambda (tail?_1 s_2)
11250                                                        (gf_0 tail?_1 s_2))
11251                                                      #f
11252                                                      #f)
11253                                                     (gf_0 #f s_1)))))))))))))
11254                                (loop_0 #f content_0 0))))))
11255                       (let ((f_0
11256                              (|#%name| f (lambda (tail?_0 x_0) (begin x_0)))))
11257                         (let ((s->_0
11258                                (|#%name|
11259                                 s->
11260                                 (lambda (sub-s_0)
11261                                   (begin
11262                                     (let ((t_0
11263                                            (tainted-for-content
11264                                             (syntax-content sub-s_0))))
11265                                       (let ((content*_1
11266                                              (syntax-content* sub-s_0)))
11267                                         (let ((content_1
11268                                                (if (modified-content?
11269                                                     content*_1)
11270                                                  (modified-content-content
11271                                                   content*_1)
11272                                                  content*_1)))
11273                                           (let ((p_0
11274                                                  (if (modified-content?
11275                                                       content*_1)
11276                                                    (modified-content-scope-propagations+taint
11277                                                     content*_1)
11278                                                    #f)))
11279                                             (if (syntax?$1 sub-s_0)
11280                                               (let ((content*46_0
11281                                                      (let ((new-p_0
11282                                                             (if (taint? p_0)
11283                                                               t_0
11284                                                               (|#%app|
11285                                                                (propagation-set-taint-ref
11286                                                                 p_0)
11287                                                                p_0
11288                                                                t_0))))
11289                                                        (if new-p_0
11290                                                          (modified-content1.1
11291                                                           content_1
11292                                                           new-p_0)
11293                                                          content_1))))
11294                                                 (syntax2.1
11295                                                  content*46_0
11296                                                  (syntax-scopes sub-s_0)
11297                                                  (syntax-shifted-multi-scopes
11298                                                   sub-s_0)
11299                                                  (syntax-mpi-shifts sub-s_0)
11300                                                  (syntax-srcloc$1 sub-s_0)
11301                                                  (syntax-props sub-s_0)
11302                                                  (syntax-inspector sub-s_0)))
11303                                               (raise-argument-error
11304                                                'struct-copy
11305                                                "syntax?"
11306                                                sub-s_0)))))))))))
11307                           (let ((f_1 f_0))
11308                             (let ((gf_0
11309                                    (|#%name|
11310                                     gf
11311                                     (lambda (tail?_0 v_0)
11312                                       (begin
11313                                         (if (syntax?$1 v_0)
11314                                           (s->_0 v_0)
11315                                           (begin-unsafe (begin v_0))))))))
11316                               (letrec*
11317                                ((loop_0
11318                                  (|#%name|
11319                                   loop
11320                                   (lambda (tail?_0 s_1 prev-depth_0)
11321                                     (begin
11322                                       (let ((depth_0 (fx+ 1 prev-depth_0)))
11323                                         (if (null? s_1)
11324                                           (begin-unsafe (begin s_1))
11325                                           (if (pair? s_1)
11326                                             (let ((x_0
11327                                                    (let ((app_0
11328                                                           (loop_0
11329                                                            #f
11330                                                            (car s_1)
11331                                                            depth_0)))
11332                                                      (cons
11333                                                       app_0
11334                                                       (loop_0
11335                                                        1
11336                                                        (cdr s_1)
11337                                                        depth_0)))))
11338                                               (begin-unsafe (begin x_0)))
11339                                             (if (symbol? s_1)
11340                                               (begin-unsafe (begin s_1))
11341                                               (if (boolean? s_1)
11342                                                 (begin-unsafe (begin s_1))
11343                                                 (if (number? s_1)
11344                                                   (begin-unsafe (begin s_1))
11345                                                   (if (let ((or-part_0
11346                                                              (vector? s_1)))
11347                                                         (if or-part_0
11348                                                           or-part_0
11349                                                           (let ((or-part_1
11350                                                                  (box? s_1)))
11351                                                             (if or-part_1
11352                                                               or-part_1
11353                                                               (let ((or-part_2
11354                                                                      (prefab-struct-key
11355                                                                       s_1)))
11356                                                                 (if or-part_2
11357                                                                   or-part_2
11358                                                                   (hash?
11359                                                                    s_1)))))))
11360                                                     (datum-map-slow
11361                                                      tail?_0
11362                                                      s_1
11363                                                      (lambda (tail?_1 s_2)
11364                                                        (gf_0 tail?_1 s_2))
11365                                                      #f
11366                                                      #f)
11367                                                     (gf_0 #f s_1)))))))))))))
11368                                (loop_0 #f content_0 0)))))))))
11369                (let ((new-taint_0
11370                       (taint-propagated
11371                        (if (propagation? prop_0)
11372                          (propagation-taint prop_0)
11373                          prop_0))))
11374                  (let ((new-content*_0
11375                         (if new-taint_0
11376                           (modified-content1.1 new-content_0 new-taint_0)
11377                           new-content_0)))
11378                    (if (begin-unsafe
11379                         (unsafe-struct*-cas! s_0 0 content*_0 new-content*_0))
11380                      new-content*_0
11381                      (syntax-propagated-content* s_0))))))
11382            content*_0))))))
11383(define syntax-e$1
11384  (|#%name|
11385   syntax-e
11386   (lambda (s_0)
11387     (begin
11388       (let ((e_0 (syntax-content* s_0)))
11389         (if (symbol? e_0)
11390           e_0
11391           (let ((content*_0 (syntax-propagated-content* s_0)))
11392             (if (modified-content? content*_0)
11393               (modified-content-content content*_0)
11394               content*_0))))))))
11395(define generalize-scope
11396  (lambda (sc_0)
11397    (if (representative-scope? sc_0)
11398      (let ((app_0 (representative-scope-phase sc_0)))
11399        (intern-shifted-multi-scope app_0 (representative-scope-owner sc_0)))
11400      sc_0)))
11401(define add-scope
11402  (lambda (s_0 sc_0)
11403    (let ((sc_1 (generalize-scope sc_0)))
11404      (let ((op_0 set-add))
11405        (let ((sc_2 sc_1))
11406          (let ((content*_0 (syntax-content* s_0)))
11407            (let ((content_0
11408                   (if (modified-content? content*_0)
11409                     (modified-content-content content*_0)
11410                     content*_0)))
11411              (if (shifted-multi-scope? sc_2)
11412                (if (syntax?$1 s_0)
11413                  (let ((shifted-multi-scopes47_0
11414                         (fallback-update-first
11415                          (syntax-shifted-multi-scopes s_0)
11416                          (lambda (smss_0)
11417                            (let ((s_1 (fallback-first smss_0)))
11418                              (begin-unsafe (hash-set s_1 sc_2 #t)))))))
11419                    (let ((content*48_0
11420                           (if (datum-has-elements? content_0)
11421                             (let ((prop_0
11422                                    (propagation-add
11423                                     (if (modified-content? content*_0)
11424                                       (modified-content-scope-propagations+taint
11425                                        content*_0)
11426                                       #f)
11427                                     sc_2
11428                                     (syntax-scopes s_0)
11429                                     (syntax-shifted-multi-scopes s_0)
11430                                     (syntax-mpi-shifts s_0))))
11431                               (if prop_0
11432                                 (modified-content1.1 content_0 prop_0)
11433                                 content_0))
11434                             content*_0)))
11435                      (let ((shifted-multi-scopes47_1
11436                             shifted-multi-scopes47_0))
11437                        (syntax2.1
11438                         content*48_0
11439                         (syntax-scopes s_0)
11440                         shifted-multi-scopes47_1
11441                         (syntax-mpi-shifts s_0)
11442                         (syntax-srcloc$1 s_0)
11443                         (syntax-props s_0)
11444                         (syntax-inspector s_0)))))
11445                  (raise-argument-error 'struct-copy "syntax?" s_0))
11446                (if (syntax?$1 s_0)
11447                  (let ((s_1 (syntax-scopes s_0)))
11448                    (let ((scopes49_0 (begin-unsafe (hash-set s_1 sc_2 #t))))
11449                      (let ((content*50_0
11450                             (if (datum-has-elements? content_0)
11451                               (let ((prop_0
11452                                      (propagation-add
11453                                       (if (modified-content? content*_0)
11454                                         (modified-content-scope-propagations+taint
11455                                          content*_0)
11456                                         #f)
11457                                       sc_2
11458                                       (syntax-scopes s_0)
11459                                       (syntax-shifted-multi-scopes s_0)
11460                                       (syntax-mpi-shifts s_0))))
11461                                 (if prop_0
11462                                   (modified-content1.1 content_0 prop_0)
11463                                   content_0))
11464                               content*_0)))
11465                        (let ((scopes49_1 scopes49_0))
11466                          (syntax2.1
11467                           content*50_0
11468                           scopes49_1
11469                           (syntax-shifted-multi-scopes s_0)
11470                           (syntax-mpi-shifts s_0)
11471                           (syntax-srcloc$1 s_0)
11472                           (syntax-props s_0)
11473                           (syntax-inspector s_0))))))
11474                  (raise-argument-error 'struct-copy "syntax?" s_0))))))))))
11475(define add-scopes
11476  (lambda (s_0 scs_0)
11477    (begin
11478      (letrec*
11479       ((for-loop_0
11480         (|#%name|
11481          for-loop
11482          (lambda (s_1 lst_0)
11483            (begin
11484              (if (pair? lst_0)
11485                (let ((sc_0 (unsafe-car lst_0)))
11486                  (let ((rest_0 (unsafe-cdr lst_0)))
11487                    (let ((s_2
11488                           (let ((s_2 (add-scope s_1 sc_0))) (values s_2))))
11489                      (for-loop_0 s_2 rest_0))))
11490                s_1))))))
11491       (for-loop_0 s_0 scs_0)))))
11492(define remove-scope
11493  (lambda (s_0 sc_0)
11494    (let ((sc_1 (generalize-scope sc_0)))
11495      (let ((op_0 set-remove))
11496        (let ((sc_2 sc_1))
11497          (let ((content*_0 (syntax-content* s_0)))
11498            (let ((content_0
11499                   (if (modified-content? content*_0)
11500                     (modified-content-content content*_0)
11501                     content*_0)))
11502              (if (shifted-multi-scope? sc_2)
11503                (if (syntax?$1 s_0)
11504                  (let ((shifted-multi-scopes51_0
11505                         (fallback-update-first
11506                          (syntax-shifted-multi-scopes s_0)
11507                          (lambda (smss_0)
11508                            (let ((s_1 (fallback-first smss_0)))
11509                              (begin-unsafe (hash-remove s_1 sc_2)))))))
11510                    (let ((content*52_0
11511                           (if (datum-has-elements? content_0)
11512                             (let ((prop_0
11513                                    (propagation-remove
11514                                     (if (modified-content? content*_0)
11515                                       (modified-content-scope-propagations+taint
11516                                        content*_0)
11517                                       #f)
11518                                     sc_2
11519                                     (syntax-scopes s_0)
11520                                     (syntax-shifted-multi-scopes s_0)
11521                                     (syntax-mpi-shifts s_0))))
11522                               (if prop_0
11523                                 (modified-content1.1 content_0 prop_0)
11524                                 content_0))
11525                             content*_0)))
11526                      (let ((shifted-multi-scopes51_1
11527                             shifted-multi-scopes51_0))
11528                        (syntax2.1
11529                         content*52_0
11530                         (syntax-scopes s_0)
11531                         shifted-multi-scopes51_1
11532                         (syntax-mpi-shifts s_0)
11533                         (syntax-srcloc$1 s_0)
11534                         (syntax-props s_0)
11535                         (syntax-inspector s_0)))))
11536                  (raise-argument-error 'struct-copy "syntax?" s_0))
11537                (if (syntax?$1 s_0)
11538                  (let ((s_1 (syntax-scopes s_0)))
11539                    (let ((scopes53_0 (begin-unsafe (hash-remove s_1 sc_2))))
11540                      (let ((content*54_0
11541                             (if (datum-has-elements? content_0)
11542                               (let ((prop_0
11543                                      (propagation-remove
11544                                       (if (modified-content? content*_0)
11545                                         (modified-content-scope-propagations+taint
11546                                          content*_0)
11547                                         #f)
11548                                       sc_2
11549                                       (syntax-scopes s_0)
11550                                       (syntax-shifted-multi-scopes s_0)
11551                                       (syntax-mpi-shifts s_0))))
11552                                 (if prop_0
11553                                   (modified-content1.1 content_0 prop_0)
11554                                   content_0))
11555                               content*_0)))
11556                        (let ((scopes53_1 scopes53_0))
11557                          (syntax2.1
11558                           content*54_0
11559                           scopes53_1
11560                           (syntax-shifted-multi-scopes s_0)
11561                           (syntax-mpi-shifts s_0)
11562                           (syntax-srcloc$1 s_0)
11563                           (syntax-props s_0)
11564                           (syntax-inspector s_0))))))
11565                  (raise-argument-error 'struct-copy "syntax?" s_0))))))))))
11566(define remove-scopes
11567  (lambda (s_0 scs_0)
11568    (begin
11569      (letrec*
11570       ((for-loop_0
11571         (|#%name|
11572          for-loop
11573          (lambda (s_1 lst_0)
11574            (begin
11575              (if (pair? lst_0)
11576                (let ((sc_0 (unsafe-car lst_0)))
11577                  (let ((rest_0 (unsafe-cdr lst_0)))
11578                    (let ((s_2
11579                           (let ((s_2 (remove-scope s_1 sc_0))) (values s_2))))
11580                      (for-loop_0 s_2 rest_0))))
11581                s_1))))))
11582       (for-loop_0 s_0 scs_0)))))
11583(define set-flip
11584  (lambda (s_0 e_0)
11585    (if (begin-unsafe (hash-ref s_0 e_0 #f))
11586      (begin-unsafe (hash-remove s_0 e_0))
11587      (begin-unsafe (hash-set s_0 e_0 #t)))))
11588(define flip-scope
11589  (lambda (s_0 sc_0)
11590    (let ((sc_1 (generalize-scope sc_0)))
11591      (let ((content*_0 (syntax-content* s_0)))
11592        (let ((content_0
11593               (if (modified-content? content*_0)
11594                 (modified-content-content content*_0)
11595                 content*_0)))
11596          (if (shifted-multi-scope? sc_1)
11597            (if (syntax?$1 s_0)
11598              (let ((shifted-multi-scopes55_0
11599                     (fallback-update-first
11600                      (syntax-shifted-multi-scopes s_0)
11601                      (lambda (smss_0)
11602                        (set-flip (fallback-first smss_0) sc_1)))))
11603                (let ((content*56_0
11604                       (if (datum-has-elements? content_0)
11605                         (let ((prop_0
11606                                (propagation-flip
11607                                 (if (modified-content? content*_0)
11608                                   (modified-content-scope-propagations+taint
11609                                    content*_0)
11610                                   #f)
11611                                 sc_1
11612                                 (syntax-scopes s_0)
11613                                 (syntax-shifted-multi-scopes s_0)
11614                                 (syntax-mpi-shifts s_0))))
11615                           (if prop_0
11616                             (modified-content1.1 content_0 prop_0)
11617                             content_0))
11618                         content*_0)))
11619                  (let ((shifted-multi-scopes55_1 shifted-multi-scopes55_0))
11620                    (syntax2.1
11621                     content*56_0
11622                     (syntax-scopes s_0)
11623                     shifted-multi-scopes55_1
11624                     (syntax-mpi-shifts s_0)
11625                     (syntax-srcloc$1 s_0)
11626                     (syntax-props s_0)
11627                     (syntax-inspector s_0)))))
11628              (raise-argument-error 'struct-copy "syntax?" s_0))
11629            (if (syntax?$1 s_0)
11630              (let ((scopes57_0 (set-flip (syntax-scopes s_0) sc_1)))
11631                (let ((content*58_0
11632                       (if (datum-has-elements? content_0)
11633                         (let ((prop_0
11634                                (propagation-flip
11635                                 (if (modified-content? content*_0)
11636                                   (modified-content-scope-propagations+taint
11637                                    content*_0)
11638                                   #f)
11639                                 sc_1
11640                                 (syntax-scopes s_0)
11641                                 (syntax-shifted-multi-scopes s_0)
11642                                 (syntax-mpi-shifts s_0))))
11643                           (if prop_0
11644                             (modified-content1.1 content_0 prop_0)
11645                             content_0))
11646                         content*_0)))
11647                  (let ((scopes57_1 scopes57_0))
11648                    (syntax2.1
11649                     content*58_0
11650                     scopes57_1
11651                     (syntax-shifted-multi-scopes s_0)
11652                     (syntax-mpi-shifts s_0)
11653                     (syntax-srcloc$1 s_0)
11654                     (syntax-props s_0)
11655                     (syntax-inspector s_0)))))
11656              (raise-argument-error 'struct-copy "syntax?" s_0))))))))
11657(define flip-scopes
11658  (lambda (s_0 scs_0)
11659    (begin
11660      (letrec*
11661       ((for-loop_0
11662         (|#%name|
11663          for-loop
11664          (lambda (s_1 lst_0)
11665            (begin
11666              (if (pair? lst_0)
11667                (let ((sc_0 (unsafe-car lst_0)))
11668                  (let ((rest_0 (unsafe-cdr lst_0)))
11669                    (let ((s_2
11670                           (let ((s_2 (flip-scope s_1 sc_0))) (values s_2))))
11671                      (for-loop_0 s_2 rest_0))))
11672                s_1))))))
11673       (for-loop_0 s_0 scs_0)))))
11674(define push-scope
11675  (lambda (s_0 sms_0)
11676    (let ((smss/maybe-fallbacks59_0 #f))
11677      (let ((prev-result_0 #f))
11678        (let ((push_0
11679               (|#%name|
11680                push
11681                (lambda (smss/maybe-fallbacks_0)
11682                  (begin
11683                    (if (eq? smss/maybe-fallbacks59_0 smss/maybe-fallbacks_0)
11684                      prev-result_0
11685                      (let ((r_0
11686                             (let ((smss_0
11687                                    (fallback-first smss/maybe-fallbacks_0)))
11688                               (if (begin-unsafe (zero? (hash-count smss_0)))
11689                                 (begin-unsafe (hash-set smss_0 sms_0 #t))
11690                                 (if (begin-unsafe (hash-ref smss_0 sms_0 #f))
11691                                   smss/maybe-fallbacks_0
11692                                   (fallback-push
11693                                    (begin-unsafe (hash-set smss_0 sms_0 #t))
11694                                    smss/maybe-fallbacks_0))))))
11695                        (begin
11696                          (set! smss/maybe-fallbacks59_0
11697                            smss/maybe-fallbacks_0)
11698                          (set! prev-result_0 r_0)
11699                          r_0))))))))
11700          (let ((f_0 (|#%name| f (lambda (tail?_0 x_0) (begin x_0)))))
11701            (let ((d->s_0
11702                   (|#%name|
11703                    d->s
11704                    (lambda (s_1 d_0)
11705                      (begin
11706                        (if (syntax?$1 s_1)
11707                          (let ((content*60_0 (re-modify-content s_1 d_0)))
11708                            (let ((shifted-multi-scopes61_0
11709                                   (push_0 (syntax-shifted-multi-scopes s_1))))
11710                              (let ((content*60_1 content*60_0))
11711                                (syntax2.1
11712                                 content*60_1
11713                                 (syntax-scopes s_1)
11714                                 shifted-multi-scopes61_0
11715                                 (syntax-mpi-shifts s_1)
11716                                 (syntax-srcloc$1 s_1)
11717                                 (syntax-props s_1)
11718                                 (syntax-inspector s_1)))))
11719                          (raise-argument-error
11720                           'struct-copy
11721                           "syntax?"
11722                           s_1)))))))
11723              (letrec*
11724               ((loop_0
11725                 (|#%name|
11726                  loop
11727                  (lambda (s_1)
11728                    (begin
11729                      (let ((f_1 f_0))
11730                        (let ((gf_0
11731                               (|#%name|
11732                                gf
11733                                (lambda (tail?_0 v_0)
11734                                  (begin
11735                                    (if (syntax?$1 v_0)
11736                                      (d->s_0 v_0 (loop_0 (syntax-e$1 v_0)))
11737                                      (begin-unsafe (begin v_0))))))))
11738                          (letrec*
11739                           ((loop_1
11740                             (|#%name|
11741                              loop
11742                              (lambda (tail?_0 s_2 prev-depth_0)
11743                                (begin
11744                                  (let ((depth_0 (fx+ 1 prev-depth_0)))
11745                                    (if (null? s_2)
11746                                      (begin-unsafe (begin s_2))
11747                                      (if (pair? s_2)
11748                                        (let ((x_0
11749                                               (let ((app_0
11750                                                      (loop_1
11751                                                       #f
11752                                                       (car s_2)
11753                                                       depth_0)))
11754                                                 (cons
11755                                                  app_0
11756                                                  (loop_1
11757                                                   1
11758                                                   (cdr s_2)
11759                                                   depth_0)))))
11760                                          (begin-unsafe (begin x_0)))
11761                                        (if (symbol? s_2)
11762                                          (begin-unsafe (begin s_2))
11763                                          (if (boolean? s_2)
11764                                            (begin-unsafe (begin s_2))
11765                                            (if (number? s_2)
11766                                              (begin-unsafe (begin s_2))
11767                                              (if (let ((or-part_0
11768                                                         (vector? s_2)))
11769                                                    (if or-part_0
11770                                                      or-part_0
11771                                                      (let ((or-part_1
11772                                                             (box? s_2)))
11773                                                        (if or-part_1
11774                                                          or-part_1
11775                                                          (let ((or-part_2
11776                                                                 (prefab-struct-key
11777                                                                  s_2)))
11778                                                            (if or-part_2
11779                                                              or-part_2
11780                                                              (hash? s_2)))))))
11781                                                (datum-map-slow
11782                                                 tail?_0
11783                                                 s_2
11784                                                 (lambda (tail?_1 s_3)
11785                                                   (gf_0 tail?_1 s_3))
11786                                                 #f
11787                                                 #f)
11788                                                (gf_0 #f s_2)))))))))))))
11789                           (loop_1 #f s_1 0)))))))))
11790               (loop_0 s_0)))))))))
11791(define finish_2814
11792  (make-struct-type-install-properties
11793   '(propagation)
11794   7
11795   0
11796   #f
11797   (list
11798    (cons prop:sealed #t)
11799    (cons prop:authentic #t)
11800    (cons
11801     prop:propagation-set-taint
11802     (lambda (p_0 v_0) (propagation-set-taint p_0 v_0)))
11803    (cons prop:propagation-taint (lambda (p_0) (propagation-taint p_0)))
11804    (cons prop:propagation syntax-e$1))
11805   (current-inspector)
11806   #f
11807   '(0 1 2 3 4 5 6)
11808   #f
11809   'propagation))
11810(define struct:propagation
11811  (make-record-type-descriptor*
11812   'propagation
11813   #f
11814   (|#%nongenerative-uid| propagation)
11815   #t
11816   #f
11817   7
11818   0))
11819(define effect_2326 (finish_2814 struct:propagation))
11820(define propagation12.1
11821  (|#%name|
11822   propagation
11823   (record-constructor
11824    (make-record-constructor-descriptor struct:propagation #f #f))))
11825(define propagation?
11826  (|#%name| propagation? (record-predicate struct:propagation)))
11827(define propagation-prev-scs
11828  (|#%name| propagation-prev-scs (record-accessor struct:propagation 0)))
11829(define propagation-prev-smss
11830  (|#%name| propagation-prev-smss (record-accessor struct:propagation 1)))
11831(define propagation-scope-ops
11832  (|#%name| propagation-scope-ops (record-accessor struct:propagation 2)))
11833(define propagation-prev-mss
11834  (|#%name| propagation-prev-mss (record-accessor struct:propagation 3)))
11835(define propagation-add-mpi-shifts
11836  (|#%name| propagation-add-mpi-shifts (record-accessor struct:propagation 4)))
11837(define propagation-inspector
11838  (|#%name| propagation-inspector (record-accessor struct:propagation 5)))
11839(define propagation-taint
11840  (|#%name| propagation-taint (record-accessor struct:propagation 6)))
11841(define propagation-add
11842  (lambda (prop_0 sc_0 prev-scs_0 prev-smss_0 prev-mss_0)
11843    (if (propagation? prop_0)
11844      (if (propagation? prop_0)
11845        (let ((scope-ops63_0
11846               (hash-set (propagation-scope-ops prop_0) sc_0 'add)))
11847          (propagation12.1
11848           (propagation-prev-scs prop_0)
11849           (propagation-prev-smss prop_0)
11850           scope-ops63_0
11851           (propagation-prev-mss prop_0)
11852           (propagation-add-mpi-shifts prop_0)
11853           (propagation-inspector prop_0)
11854           (propagation-taint prop_0)))
11855        (raise-argument-error 'struct-copy "propagation?" prop_0))
11856      (propagation12.1
11857       prev-scs_0
11858       prev-smss_0
11859       (hasheq sc_0 'add)
11860       prev-mss_0
11861       #f
11862       #f
11863       prop_0))))
11864(define propagation-remove
11865  (lambda (prop_0 sc_0 prev-scs_0 prev-smss_0 prev-mss_0)
11866    (if (propagation? prop_0)
11867      (if (propagation? prop_0)
11868        (let ((scope-ops64_0
11869               (hash-set (propagation-scope-ops prop_0) sc_0 'remove)))
11870          (propagation12.1
11871           (propagation-prev-scs prop_0)
11872           (propagation-prev-smss prop_0)
11873           scope-ops64_0
11874           (propagation-prev-mss prop_0)
11875           (propagation-add-mpi-shifts prop_0)
11876           (propagation-inspector prop_0)
11877           (propagation-taint prop_0)))
11878        (raise-argument-error 'struct-copy "propagation?" prop_0))
11879      (propagation12.1
11880       prev-scs_0
11881       prev-smss_0
11882       (hasheq sc_0 'remove)
11883       prev-mss_0
11884       #f
11885       #f
11886       prop_0))))
11887(define propagation-flip
11888  (lambda (prop_0 sc_0 prev-scs_0 prev-smss_0 prev-mss_0)
11889    (if (propagation? prop_0)
11890      (let ((ops_0 (propagation-scope-ops prop_0)))
11891        (let ((current-op_0 (hash-ref ops_0 sc_0 #f)))
11892          (if (if (eq? current-op_0 'flip)
11893                (if (= 1 (hash-count ops_0))
11894                  (if (not (propagation-inspector prop_0))
11895                    (not (propagation-add-mpi-shifts prop_0))
11896                    #f)
11897                  #f)
11898                #f)
11899            (propagation-taint prop_0)
11900            (if (propagation? prop_0)
11901              (let ((scope-ops65_0
11902                     (if (eq? current-op_0 'flip)
11903                       (hash-remove ops_0 sc_0)
11904                       (hash-set
11905                        ops_0
11906                        sc_0
11907                        (if (eq? current-op_0 'add)
11908                          'remove
11909                          (if (eq? current-op_0 'remove) 'add 'flip))))))
11910                (propagation12.1
11911                 (propagation-prev-scs prop_0)
11912                 (propagation-prev-smss prop_0)
11913                 scope-ops65_0
11914                 (propagation-prev-mss prop_0)
11915                 (propagation-add-mpi-shifts prop_0)
11916                 (propagation-inspector prop_0)
11917                 (propagation-taint prop_0)))
11918              (raise-argument-error 'struct-copy "propagation?" prop_0)))))
11919      (propagation12.1
11920       prev-scs_0
11921       prev-smss_0
11922       (hasheq sc_0 'flip)
11923       prev-mss_0
11924       #f
11925       #f
11926       prop_0))))
11927(define propagation-mpi-shift
11928  (lambda (prop_0 add_0 inspector_0 prev-scs_0 prev-smss_0 prev-mss_0)
11929    (if (propagation? prop_0)
11930      (if (propagation? prop_0)
11931        (let ((base-add_0 (propagation-add-mpi-shifts prop_0)))
11932          (let ((add-mpi-shifts66_0
11933                 (if (if add_0 base-add_0 #f)
11934                   (|#%name|
11935                    add-mpi-shifts66
11936                    (lambda (mss_0)
11937                      (begin (|#%app| add_0 (|#%app| base-add_0 mss_0)))))
11938                   (if add_0 add_0 base-add_0))))
11939            (let ((inspector67_0
11940                   (let ((or-part_0 (propagation-inspector prop_0)))
11941                     (if or-part_0 or-part_0 inspector_0))))
11942              (let ((add-mpi-shifts66_1 add-mpi-shifts66_0))
11943                (propagation12.1
11944                 (propagation-prev-scs prop_0)
11945                 (propagation-prev-smss prop_0)
11946                 (propagation-scope-ops prop_0)
11947                 (propagation-prev-mss prop_0)
11948                 add-mpi-shifts66_1
11949                 inspector67_0
11950                 (propagation-taint prop_0))))))
11951        (raise-argument-error 'struct-copy "propagation?" prop_0))
11952      (propagation12.1
11953       prev-scs_0
11954       prev-smss_0
11955       hash2610
11956       prev-mss_0
11957       add_0
11958       inspector_0
11959       prop_0))))
11960(define propagation-apply
11961  (lambda (prop_0 scs_0 parent-s_0)
11962    (if (eq? (propagation-prev-scs prop_0) scs_0)
11963      (syntax-scopes parent-s_0)
11964      (let ((ht_0 (propagation-scope-ops prop_0)))
11965        (let ((new-scs_0
11966               (begin
11967                 (letrec*
11968                  ((for-loop_0
11969                    (|#%name|
11970                     for-loop
11971                     (lambda (scs_1 i_0)
11972                       (begin
11973                         (if i_0
11974                           (call-with-values
11975                            (lambda ()
11976                              (unsafe-immutable-hash-iterate-key+value
11977                               ht_0
11978                               i_0))
11979                            (case-lambda
11980                             ((sc_0 op_0)
11981                              (let ((scs_2
11982                                     (if (not (shifted-multi-scope? sc_0))
11983                                       (let ((scs_2
11984                                              (if (eq? op_0 'add)
11985                                                (begin-unsafe
11986                                                 (hash-set scs_1 sc_0 #t))
11987                                                (if (eq? op_0 'remove)
11988                                                  (begin-unsafe
11989                                                   (hash-remove scs_1 sc_0))
11990                                                  (set-flip scs_1 sc_0)))))
11991                                         (values scs_2))
11992                                       scs_1)))
11993                                (for-loop_0
11994                                 scs_2
11995                                 (unsafe-immutable-hash-iterate-next
11996                                  ht_0
11997                                  i_0))))
11998                             (args (raise-binding-result-arity-error 2 args))))
11999                           scs_1))))))
12000                  (for-loop_0
12001                   scs_0
12002                   (unsafe-immutable-hash-iterate-first ht_0))))))
12003          (if (set=? new-scs_0 (syntax-scopes parent-s_0))
12004            (syntax-scopes parent-s_0)
12005            (cache-or-reuse-set new-scs_0)))))))
12006(define propagation-apply-shifted
12007  (lambda (prop_0 smss_0 parent-s_0)
12008    (if (eq? (propagation-prev-smss prop_0) smss_0)
12009      (syntax-shifted-multi-scopes parent-s_0)
12010      (let ((ht_0 (propagation-scope-ops prop_0)))
12011        (let ((new-smss_0
12012               (begin
12013                 (letrec*
12014                  ((for-loop_0
12015                    (|#%name|
12016                     for-loop
12017                     (lambda (smss_1 i_0)
12018                       (begin
12019                         (if i_0
12020                           (call-with-values
12021                            (lambda ()
12022                              (unsafe-immutable-hash-iterate-key+value
12023                               ht_0
12024                               i_0))
12025                            (case-lambda
12026                             ((sms_0 op_0)
12027                              (let ((smss_2
12028                                     (if (shifted-multi-scope? sms_0)
12029                                       (let ((smss_2
12030                                              (fallback-update-first
12031                                               smss_1
12032                                               (lambda (smss_2)
12033                                                 (if (eq? op_0 'add)
12034                                                   (begin-unsafe
12035                                                    (hash-set smss_2 sms_0 #t))
12036                                                   (if (eq? op_0 'remove)
12037                                                     (begin-unsafe
12038                                                      (hash-remove
12039                                                       smss_2
12040                                                       sms_0))
12041                                                     (set-flip
12042                                                      smss_2
12043                                                      sms_0)))))))
12044                                         (values smss_2))
12045                                       smss_1)))
12046                                (for-loop_0
12047                                 smss_2
12048                                 (unsafe-immutable-hash-iterate-next
12049                                  ht_0
12050                                  i_0))))
12051                             (args (raise-binding-result-arity-error 2 args))))
12052                           smss_1))))))
12053                  (for-loop_0
12054                   smss_0
12055                   (unsafe-immutable-hash-iterate-first ht_0))))))
12056          (let ((parent-smss_0 (syntax-shifted-multi-scopes parent-s_0)))
12057            (if (if (begin-unsafe (hash? new-smss_0))
12058                  (if (begin-unsafe (hash? parent-smss_0))
12059                    (set=? new-smss_0 parent-smss_0)
12060                    #f)
12061                  #f)
12062              parent-smss_0
12063              (cache-or-reuse-hash new-smss_0))))))))
12064(define propagation-apply-mpi-shifts
12065  (lambda (prop_0 mss_0 parent-s_0)
12066    (if (eq? (propagation-prev-mss prop_0) mss_0)
12067      (syntax-mpi-shifts parent-s_0)
12068      (let ((add_0 (propagation-add-mpi-shifts prop_0)))
12069        (if add_0 (|#%app| add_0 mss_0) mss_0)))))
12070(define propagation-apply-inspector
12071  (lambda (prop_0 i_0) (if i_0 i_0 (propagation-inspector prop_0))))
12072(define propagation-set-taint
12073  (lambda (prop_0 t_0)
12074    (if (propagation? prop_0)
12075      (if (propagation? prop_0)
12076        (propagation12.1
12077         (propagation-prev-scs prop_0)
12078         (propagation-prev-smss prop_0)
12079         (propagation-scope-ops prop_0)
12080         (propagation-prev-mss prop_0)
12081         (propagation-add-mpi-shifts prop_0)
12082         (propagation-inspector prop_0)
12083         t_0)
12084        (raise-argument-error 'struct-copy "propagation?" prop_0))
12085      t_0)))
12086(define propagation-merge
12087  (lambda (content_0 prop_0 base-prop_0 prev-scs_0 prev-smss_0 prev-mss_0)
12088    (if (not (datum-has-elements? content_0))
12089      (if (propagation-taint prop_0) 'tainted base-prop_0)
12090      (if (not (propagation? base-prop_0))
12091        (if (if (eq? (propagation-prev-scs prop_0) prev-scs_0)
12092              (if (eq? (propagation-prev-smss prop_0) prev-smss_0)
12093                (if (eq? (propagation-prev-mss prop_0) prev-mss_0)
12094                  (eq? (propagation-taint prop_0) base-prop_0)
12095                  #f)
12096                #f)
12097              #f)
12098          prop_0
12099          (propagation12.1
12100           prev-scs_0
12101           prev-smss_0
12102           (propagation-scope-ops prop_0)
12103           prev-mss_0
12104           (propagation-add-mpi-shifts prop_0)
12105           (propagation-inspector prop_0)
12106           (if (propagation-taint prop_0)
12107             'tainted/need-propagate
12108             base-prop_0)))
12109        (let ((ht_0 (propagation-scope-ops prop_0)))
12110          (let ((new-ops_0
12111                 (begin
12112                   (letrec*
12113                    ((for-loop_0
12114                      (|#%name|
12115                       for-loop
12116                       (lambda (ops_0 i_0)
12117                         (begin
12118                           (if i_0
12119                             (call-with-values
12120                              (lambda ()
12121                                (unsafe-immutable-hash-iterate-key+value
12122                                 ht_0
12123                                 i_0))
12124                              (case-lambda
12125                               ((sc_0 op_0)
12126                                (let ((ops_1
12127                                       (let ((ops_1
12128                                              (if (eq? op_0 'add)
12129                                                (hash-set ops_0 sc_0 'add)
12130                                                (if (eq? op_0 'remove)
12131                                                  (hash-set ops_0 sc_0 'remove)
12132                                                  (let ((current-op_0
12133                                                         (hash-ref
12134                                                          ops_0
12135                                                          sc_0
12136                                                          #f)))
12137                                                    (if (eq? current-op_0 'add)
12138                                                      (hash-set
12139                                                       ops_0
12140                                                       sc_0
12141                                                       'remove)
12142                                                      (if (eq?
12143                                                           current-op_0
12144                                                           'remove)
12145                                                        (hash-set
12146                                                         ops_0
12147                                                         sc_0
12148                                                         'add)
12149                                                        (if (eq?
12150                                                             current-op_0
12151                                                             'flip)
12152                                                          (hash-remove
12153                                                           ops_0
12154                                                           sc_0)
12155                                                          (hash-set
12156                                                           ops_0
12157                                                           sc_0
12158                                                           'flip)))))))))
12159                                         (values ops_1))))
12160                                  (for-loop_0
12161                                   ops_1
12162                                   (unsafe-immutable-hash-iterate-next
12163                                    ht_0
12164                                    i_0))))
12165                               (args
12166                                (raise-binding-result-arity-error 2 args))))
12167                             ops_0))))))
12168                    (for-loop_0
12169                     (propagation-scope-ops base-prop_0)
12170                     (unsafe-immutable-hash-iterate-first ht_0))))))
12171            (let ((add_0 (propagation-add-mpi-shifts prop_0)))
12172              (let ((base-add_0 (propagation-add-mpi-shifts base-prop_0)))
12173                (let ((new-taint_0
12174                       (if (let ((or-part_0 (propagation-taint prop_0)))
12175                             (if or-part_0
12176                               or-part_0
12177                               (propagation-taint base-prop_0)))
12178                         'tainted/need-propagate
12179                         (propagation-taint base-prop_0))))
12180                  (if (if (zero? (hash-count new-ops_0))
12181                        (if (not add_0)
12182                          (if (not base-add_0)
12183                            (if (not (propagation-inspector prop_0))
12184                              (not (propagation-inspector base-prop_0))
12185                              #f)
12186                            #f)
12187                          #f)
12188                        #f)
12189                    new-taint_0
12190                    (if (propagation? base-prop_0)
12191                      (let ((add-mpi-shifts70_0
12192                             (if (if add_0 base-add_0 #f)
12193                               (|#%name|
12194                                add-mpi-shifts70
12195                                (lambda (mss_0)
12196                                  (begin
12197                                    (|#%app|
12198                                     add_0
12199                                     (|#%app| base-add_0 mss_0)))))
12200                               (if add_0 add_0 base-add_0))))
12201                        (let ((inspector71_0
12202                               (let ((or-part_0
12203                                      (propagation-inspector base-prop_0)))
12204                                 (if or-part_0
12205                                   or-part_0
12206                                   (propagation-inspector prop_0)))))
12207                          (let ((add-mpi-shifts70_1 add-mpi-shifts70_0))
12208                            (propagation12.1
12209                             (propagation-prev-scs base-prop_0)
12210                             (propagation-prev-smss base-prop_0)
12211                             new-ops_0
12212                             (propagation-prev-mss base-prop_0)
12213                             add-mpi-shifts70_1
12214                             inspector71_0
12215                             new-taint_0))))
12216                      (raise-argument-error
12217                       'struct-copy
12218                       "propagation?"
12219                       base-prop_0))))))))))))
12220(define shift-multi-scope
12221  (lambda (sms_0 delta_0)
12222    (if (begin-unsafe (eq? delta_0 0))
12223      sms_0
12224      (if (begin-unsafe (not delta_0))
12225        (if (shifted-to-label-phase? (shifted-multi-scope-phase sms_0))
12226          #f
12227          (intern-shifted-multi-scope
12228           (shifted-to-label-phase6.1
12229            (phase- 0 (shifted-multi-scope-phase sms_0)))
12230           (shifted-multi-scope-multi-scope sms_0)))
12231        (if (shifted-to-label-phase? (shifted-multi-scope-phase sms_0))
12232          sms_0
12233          (intern-shifted-multi-scope
12234           (phase+ delta_0 (shifted-multi-scope-phase sms_0))
12235           (shifted-multi-scope-multi-scope sms_0)))))))
12236(define syntax-shift-phase-level$1
12237  (|#%name|
12238   syntax-shift-phase-level
12239   (lambda (s_0 phase_0)
12240     (begin
12241       (if (eqv? phase_0 0)
12242         s_0
12243         (let ((smss73_0 #f))
12244           (let ((prev-result_0 #f))
12245             (let ((shift-all_0
12246                    (|#%name|
12247                     shift-all
12248                     (lambda (smss_0)
12249                       (begin
12250                         (if (eq? smss73_0 smss_0)
12251                           prev-result_0
12252                           (let ((r_0
12253                                  (fallback-map
12254                                   smss_0
12255                                   (lambda (smss_1)
12256                                     (begin
12257                                       (letrec*
12258                                        ((for-loop_0
12259                                          (|#%name|
12260                                           for-loop
12261                                           (lambda (table_0 i_0)
12262                                             (begin
12263                                               (if i_0
12264                                                 (let ((sms_0
12265                                                        (unsafe-immutable-hash-iterate-key
12266                                                         smss_1
12267                                                         i_0)))
12268                                                   (let ((table_1
12269                                                          (let ((id*_0
12270                                                                 (shift-multi-scope
12271                                                                  sms_0
12272                                                                  phase_0)))
12273                                                            (begin
12274                                                              #t
12275                                                              (letrec*
12276                                                               ((for-loop_1
12277                                                                 (|#%name|
12278                                                                  for-loop
12279                                                                  (lambda (table_1)
12280                                                                    (begin
12281                                                                      (let ((table_2
12282                                                                             (if id*_0
12283                                                                               (let ((table_2
12284                                                                                      (call-with-values
12285                                                                                       (lambda ()
12286                                                                                         (values
12287                                                                                          id*_0
12288                                                                                          #t))
12289                                                                                       (case-lambda
12290                                                                                        ((key_0
12291                                                                                          val_0)
12292                                                                                         (hash-set
12293                                                                                          table_1
12294                                                                                          key_0
12295                                                                                          val_0))
12296                                                                                        (args
12297                                                                                         (raise-binding-result-arity-error
12298                                                                                          2
12299                                                                                          args))))))
12300                                                                                 (values
12301                                                                                  table_2))
12302                                                                               table_1)))
12303                                                                        table_2))))))
12304                                                               (for-loop_1
12305                                                                table_0))))))
12306                                                     (for-loop_0
12307                                                      table_1
12308                                                      (unsafe-immutable-hash-iterate-next
12309                                                       smss_1
12310                                                       i_0))))
12311                                                 table_0))))))
12312                                        (for-loop_0
12313                                         hash2610
12314                                         (unsafe-immutable-hash-iterate-first
12315                                          smss_1))))))))
12316                             (begin
12317                               (set! smss73_0 smss_0)
12318                               (set! prev-result_0 r_0)
12319                               r_0))))))))
12320               (let ((f_0 (|#%name| f (lambda (tail?_0 d_0) (begin d_0)))))
12321                 (let ((d->s_0
12322                        (|#%name|
12323                         d->s
12324                         (lambda (s_1 d_0)
12325                           (begin
12326                             (if (syntax?$1 s_1)
12327                               (let ((content*74_0
12328                                      (re-modify-content s_1 d_0)))
12329                                 (let ((shifted-multi-scopes75_0
12330                                        (shift-all_0
12331                                         (syntax-shifted-multi-scopes s_1))))
12332                                   (let ((content*74_1 content*74_0))
12333                                     (syntax2.1
12334                                      content*74_1
12335                                      (syntax-scopes s_1)
12336                                      shifted-multi-scopes75_0
12337                                      (syntax-mpi-shifts s_1)
12338                                      (syntax-srcloc$1 s_1)
12339                                      (syntax-props s_1)
12340                                      (syntax-inspector s_1)))))
12341                               (raise-argument-error
12342                                'struct-copy
12343                                "syntax?"
12344                                s_1)))))))
12345                   (letrec*
12346                    ((loop_0
12347                      (|#%name|
12348                       loop
12349                       (lambda (s_1)
12350                         (begin
12351                           (let ((f_1 f_0))
12352                             (let ((gf_0
12353                                    (|#%name|
12354                                     gf
12355                                     (lambda (tail?_0 v_0)
12356                                       (begin
12357                                         (if (syntax?$1 v_0)
12358                                           (d->s_0
12359                                            v_0
12360                                            (loop_0 (syntax-e$1 v_0)))
12361                                           (begin-unsafe (begin v_0))))))))
12362                               (letrec*
12363                                ((loop_1
12364                                  (|#%name|
12365                                   loop
12366                                   (lambda (tail?_0 s_2 prev-depth_0)
12367                                     (begin
12368                                       (let ((depth_0 (fx+ 1 prev-depth_0)))
12369                                         (if (null? s_2)
12370                                           (begin-unsafe (begin s_2))
12371                                           (if (pair? s_2)
12372                                             (let ((d_0
12373                                                    (let ((app_0
12374                                                           (loop_1
12375                                                            #f
12376                                                            (car s_2)
12377                                                            depth_0)))
12378                                                      (cons
12379                                                       app_0
12380                                                       (loop_1
12381                                                        1
12382                                                        (cdr s_2)
12383                                                        depth_0)))))
12384                                               (begin-unsafe (begin d_0)))
12385                                             (if (symbol? s_2)
12386                                               (begin-unsafe (begin s_2))
12387                                               (if (boolean? s_2)
12388                                                 (begin-unsafe (begin s_2))
12389                                                 (if (number? s_2)
12390                                                   (begin-unsafe (begin s_2))
12391                                                   (if (let ((or-part_0
12392                                                              (vector? s_2)))
12393                                                         (if or-part_0
12394                                                           or-part_0
12395                                                           (let ((or-part_1
12396                                                                  (box? s_2)))
12397                                                             (if or-part_1
12398                                                               or-part_1
12399                                                               (let ((or-part_2
12400                                                                      (prefab-struct-key
12401                                                                       s_2)))
12402                                                                 (if or-part_2
12403                                                                   or-part_2
12404                                                                   (hash?
12405                                                                    s_2)))))))
12406                                                     (datum-map-slow
12407                                                      tail?_0
12408                                                      s_2
12409                                                      (lambda (tail?_1 s_3)
12410                                                        (gf_0 tail?_1 s_3))
12411                                                      #f
12412                                                      #f)
12413                                                     (gf_0 #f s_2)))))))))))))
12414                                (loop_1 #f s_1 0)))))))))
12415                    (loop_0 s_0))))))))))))
12416(define syntax-swap-scopes
12417  (lambda (s_0 src-scopes_0 dest-scopes_0)
12418    (if (equal? src-scopes_0 dest-scopes_0)
12419      s_0
12420      (call-with-values
12421       (lambda ()
12422         (let ((app_0
12423                (begin
12424                  (letrec*
12425                   ((for-loop_0
12426                     (|#%name|
12427                      for-loop
12428                      (lambda (table_0 i_0)
12429                        (begin
12430                          (if i_0
12431                            (let ((sc_0
12432                                   (unsafe-immutable-hash-iterate-key
12433                                    src-scopes_0
12434                                    i_0)))
12435                              (let ((table_1
12436                                     (let ((table_1
12437                                            (call-with-values
12438                                             (lambda ()
12439                                               (values
12440                                                (generalize-scope sc_0)
12441                                                #t))
12442                                             (case-lambda
12443                                              ((key_0 val_0)
12444                                               (hash-set table_0 key_0 val_0))
12445                                              (args
12446                                               (raise-binding-result-arity-error
12447                                                2
12448                                                args))))))
12449                                       (values table_1))))
12450                                (for-loop_0
12451                                 table_1
12452                                 (unsafe-immutable-hash-iterate-next
12453                                  src-scopes_0
12454                                  i_0))))
12455                            table_0))))))
12456                   (for-loop_0
12457                    hash2610
12458                    (unsafe-immutable-hash-iterate-first src-scopes_0))))))
12459           (let ((app_1 (seteq)))
12460             (set-partition app_0 shifted-multi-scope? app_1 (seteq)))))
12461       (case-lambda
12462        ((src-smss_0 src-scs_0)
12463         (call-with-values
12464          (lambda ()
12465            (let ((app_0
12466                   (begin
12467                     (letrec*
12468                      ((for-loop_0
12469                        (|#%name|
12470                         for-loop
12471                         (lambda (table_0 i_0)
12472                           (begin
12473                             (if i_0
12474                               (let ((sc_0
12475                                      (unsafe-immutable-hash-iterate-key
12476                                       dest-scopes_0
12477                                       i_0)))
12478                                 (let ((table_1
12479                                        (let ((table_1
12480                                               (call-with-values
12481                                                (lambda ()
12482                                                  (values
12483                                                   (generalize-scope sc_0)
12484                                                   #t))
12485                                                (case-lambda
12486                                                 ((key_0 val_0)
12487                                                  (hash-set
12488                                                   table_0
12489                                                   key_0
12490                                                   val_0))
12491                                                 (args
12492                                                  (raise-binding-result-arity-error
12493                                                   2
12494                                                   args))))))
12495                                          (values table_1))))
12496                                   (for-loop_0
12497                                    table_1
12498                                    (unsafe-immutable-hash-iterate-next
12499                                     dest-scopes_0
12500                                     i_0))))
12501                               table_0))))))
12502                      (for-loop_0
12503                       hash2610
12504                       (unsafe-immutable-hash-iterate-first dest-scopes_0))))))
12505              (let ((app_1 (seteq)))
12506                (set-partition app_0 shifted-multi-scope? app_1 (seteq)))))
12507          (case-lambda
12508           ((dest-smss_0 dest-scs_0)
12509            (let ((src-smss_1 src-smss_0) (src-scs_1 src-scs_0))
12510              (let ((scs76_0 #f))
12511                (let ((prev-result_0 #f))
12512                  (let ((swap-scs_0
12513                         (|#%name|
12514                          swap-scs
12515                          (lambda (scs_0)
12516                            (begin
12517                              (if (eq? scs76_0 scs_0)
12518                                prev-result_0
12519                                (let ((r_0
12520                                       (if (begin-unsafe
12521                                            (hash-keys-subset?
12522                                             src-scs_1
12523                                             scs_0))
12524                                         (set-union
12525                                          (set-subtract scs_0 src-scs_1)
12526                                          dest-scs_0)
12527                                         scs_0)))
12528                                  (begin
12529                                    (set! scs76_0 scs_0)
12530                                    (set! prev-result_0 r_0)
12531                                    r_0))))))))
12532                    (let ((smss77_0 #f))
12533                      (let ((prev-result_1 #f))
12534                        (let ((swap-smss_0
12535                               (|#%name|
12536                                swap-smss
12537                                (lambda (smss_0)
12538                                  (begin
12539                                    (if (eq? smss77_0 smss_0)
12540                                      prev-result_1
12541                                      (let ((r_0
12542                                             (fallback-update-first
12543                                              smss_0
12544                                              (lambda (smss_1)
12545                                                (if (begin-unsafe
12546                                                     (hash-keys-subset?
12547                                                      src-smss_1
12548                                                      smss_1))
12549                                                  (set-union
12550                                                   (set-subtract
12551                                                    smss_1
12552                                                    src-smss_1)
12553                                                   dest-smss_0)
12554                                                  smss_1)))))
12555                                        (begin
12556                                          (set! smss77_0 smss_0)
12557                                          (set! prev-result_1 r_0)
12558                                          r_0))))))))
12559                          (let ((f_0
12560                                 (|#%name|
12561                                  f
12562                                  (lambda (tail?_0 d_0) (begin d_0)))))
12563                            (let ((d->s_0
12564                                   (|#%name|
12565                                    d->s
12566                                    (lambda (s_1 d_0)
12567                                      (begin
12568                                        (if (syntax?$1 s_1)
12569                                          (let ((content*78_0
12570                                                 (re-modify-content s_1 d_0)))
12571                                            (let ((scopes79_0
12572                                                   (swap-scs_0
12573                                                    (syntax-scopes s_1))))
12574                                              (let ((shifted-multi-scopes80_0
12575                                                     (swap-smss_0
12576                                                      (syntax-shifted-multi-scopes
12577                                                       s_1))))
12578                                                (let ((scopes79_1 scopes79_0)
12579                                                      (content*78_1
12580                                                       content*78_0))
12581                                                  (syntax2.1
12582                                                   content*78_1
12583                                                   scopes79_1
12584                                                   shifted-multi-scopes80_0
12585                                                   (syntax-mpi-shifts s_1)
12586                                                   (syntax-srcloc$1 s_1)
12587                                                   (syntax-props s_1)
12588                                                   (syntax-inspector s_1))))))
12589                                          (raise-argument-error
12590                                           'struct-copy
12591                                           "syntax?"
12592                                           s_1)))))))
12593                              (letrec*
12594                               ((loop_0
12595                                 (|#%name|
12596                                  loop
12597                                  (lambda (s_1)
12598                                    (begin
12599                                      (let ((f_1 f_0))
12600                                        (let ((gf_0
12601                                               (|#%name|
12602                                                gf
12603                                                (lambda (tail?_0 v_0)
12604                                                  (begin
12605                                                    (if (syntax?$1 v_0)
12606                                                      (d->s_0
12607                                                       v_0
12608                                                       (loop_0
12609                                                        (syntax-e$1 v_0)))
12610                                                      (begin-unsafe
12611                                                       (begin v_0))))))))
12612                                          (letrec*
12613                                           ((loop_1
12614                                             (|#%name|
12615                                              loop
12616                                              (lambda (tail?_0
12617                                                       s_2
12618                                                       prev-depth_0)
12619                                                (begin
12620                                                  (let ((depth_0
12621                                                         (fx+ 1 prev-depth_0)))
12622                                                    (if (null? s_2)
12623                                                      (begin-unsafe
12624                                                       (begin s_2))
12625                                                      (if (pair? s_2)
12626                                                        (let ((d_0
12627                                                               (let ((app_0
12628                                                                      (loop_1
12629                                                                       #f
12630                                                                       (car
12631                                                                        s_2)
12632                                                                       depth_0)))
12633                                                                 (cons
12634                                                                  app_0
12635                                                                  (loop_1
12636                                                                   1
12637                                                                   (cdr s_2)
12638                                                                   depth_0)))))
12639                                                          (begin-unsafe
12640                                                           (begin d_0)))
12641                                                        (if (symbol? s_2)
12642                                                          (begin-unsafe
12643                                                           (begin s_2))
12644                                                          (if (boolean? s_2)
12645                                                            (begin-unsafe
12646                                                             (begin s_2))
12647                                                            (if (number? s_2)
12648                                                              (begin-unsafe
12649                                                               (begin s_2))
12650                                                              (if (let ((or-part_0
12651                                                                         (vector?
12652                                                                          s_2)))
12653                                                                    (if or-part_0
12654                                                                      or-part_0
12655                                                                      (let ((or-part_1
12656                                                                             (box?
12657                                                                              s_2)))
12658                                                                        (if or-part_1
12659                                                                          or-part_1
12660                                                                          (let ((or-part_2
12661                                                                                 (prefab-struct-key
12662                                                                                  s_2)))
12663                                                                            (if or-part_2
12664                                                                              or-part_2
12665                                                                              (hash?
12666                                                                               s_2)))))))
12667                                                                (datum-map-slow
12668                                                                 tail?_0
12669                                                                 s_2
12670                                                                 (lambda (tail?_1
12671                                                                          s_3)
12672                                                                   (gf_0
12673                                                                    tail?_1
12674                                                                    s_3))
12675                                                                 #f
12676                                                                 #f)
12677                                                                (gf_0
12678                                                                 #f
12679                                                                 s_2)))))))))))))
12680                                           (loop_1 #f s_1 0)))))))))
12681                               (loop_0 s_0))))))))))))
12682           (args (raise-binding-result-arity-error 2 args)))))
12683        (args (raise-binding-result-arity-error 2 args)))))))
12684(define syntax-scope-set
12685  (lambda (s_0 phase_0)
12686    (scope-set-at-fallback
12687     s_0
12688     (fallback-first (syntax-shifted-multi-scopes s_0))
12689     phase_0)))
12690(define scope-set-at-fallback
12691  (lambda (s_0 smss_0 phase_0)
12692    (begin
12693      (letrec*
12694       ((for-loop_0
12695         (|#%name|
12696          for-loop
12697          (lambda (scopes_0 i_0)
12698            (begin
12699              (if i_0
12700                (let ((sms_0 (unsafe-immutable-hash-iterate-key smss_0 i_0)))
12701                  (let ((scopes_1
12702                         (if (let ((or-part_0 (begin-unsafe (not phase_0))))
12703                               (if or-part_0
12704                                 or-part_0
12705                                 (not
12706                                  (shifted-to-label-phase?
12707                                   (shifted-multi-scope-phase sms_0)))))
12708                           (let ((scopes_1
12709                                  (let ((e_0
12710                                         (multi-scope-to-scope-at-phase
12711                                          (shifted-multi-scope-multi-scope
12712                                           sms_0)
12713                                          (let ((ph_0
12714                                                 (shifted-multi-scope-phase
12715                                                  sms_0)))
12716                                            (if (shifted-to-label-phase? ph_0)
12717                                              (shifted-to-label-phase-from
12718                                               ph_0)
12719                                              (phase- ph_0 phase_0))))))
12720                                    (begin-unsafe
12721                                     (hash-set scopes_0 e_0 #t)))))
12722                             (values scopes_1))
12723                           scopes_0)))
12724                    (for-loop_0
12725                     scopes_1
12726                     (unsafe-immutable-hash-iterate-next smss_0 i_0))))
12727                scopes_0))))))
12728       (for-loop_0
12729        (syntax-scopes s_0)
12730        (unsafe-immutable-hash-iterate-first smss_0))))))
12731(define find-max-scope
12732  (lambda (scopes_0)
12733    (begin
12734      (if (begin-unsafe (zero? (hash-count scopes_0)))
12735        (error "cannot bind in empty scope set")
12736        (void))
12737      (begin
12738        (letrec*
12739         ((for-loop_0
12740           (|#%name|
12741            for-loop
12742            (lambda (max-sc_0 i_0)
12743              (begin
12744                (if i_0
12745                  (let ((sc_0
12746                         (unsafe-immutable-hash-iterate-key scopes_0 i_0)))
12747                    (let ((max-sc_1
12748                           (let ((max-sc_1
12749                                  (if (begin-unsafe
12750                                       (> (scope-id sc_0) (scope-id max-sc_0)))
12751                                    sc_0
12752                                    max-sc_0)))
12753                             (values max-sc_1))))
12754                      (for-loop_0
12755                       max-sc_1
12756                       (unsafe-immutable-hash-iterate-next scopes_0 i_0))))
12757                  max-sc_0))))))
12758         (for-loop_0
12759          (set-first scopes_0)
12760          (unsafe-immutable-hash-iterate-first scopes_0)))))))
12761(define add-binding-in-scopes!.1
12762  (|#%name|
12763   add-binding-in-scopes!
12764   (lambda (just-for-nominal?13_0 scopes15_0 sym16_0 binding17_0)
12765     (begin
12766       (let ((max-sc_0 (find-max-scope scopes15_0)))
12767         (let ((bt_0
12768                (binding-table-add
12769                 (scope-binding-table max-sc_0)
12770                 scopes15_0
12771                 sym16_0
12772                 binding17_0
12773                 just-for-nominal?13_0)))
12774           (begin
12775             (set-scope-binding-table! max-sc_0 bt_0)
12776             (clear-resolve-cache! sym16_0))))))))
12777(define add-bulk-binding-in-scopes!.1
12778  (|#%name|
12779   add-bulk-binding-in-scopes!
12780   (lambda (shadow-except19_0 scopes21_0 bulk-binding22_0)
12781     (begin
12782       (let ((max-sc_0 (find-max-scope scopes21_0)))
12783         (let ((bt_0
12784                (let ((temp81_0 (scope-binding-table max-sc_0)))
12785                  (binding-table-add-bulk.1
12786                   shadow-except19_0
12787                   temp81_0
12788                   scopes21_0
12789                   bulk-binding22_0))))
12790           (begin
12791             (set-scope-binding-table! max-sc_0 bt_0)
12792             (clear-resolve-cache!))))))))
12793(define syntax-any-macro-scopes?
12794  (lambda (s_0)
12795    (let ((ht_0 (syntax-scopes s_0)))
12796      (begin
12797        (letrec*
12798         ((for-loop_0
12799           (|#%name|
12800            for-loop
12801            (lambda (result_0 i_0)
12802              (begin
12803                (if i_0
12804                  (let ((sc_0 (unsafe-immutable-hash-iterate-key ht_0 i_0)))
12805                    (let ((result_1 (eq? (scope-kind sc_0) 'macro)))
12806                      (let ((result_2 (values result_1)))
12807                        (if (if (not (let ((x_0 (list sc_0))) result_2)) #t #f)
12808                          (for-loop_0
12809                           result_2
12810                           (unsafe-immutable-hash-iterate-next ht_0 i_0))
12811                          result_2))))
12812                  result_0))))))
12813         (for-loop_0 #f (unsafe-immutable-hash-iterate-first ht_0)))))))
12814(define resolve.1
12815  (|#%name|
12816   resolve
12817   (lambda (ambiguous-value24_0
12818            exactly?25_0
12819            extra-shifts27_0
12820            get-scopes?26_0
12821            s32_0
12822            phase33_0)
12823     (begin
12824       (let ((sym_0 (syntax-content s32_0)))
12825         (letrec*
12826          ((fallback-loop_0
12827            (|#%name|
12828             fallback-loop
12829             (lambda (smss_0)
12830               (begin
12831                 (let ((c1_0
12832                        (if (not exactly?25_0)
12833                          (if (not get-scopes?26_0)
12834                            (resolve-cache-get
12835                             sym_0
12836                             phase33_0
12837                             (syntax-scopes s32_0)
12838                             (fallback-first smss_0))
12839                            #f)
12840                          #f)))
12841                   (if c1_0
12842                     (if (eq? c1_0 kw2450)
12843                       (if (fallback? smss_0)
12844                         (fallback-loop_0 (fallback-rest smss_0))
12845                         #f)
12846                       c1_0)
12847                     (let ((scopes_0
12848                            (scope-set-at-fallback
12849                             s32_0
12850                             (fallback-first smss_0)
12851                             phase33_0)))
12852                       (call-with-values
12853                        (lambda ()
12854                          (begin
12855                            (letrec*
12856                             ((for-loop_0
12857                               (|#%name|
12858                                for-loop
12859                                (lambda (best-scopes_0 best-binding_0 i_0)
12860                                  (begin
12861                                    (if i_0
12862                                      (let ((sc_0
12863                                             (unsafe-immutable-hash-iterate-key
12864                                              scopes_0
12865                                              i_0)))
12866                                        (call-with-values
12867                                         (lambda ()
12868                                           (call-with-values
12869                                            (lambda ()
12870                                              (let ((table_0
12871                                                     (scope-binding-table
12872                                                      sc_0)))
12873                                                (if (hash? table_0)
12874                                                  (values
12875                                                   (hash-ref
12876                                                    table_0
12877                                                    sym_0
12878                                                    hash2725)
12879                                                   null)
12880                                                  (values
12881                                                   (hash-ref
12882                                                    (table-with-bulk-bindings-syms
12883                                                     table_0)
12884                                                    sym_0
12885                                                    hash2725)
12886                                                   (table-with-bulk-bindings-bulk-bindings
12887                                                    table_0)))))
12888                                            (case-lambda
12889                                             ((ht_0 bulk-bindings_0)
12890                                              (let ((s_0 s32_0))
12891                                                (let ((extra-shifts_0
12892                                                       extra-shifts27_0))
12893                                                  (let ((s_1 s_0)
12894                                                        (ht_1 ht_0)
12895                                                        (bulk-bindings_1
12896                                                         bulk-bindings_0))
12897                                                    (begin
12898                                                      #t
12899                                                      (letrec*
12900                                                       ((for-loop_1
12901                                                         (|#%name|
12902                                                          for-loop
12903                                                          (lambda (best-scopes_1
12904                                                                   best-binding_1
12905                                                                   i_1)
12906                                                            (begin
12907                                                              (if (not
12908                                                                   (null? i_1))
12909                                                                (let ((b-scopes_0
12910                                                                       (if (pair?
12911                                                                            i_1)
12912                                                                         (bulk-binding-at-scopes
12913                                                                          (car
12914                                                                           i_1))
12915                                                                         (hash-iterate-key
12916                                                                          ht_1
12917                                                                          i_1))))
12918                                                                  (let ((binding_0
12919                                                                         (if (pair?
12920                                                                              i_1)
12921                                                                           (let ((bulk_0
12922                                                                                  (bulk-binding-at-bulk
12923                                                                                   (car
12924                                                                                    i_1))))
12925                                                                             (let ((b-info_0
12926                                                                                    (if (symbol-interned?
12927                                                                                         sym_0)
12928                                                                                      (hash-ref
12929                                                                                       (bulk-binding-symbols
12930                                                                                        bulk_0
12931                                                                                        s_1
12932                                                                                        extra-shifts_0)
12933                                                                                       sym_0
12934                                                                                       #f)
12935                                                                                      #f)))
12936                                                                               (if b-info_0
12937                                                                                 (|#%app|
12938                                                                                  (begin-unsafe
12939                                                                                   (bulk-binding-class-create
12940                                                                                    (bulk-binding-ref
12941                                                                                     bulk_0)))
12942                                                                                  bulk_0
12943                                                                                  b-info_0
12944                                                                                  sym_0)
12945                                                                                 #f)))
12946                                                                           (hash-iterate-value
12947                                                                            ht_1
12948                                                                            i_1))))
12949                                                                    (let ((b-scopes_1
12950                                                                           b-scopes_0))
12951                                                                      (call-with-values
12952                                                                       (lambda ()
12953                                                                         (if (if b-scopes_1
12954                                                                               (if binding_0
12955                                                                                 (begin-unsafe
12956                                                                                  (hash-keys-subset?
12957                                                                                   b-scopes_1
12958                                                                                   scopes_0))
12959                                                                                 #f)
12960                                                                               #f)
12961                                                                           (call-with-values
12962                                                                            (lambda ()
12963                                                                              (if (pair?
12964                                                                                   best-scopes_1)
12965                                                                                (if (begin
12966                                                                                      (letrec*
12967                                                                                       ((for-loop_2
12968                                                                                         (|#%name|
12969                                                                                          for-loop
12970                                                                                          (lambda (result_0
12971                                                                                                   lst_0)
12972                                                                                            (begin
12973                                                                                              (if (pair?
12974                                                                                                   lst_0)
12975                                                                                                (let ((amb-scopes_0
12976                                                                                                       (unsafe-car
12977                                                                                                        lst_0)))
12978                                                                                                  (let ((rest_0
12979                                                                                                         (unsafe-cdr
12980                                                                                                          lst_0)))
12981                                                                                                    (let ((result_1
12982                                                                                                           (let ((result_1
12983                                                                                                                  (begin-unsafe
12984                                                                                                                   (hash-keys-subset?
12985                                                                                                                    amb-scopes_0
12986                                                                                                                    b-scopes_1))))
12987                                                                                                             (values
12988                                                                                                              result_1))))
12989                                                                                                      (if (if (not
12990                                                                                                               (let ((x_0
12991                                                                                                                      (list
12992                                                                                                                       amb-scopes_0)))
12993                                                                                                                 (not
12994                                                                                                                  result_1)))
12995                                                                                                            #t
12996                                                                                                            #f)
12997                                                                                                        (for-loop_2
12998                                                                                                         result_1
12999                                                                                                         rest_0)
13000                                                                                                        result_1))))
13001                                                                                                result_0))))))
13002                                                                                       (for-loop_2
13003                                                                                        #t
13004                                                                                        best-scopes_1)))
13005                                                                                  (values
13006                                                                                   b-scopes_1
13007                                                                                   binding_0)
13008                                                                                  (values
13009                                                                                   (cons
13010                                                                                    b-scopes_1
13011                                                                                    best-scopes_1)
13012                                                                                   #f))
13013                                                                                (if (not
13014                                                                                     best-scopes_1)
13015                                                                                  (values
13016                                                                                   b-scopes_1
13017                                                                                   binding_0)
13018                                                                                  (if (begin-unsafe
13019                                                                                       (hash-keys-subset?
13020                                                                                        b-scopes_1
13021                                                                                        best-scopes_1))
13022                                                                                    (values
13023                                                                                     best-scopes_1
13024                                                                                     best-binding_1)
13025                                                                                    (if (begin-unsafe
13026                                                                                         (hash-keys-subset?
13027                                                                                          best-scopes_1
13028                                                                                          b-scopes_1))
13029                                                                                      (values
13030                                                                                       b-scopes_1
13031                                                                                       binding_0)
13032                                                                                      (values
13033                                                                                       (list
13034                                                                                        best-scopes_1
13035                                                                                        b-scopes_1)
13036                                                                                       #f))))))
13037                                                                            (case-lambda
13038                                                                             ((best-scopes_2
13039                                                                               best-binding_2)
13040                                                                              (values
13041                                                                               best-scopes_2
13042                                                                               best-binding_2))
13043                                                                             (args
13044                                                                              (raise-binding-result-arity-error
13045                                                                               2
13046                                                                               args))))
13047                                                                           (values
13048                                                                            best-scopes_1
13049                                                                            best-binding_1)))
13050                                                                       (case-lambda
13051                                                                        ((best-scopes_2
13052                                                                          best-binding_2)
13053                                                                         (for-loop_1
13054                                                                          best-scopes_2
13055                                                                          best-binding_2
13056                                                                          (if (pair?
13057                                                                               i_1)
13058                                                                            (cdr
13059                                                                             i_1)
13060                                                                            (let ((or-part_0
13061                                                                                   (hash-iterate-next
13062                                                                                    ht_1
13063                                                                                    i_1)))
13064                                                                              (if or-part_0
13065                                                                                or-part_0
13066                                                                                bulk-bindings_1)))))
13067                                                                        (args
13068                                                                         (raise-binding-result-arity-error
13069                                                                          2
13070                                                                          args)))))))
13071                                                                (values
13072                                                                 best-scopes_1
13073                                                                 best-binding_1)))))))
13074                                                       (for-loop_1
13075                                                        best-scopes_0
13076                                                        best-binding_0
13077                                                        (let ((or-part_0
13078                                                               (hash-iterate-first
13079                                                                ht_1)))
13080                                                          (if or-part_0
13081                                                            or-part_0
13082                                                            bulk-bindings_1)))))))))
13083                                             (args
13084                                              (raise-binding-result-arity-error
13085                                               2
13086                                               args)))))
13087                                         (case-lambda
13088                                          ((best-scopes_1 best-binding_1)
13089                                           (for-loop_0
13090                                            best-scopes_1
13091                                            best-binding_1
13092                                            (unsafe-immutable-hash-iterate-next
13093                                             scopes_0
13094                                             i_0)))
13095                                          (args
13096                                           (raise-binding-result-arity-error
13097                                            2
13098                                            args)))))
13099                                      (values
13100                                       best-scopes_0
13101                                       best-binding_0)))))))
13102                             (for-loop_0
13103                              #f
13104                              #f
13105                              (unsafe-immutable-hash-iterate-first
13106                               scopes_0)))))
13107                        (case-lambda
13108                         ((best-scopes_0 best-binding_0)
13109                          (if (pair? best-scopes_0)
13110                            (if (fallback? smss_0)
13111                              (fallback-loop_0 (fallback-rest smss_0))
13112                              ambiguous-value24_0)
13113                            (if best-scopes_0
13114                              (begin
13115                                (resolve-cache-set!
13116                                 sym_0
13117                                 phase33_0
13118                                 (syntax-scopes s32_0)
13119                                 (fallback-first smss_0)
13120                                 best-binding_0)
13121                                (if (let ((or-part_0 (not exactly?25_0)))
13122                                      (if or-part_0
13123                                        or-part_0
13124                                        (let ((app_0
13125                                               (begin-unsafe
13126                                                (hash-count scopes_0))))
13127                                          (eqv?
13128                                           app_0
13129                                           (begin-unsafe
13130                                            (hash-count best-scopes_0))))))
13131                                  (if get-scopes?26_0
13132                                    best-scopes_0
13133                                    best-binding_0)
13134                                  #f))
13135                              (begin
13136                                (resolve-cache-set!
13137                                 sym_0
13138                                 phase33_0
13139                                 (syntax-scopes s32_0)
13140                                 (fallback-first smss_0)
13141                                 kw2450)
13142                                (if (fallback? smss_0)
13143                                  (fallback-loop_0 (fallback-rest smss_0))
13144                                  #f)))))
13145                         (args
13146                          (raise-binding-result-arity-error 2 args))))))))))))
13147          (fallback-loop_0 (syntax-shifted-multi-scopes s32_0))))))))
13148(define bound-identifier=?$1
13149  (|#%name|
13150   bound-identifier=?
13151   (lambda (a_0 b_0 phase_0)
13152     (begin
13153       (if (let ((app_0 (syntax-e$1 a_0))) (eq? app_0 (syntax-e$1 b_0)))
13154         (let ((app_0 (syntax-scope-set a_0 phase_0)))
13155           (equal? app_0 (syntax-scope-set b_0 phase_0)))
13156         #f)))))
13157(define local-binding?
13158  (lambda (b_0)
13159    (let ((or-part_0 (full-local-binding? b_0)))
13160      (if or-part_0 or-part_0 (symbol? b_0)))))
13161(define finish_2041
13162  (make-struct-type-install-properties
13163   '(full-local-binding)
13164   1
13165   0
13166   struct:full-binding
13167   (list
13168    (cons prop:authentic #t)
13169    (cons
13170     prop:serialize
13171     (lambda (b_0 ser-push!_0 state_0)
13172       (begin
13173         (|#%app| ser-push!_0 'tag kw2677)
13174         (|#%app| ser-push!_0 (full-local-binding-key b_0))
13175         (|#%app| ser-push!_0 (full-binding-free=id b_0))))))
13176   (current-inspector)
13177   #f
13178   '(0)
13179   #f
13180   'full-local-binding))
13181(define struct:full-local-binding
13182  (make-record-type-descriptor*
13183   'full-local-binding
13184   struct:full-binding
13185   (|#%nongenerative-uid| full-local-binding)
13186   #f
13187   #f
13188   1
13189   0))
13190(define effect_3011 (finish_2041 struct:full-local-binding))
13191(define full-local-binding1.1
13192  (|#%name|
13193   full-local-binding
13194   (record-constructor
13195    (make-record-constructor-descriptor struct:full-local-binding #f #f))))
13196(define full-local-binding?
13197  (|#%name| full-local-binding? (record-predicate struct:full-local-binding)))
13198(define full-local-binding-key
13199  (|#%name|
13200   full-local-binding-key
13201   (record-accessor struct:full-local-binding 0)))
13202(define deserialize-full-local-binding
13203  (lambda (key_0 free=id_0) (full-local-binding1.1 #f free=id_0 key_0)))
13204(define make-local-binding.1
13205  (|#%name|
13206   make-local-binding
13207   (lambda (frame-id2_0 free=id3_0 key6_0)
13208     (begin
13209       (if (if (not frame-id2_0) (not free=id3_0) #f)
13210         key6_0
13211         (full-local-binding1.1 frame-id2_0 free=id3_0 key6_0))))))
13212(define local-binding-update.1
13213  (|#%name|
13214   local-binding-update
13215   (lambda (frame-id9_0 free=id10_0 key8_0 b14_0)
13216     (begin
13217       (let ((key_0
13218              (if (eq? key8_0 unsafe-undefined)
13219                (local-binding-key b14_0)
13220                key8_0)))
13221         (let ((frame-id_0
13222                (if (eq? frame-id9_0 unsafe-undefined)
13223                  (binding-frame-id b14_0)
13224                  frame-id9_0)))
13225           (let ((free=id_0
13226                  (if (eq? free=id10_0 unsafe-undefined)
13227                    (binding-free=id b14_0)
13228                    free=id10_0)))
13229             (make-local-binding.1 frame-id_0 free=id_0 key_0))))))))
13230(define local-binding-key
13231  (lambda (b_0)
13232    (if (full-local-binding? b_0) (full-local-binding-key b_0) b_0)))
13233(define-values
13234 (1/prop:rename-transformer 1/rename-transformer? rename-transformer-value)
13235 (make-struct-type-property
13236  'rename-transformer
13237  (lambda (v_0 info_0)
13238    (begin
13239      (if (let ((or-part_0 (exact-nonnegative-integer? v_0)))
13240            (if or-part_0
13241              or-part_0
13242              (let ((or-part_1 (identifier? v_0)))
13243                (if or-part_1
13244                  or-part_1
13245                  (if (procedure? v_0)
13246                    (procedure-arity-includes? v_0 1)
13247                    #f)))))
13248        (void)
13249        (raise-argument-error
13250         'guard-for-prop:rename-transformer
13251         (string-append
13252          "(or/c exact-nonnegative-integer?\n"
13253          "      identifier?\n"
13254          "      (procedure-arity-includes? proc 1))")
13255         v_0))
13256      (begin
13257        (if (exact-nonnegative-integer? v_0)
13258          (begin
13259            (if (<= v_0 (list-ref info_0 1))
13260              (void)
13261              (raise-arguments-error
13262               'guard-for-prop:rename-transformer
13263               "field index >= initialized-field count for structure type"
13264               "field index"
13265               v_0
13266               "initialized-field count"
13267               (list-ref info_0 1)))
13268            (if (member v_0 (list-ref info_0 5))
13269              (void)
13270              (raise-arguments-error
13271               'guard-for-prop:rename-transformer
13272               "field index not declared immutable"
13273               "field index"
13274               v_0)))
13275          (void))
13276        (let ((ref_0 (list-ref info_0 3)))
13277          (if (identifier? v_0)
13278            (lambda (t_0) v_0)
13279            (if (integer? v_0)
13280              (lambda (t_0)
13281                (let ((val_0 (|#%app| ref_0 t_0 v_0)))
13282                  (if (identifier? val_0) val_0 (datum->syntax$1 #f '?))))
13283              (lambda (t_0)
13284                (let ((id_0
13285                       (call-with-continuation-barrier
13286                        (lambda () (|#%app| v_0 t_0)))))
13287                  (begin
13288                    (if (identifier? id_0)
13289                      (void)
13290                      (raise-arguments-error
13291                       'prop:rename-transformer
13292                       "contract violation for given value; expected an identifier"
13293                       "given"
13294                       id_0))
13295                    id_0)))))))))))
13296(define finish_2476
13297  (make-struct-type-install-properties
13298   '(rename-transformer)
13299   1
13300   0
13301   #f
13302   (list (cons 1/prop:rename-transformer 0))
13303   (current-inspector)
13304   #f
13305   '(0)
13306   #f
13307   'id-rename-transformer))
13308(define struct:id-rename-transformer
13309  (make-record-type-descriptor*
13310   'rename-transformer
13311   #f
13312   (|#%nongenerative-uid| rename-transformer)
13313   #f
13314   #f
13315   1
13316   0))
13317(define effect_2525 (finish_2476 struct:id-rename-transformer))
13318(define id-rename-transformer1.1
13319  (|#%name|
13320   id-rename-transformer
13321   (record-constructor
13322    (make-record-constructor-descriptor struct:id-rename-transformer #f #f))))
13323(define id-rename-transformer?_2219
13324  (|#%name|
13325   rename-transformer?
13326   (record-predicate struct:id-rename-transformer)))
13327(define id-rename-transformer?
13328  (|#%name|
13329   rename-transformer?
13330   (lambda (v)
13331     (if (id-rename-transformer?_2219 v)
13332       #t
13333       ($value
13334        (if (impersonator? v)
13335          (id-rename-transformer?_2219 (impersonator-val v))
13336          #f))))))
13337(define id-rename-transformer-id_2932
13338  (|#%name|
13339   rename-transformer-id
13340   (record-accessor struct:id-rename-transformer 0)))
13341(define id-rename-transformer-id
13342  (|#%name|
13343   rename-transformer-id
13344   (lambda (s)
13345     (if (id-rename-transformer?_2219 s)
13346       (id-rename-transformer-id_2932 s)
13347       ($value
13348        (impersonate-ref
13349         id-rename-transformer-id_2932
13350         struct:id-rename-transformer
13351         0
13352         s
13353         'rename-transformer
13354         'id))))))
13355(define 1/make-rename-transformer
13356  (|#%name|
13357   make-rename-transformer
13358   (lambda (id_0)
13359     (begin
13360       (begin
13361         (if (identifier? id_0)
13362           (void)
13363           (raise-argument-error 'make-rename-transformer "identifier?" id_0))
13364         (id-rename-transformer1.1 id_0))))))
13365(define 1/rename-transformer-target
13366  (|#%name|
13367   rename-transformer-target
13368   (lambda (t_0) (begin (|#%app| (rename-transformer-value t_0) t_0)))))
13369(define free-identifier=?$1
13370  (|#%name|
13371   free-identifier=?
13372   (lambda (a_0 b_0 a-phase_0 b-phase_0)
13373     (begin
13374       (let ((ab_0
13375              (toplevel-as-symbol
13376               (resolve+shift.1
13377                #f
13378                #f
13379                null
13380                unsafe-undefined
13381                #t
13382                a_0
13383                a-phase_0))))
13384         (let ((bb_0
13385                (toplevel-as-symbol
13386                 (resolve+shift.1
13387                  #f
13388                  #f
13389                  null
13390                  unsafe-undefined
13391                  #t
13392                  b_0
13393                  b-phase_0))))
13394           (if (let ((or-part_0 (symbol? ab_0)))
13395                 (if or-part_0 or-part_0 (symbol? bb_0)))
13396             (eq? ab_0 bb_0)
13397             (same-binding? ab_0 bb_0))))))))
13398(define toplevel-as-symbol
13399  (lambda (b_0)
13400    (if (if (module-binding? b_0)
13401          (let ((mpi_0 (module-binding-module b_0)))
13402            (begin-unsafe (eq? top-level-module-path-index mpi_0)))
13403          #f)
13404      (module-binding-sym b_0)
13405      b_0)))
13406(define same-binding?
13407  (lambda (ab_0 bb_0)
13408    (if (module-binding? ab_0)
13409      (if (module-binding? bb_0)
13410        (if (let ((app_0 (module-binding-sym ab_0)))
13411              (eq? app_0 (module-binding-sym bb_0)))
13412          (if (let ((app_0 (module-binding-phase ab_0)))
13413                (eqv? app_0 (module-binding-phase bb_0)))
13414            (let ((app_0
13415                   (1/module-path-index-resolve (module-binding-module ab_0))))
13416              (eq?
13417               app_0
13418               (1/module-path-index-resolve (module-binding-module bb_0))))
13419            #f)
13420          #f)
13421        #f)
13422      (if (local-binding? ab_0)
13423        (if (local-binding? bb_0)
13424          (let ((app_0 (local-binding-key ab_0)))
13425            (eq? app_0 (local-binding-key bb_0)))
13426          #f)
13427        (error "bad binding" ab_0)))))
13428(define same-binding-nominals?
13429  (lambda (ab_0 bb_0)
13430    (if (let ((app_0
13431               (1/module-path-index-resolve
13432                (module-binding-nominal-module ab_0))))
13433          (eq?
13434           app_0
13435           (1/module-path-index-resolve (module-binding-nominal-module bb_0))))
13436      (if (let ((app_0
13437                 (module-binding-nominal-require-phase+space-shift ab_0)))
13438            (eqv?
13439             app_0
13440             (module-binding-nominal-require-phase+space-shift bb_0)))
13441        (let ((app_0 (module-binding-nominal-sym ab_0)))
13442          (eqv? app_0 (module-binding-nominal-sym bb_0)))
13443        #f)
13444      #f)))
13445(define identifier-binding-symbol$1
13446  (|#%name|
13447   identifier-binding-symbol
13448   (lambda (id_0 phase_0)
13449     (begin
13450       (let ((b_0
13451              (resolve+shift.1 #f #f null unsafe-undefined #t id_0 phase_0)))
13452         (if (symbol? b_0)
13453           b_0
13454           (if (module-binding? b_0)
13455             (module-binding-sym b_0)
13456             (if (local-binding? b_0)
13457               (local-binding-key b_0)
13458               (syntax-e$1 id_0)))))))))
13459(define identifier-binding$1
13460  (let ((identifier-binding_0
13461         (|#%name|
13462          identifier-binding
13463          (lambda (id2_0 phase3_0 top-level-symbol?1_0)
13464            (begin
13465              (let ((b_0
13466                     (resolve+shift.1
13467                      #f
13468                      #f
13469                      null
13470                      unsafe-undefined
13471                      #f
13472                      id2_0
13473                      phase3_0)))
13474                (if (module-binding? b_0)
13475                  (if (let ((mpi_0 (module-binding-module b_0)))
13476                        (begin-unsafe (eq? top-level-module-path-index mpi_0)))
13477                    (if top-level-symbol?1_0
13478                      (list (module-binding-nominal-sym b_0))
13479                      #f)
13480                    (let ((app_0 (module-binding-module b_0)))
13481                      (let ((app_1 (module-binding-sym b_0)))
13482                        (let ((app_2 (module-binding-nominal-module b_0)))
13483                          (let ((app_3 (module-binding-nominal-sym b_0)))
13484                            (let ((app_4 (module-binding-phase b_0)))
13485                              (let ((app_5
13486                                     (module-binding-nominal-require-phase+space-shift
13487                                      b_0)))
13488                                (list
13489                                 app_0
13490                                 app_1
13491                                 app_2
13492                                 app_3
13493                                 app_4
13494                                 app_5
13495                                 (module-binding-nominal-phase+space
13496                                  b_0)))))))))
13497                  (if (local-binding? b_0) 'lexical #f))))))))
13498    (|#%name|
13499     identifier-binding
13500     (case-lambda
13501      ((id_0 phase_0) (begin (identifier-binding_0 id_0 phase_0 #f)))
13502      ((id_0 phase_0 top-level-symbol?1_0)
13503       (identifier-binding_0 id_0 phase_0 top-level-symbol?1_0))))))
13504(define maybe-install-free=id!
13505  (lambda (val_0 id_0 phase_0)
13506    (if (1/rename-transformer? val_0)
13507      (let ((free=id_0 (1/rename-transformer-target val_0)))
13508        (if (syntax-property$1 free=id_0 'not-free-identifier=?)
13509          (void)
13510          (let ((b_0 (resolve+shift.1 #f #t null #t #f id_0 phase_0)))
13511            (let ((temp50_0 (syntax-scope-set id_0 phase_0)))
13512              (let ((temp51_0 (syntax-e$1 id_0)))
13513                (let ((temp52_0 (binding-set-free=id b_0 free=id_0)))
13514                  (let ((temp51_1 temp51_0) (temp50_1 temp50_0))
13515                    (add-binding-in-scopes!.1
13516                     #f
13517                     temp50_1
13518                     temp51_1
13519                     temp52_0))))))))
13520      (void))))
13521(define binding-set-free=id
13522  (lambda (b_0 free=id_0)
13523    (if (module-binding? b_0)
13524      (module-binding-update.1
13525       unsafe-undefined
13526       unsafe-undefined
13527       unsafe-undefined
13528       free=id_0
13529       unsafe-undefined
13530       unsafe-undefined
13531       unsafe-undefined
13532       unsafe-undefined
13533       unsafe-undefined
13534       unsafe-undefined
13535       unsafe-undefined
13536       b_0)
13537      (if (local-binding? b_0)
13538        (local-binding-update.1
13539         unsafe-undefined
13540         free=id_0
13541         unsafe-undefined
13542         b_0)
13543        (error "bad binding for free=id:" b_0)))))
13544(define finish_2455
13545  (make-struct-type-install-properties
13546   '(non-source-shift)
13547   2
13548   0
13549   #f
13550   null
13551   'prefab
13552   #f
13553   '(0 1)
13554   #f
13555   'non-source-shift))
13556(define struct:non-source-shift
13557  (make-record-type-descriptor*
13558   'non-source-shift
13559   #f
13560   (structure-type-lookup-prefab-uid 'non-source-shift #f 2 0 #f '(0 1))
13561   #f
13562   #f
13563   2
13564   3))
13565(define effect_3061 (finish_2455 struct:non-source-shift))
13566(define non-source-shift4.1
13567  (|#%name|
13568   non-source-shift
13569   (record-constructor
13570    (make-record-constructor-descriptor struct:non-source-shift #f #f))))
13571(define non-source-shift?_2763
13572  (|#%name| non-source-shift? (record-predicate struct:non-source-shift)))
13573(define non-source-shift?
13574  (|#%name|
13575   non-source-shift?
13576   (lambda (v)
13577     (if (non-source-shift?_2763 v)
13578       #t
13579       ($value
13580        (if (impersonator? v)
13581          (non-source-shift?_2763 (impersonator-val v))
13582          #f))))))
13583(define non-source-shift-from_3480
13584  (|#%name| non-source-shift-from (record-accessor struct:non-source-shift 0)))
13585(define non-source-shift-from
13586  (|#%name|
13587   non-source-shift-from
13588   (lambda (s)
13589     (if (non-source-shift?_2763 s)
13590       (non-source-shift-from_3480 s)
13591       ($value
13592        (impersonate-ref
13593         non-source-shift-from_3480
13594         struct:non-source-shift
13595         0
13596         s
13597         'non-source-shift
13598         'from))))))
13599(define non-source-shift-to_2244
13600  (|#%name| non-source-shift-to (record-accessor struct:non-source-shift 1)))
13601(define non-source-shift-to
13602  (|#%name|
13603   non-source-shift-to
13604   (lambda (s)
13605     (if (non-source-shift?_2763 s)
13606       (non-source-shift-to_2244 s)
13607       ($value
13608        (impersonate-ref
13609         non-source-shift-to_2244
13610         struct:non-source-shift
13611         1
13612         s
13613         'non-source-shift
13614         'to))))))
13615(define shift-from
13616  (lambda (s_0) (if (pair? s_0) (car s_0) (non-source-shift-from s_0))))
13617(define shift-to
13618  (lambda (s_0) (if (pair? s_0) (cdr s_0) (non-source-shift-to s_0))))
13619(define syntax-module-path-index-shift.1
13620  (|#%name|
13621   syntax-module-path-index-shift
13622   (lambda (non-source?5_0 s8_0 from-mpi9_0 to-mpi10_0 inspector7_0)
13623     (begin
13624       (if (eq? from-mpi9_0 to-mpi10_0)
13625         (if inspector7_0 (syntax-set-inspector s8_0 inspector7_0) s8_0)
13626         (let ((shift_0
13627                (if non-source?5_0
13628                  (non-source-shift4.1 from-mpi9_0 to-mpi10_0)
13629                  (cons from-mpi9_0 to-mpi10_0))))
13630           (let ((content*_0 (syntax-content* s8_0)))
13631             (let ((content_0
13632                    (if (modified-content? content*_0)
13633                      (modified-content-content content*_0)
13634                      content*_0)))
13635               (if (syntax?$1 s8_0)
13636                 (let ((mpi-shifts62_0
13637                        (shift-cons shift_0 (syntax-mpi-shifts s8_0))))
13638                   (let ((inspector63_0
13639                          (let ((or-part_0 (syntax-inspector s8_0)))
13640                            (if or-part_0 or-part_0 inspector7_0))))
13641                     (let ((content*64_0
13642                            (if (datum-has-elements? content_0)
13643                              (modified-content1.1
13644                               content_0
13645                               (propagation-mpi-shift
13646                                (if (modified-content? content*_0)
13647                                  (modified-content-scope-propagations+taint
13648                                   content*_0)
13649                                  #f)
13650                                (lambda (s_0) (shift-cons shift_0 s_0))
13651                                inspector7_0
13652                                (syntax-scopes s8_0)
13653                                (syntax-shifted-multi-scopes s8_0)
13654                                (syntax-mpi-shifts s8_0)))
13655                              content*_0)))
13656                       (let ((inspector63_1 inspector63_0)
13657                             (mpi-shifts62_1 mpi-shifts62_0))
13658                         (syntax2.1
13659                          content*64_0
13660                          (syntax-scopes s8_0)
13661                          (syntax-shifted-multi-scopes s8_0)
13662                          mpi-shifts62_1
13663                          (syntax-srcloc$1 s8_0)
13664                          (syntax-props s8_0)
13665                          inspector63_1)))))
13666                 (raise-argument-error 'struct-copy "syntax?" s8_0))))))))))
13667(define shift-cons
13668  (lambda (shift_0 shifts_0)
13669    (if (if (pair? shifts_0)
13670          (let ((app_0 (shift-from shift_0)))
13671            (eq? app_0 (shift-from (car shifts_0))))
13672          #f)
13673      shifts_0
13674      (cons shift_0 shifts_0))))
13675(define resolve+shift.1
13676  (|#%name|
13677   resolve+shift
13678   (lambda (ambiguous-value12_0
13679            exactly?13_0
13680            extra-shifts16_0
13681            immediate?14_0
13682            unbound-sym?15_0
13683            s22_0
13684            phase23_0)
13685     (begin
13686       (let ((immediate?_0
13687              (if (eq? immediate?14_0 unsafe-undefined)
13688                exactly?13_0
13689                immediate?14_0)))
13690         (let ((can-cache?_0
13691                (if (not exactly?13_0)
13692                  (if (not immediate?_0) (null? extra-shifts16_0) #f)
13693                  #f)))
13694           (let ((c1_0
13695                  (if can-cache?_0
13696                    (resolve+shift-cache-get s22_0 phase23_0)
13697                    #f)))
13698             (if c1_0
13699               (if (eq? c1_0 kw2450)
13700                 (if unbound-sym?15_0 (syntax-content s22_0) #f)
13701                 c1_0)
13702               (let ((immediate-b_0
13703                      (resolve.1
13704                       ambiguous-value12_0
13705                       exactly?13_0
13706                       extra-shifts16_0
13707                       #f
13708                       s22_0
13709                       phase23_0)))
13710                 (let ((b_0
13711                        (if (if immediate-b_0
13712                              (if (not immediate?_0)
13713                                (binding-free=id immediate-b_0)
13714                                #f)
13715                              #f)
13716                          (let ((temp70_0 (binding-free=id immediate-b_0)))
13717                            (let ((temp72_0
13718                                   (append
13719                                    extra-shifts16_0
13720                                    (syntax-mpi-shifts s22_0))))
13721                              (let ((temp70_1 temp70_0))
13722                                (resolve+shift.1
13723                                 ambiguous-value12_0
13724                                 exactly?13_0
13725                                 temp72_0
13726                                 unsafe-undefined
13727                                 unbound-sym?15_0
13728                                 temp70_1
13729                                 phase23_0))))
13730                          immediate-b_0)))
13731                   (if (module-binding? b_0)
13732                     (let ((mpi-shifts_0 (syntax-mpi-shifts s22_0)))
13733                       (if (null? mpi-shifts_0)
13734                         b_0
13735                         (let ((mod_0 (module-binding-module b_0)))
13736                           (let ((shifted-mod_0
13737                                  (apply-syntax-shifts mod_0 mpi-shifts_0)))
13738                             (let ((nominal-mod_0
13739                                    (module-binding-nominal-module b_0)))
13740                               (let ((shifted-nominal-mod_0
13741                                      (if (eq? mod_0 nominal-mod_0)
13742                                        shifted-mod_0
13743                                        (apply-syntax-shifts
13744                                         nominal-mod_0
13745                                         mpi-shifts_0))))
13746                                 (let ((result-b_0
13747                                        (if (if (eq? mod_0 shifted-mod_0)
13748                                              (if (eq?
13749                                                   nominal-mod_0
13750                                                   shifted-nominal-mod_0)
13751                                                (if (not (binding-free=id b_0))
13752                                                  (null?
13753                                                   (module-binding-extra-nominal-bindings
13754                                                    b_0))
13755                                                  #f)
13756                                                #f)
13757                                              #f)
13758                                          b_0
13759                                          (let ((temp79_0
13760                                                 (if (binding-free=id b_0)
13761                                                   (let ((temp81_0
13762                                                          (binding-free=id
13763                                                           b_0)))
13764                                                     (syntax-transfer-shifts.1
13765                                                      #f
13766                                                      temp81_0
13767                                                      s22_0
13768                                                      #f))
13769                                                   #f)))
13770                                            (let ((temp80_0
13771                                                   (reverse$1
13772                                                    (let ((lst_0
13773                                                           (module-binding-extra-nominal-bindings
13774                                                            b_0)))
13775                                                      (begin
13776                                                        (letrec*
13777                                                         ((for-loop_0
13778                                                           (|#%name|
13779                                                            for-loop
13780                                                            (lambda (fold-var_0
13781                                                                     lst_1)
13782                                                              (begin
13783                                                                (if (pair?
13784                                                                     lst_1)
13785                                                                  (let ((b_1
13786                                                                         (unsafe-car
13787                                                                          lst_1)))
13788                                                                    (let ((rest_0
13789                                                                           (unsafe-cdr
13790                                                                            lst_1)))
13791                                                                      (let ((fold-var_1
13792                                                                             (let ((fold-var_1
13793                                                                                    (cons
13794                                                                                     (apply-syntax-shifts-to-binding
13795                                                                                      b_1
13796                                                                                      mpi-shifts_0)
13797                                                                                     fold-var_0)))
13798                                                                               (values
13799                                                                                fold-var_1))))
13800                                                                        (for-loop_0
13801                                                                         fold-var_1
13802                                                                         rest_0))))
13803                                                                  fold-var_0))))))
13804                                                         (for-loop_0
13805                                                          null
13806                                                          lst_0)))))))
13807                                              (let ((temp79_1 temp79_0))
13808                                                (module-binding-update.1
13809                                                 unsafe-undefined
13810                                                 temp80_0
13811                                                 unsafe-undefined
13812                                                 temp79_1
13813                                                 shifted-mod_0
13814                                                 shifted-nominal-mod_0
13815                                                 unsafe-undefined
13816                                                 unsafe-undefined
13817                                                 unsafe-undefined
13818                                                 unsafe-undefined
13819                                                 unsafe-undefined
13820                                                 b_0)))))))
13821                                   (begin
13822                                     (if can-cache?_0
13823                                       (resolve+shift-cache-set!
13824                                        s22_0
13825                                        phase23_0
13826                                        result-b_0)
13827                                       (void))
13828                                     result-b_0))))))))
13829                     (if (like-ambiguous-binding? b_0)
13830                       (if unbound-sym?15_0
13831                         (syntax-content s22_0)
13832                         ambiguous-value12_0)
13833                       (begin
13834                         (if can-cache?_0
13835                           (resolve+shift-cache-set!
13836                            s22_0
13837                            phase23_0
13838                            (if b_0 b_0 kw2450))
13839                           (void))
13840                         (if b_0
13841                           b_0
13842                           (if unbound-sym?15_0
13843                             (syntax-content s22_0)
13844                             #f)))))))))))))))
13845(define apply-syntax-shifts
13846  (lambda (mpi_0 shifts_0)
13847    (if (null? shifts_0)
13848      mpi_0
13849      (let ((shifted-mpi_0 (apply-syntax-shifts mpi_0 (cdr shifts_0))))
13850        (let ((shift_0 (car shifts_0)))
13851          (let ((app_0 (shift-from shift_0)))
13852            (module-path-index-shift
13853             shifted-mpi_0
13854             app_0
13855             (shift-to shift_0))))))))
13856(define apply-syntax-shifts-to-binding
13857  (lambda (b_0 shifts_0)
13858    (if (null? shifts_0)
13859      b_0
13860      (let ((shifted-b_0 (apply-syntax-shifts-to-binding b_0 (cdr shifts_0))))
13861        (let ((shift_0 (car shifts_0)))
13862          (let ((app_0 (shift-from shift_0)))
13863            (binding-module-path-index-shift
13864             shifted-b_0
13865             app_0
13866             (shift-to shift_0))))))))
13867(define binding-module-path-index-shift
13868  (lambda (b_0 from-mpi_0 to-mpi_0)
13869    (if (module-binding? b_0)
13870      (let ((temp84_0
13871             (module-path-index-shift
13872              (module-binding-module b_0)
13873              from-mpi_0
13874              to-mpi_0)))
13875        (let ((temp85_0
13876               (module-path-index-shift
13877                (module-binding-nominal-module b_0)
13878                from-mpi_0
13879                to-mpi_0)))
13880          (let ((temp86_0
13881                 (reverse$1
13882                  (let ((lst_0 (module-binding-extra-nominal-bindings b_0)))
13883                    (begin
13884                      (letrec*
13885                       ((for-loop_0
13886                         (|#%name|
13887                          for-loop
13888                          (lambda (fold-var_0 lst_1)
13889                            (begin
13890                              (if (pair? lst_1)
13891                                (let ((b_1 (unsafe-car lst_1)))
13892                                  (let ((rest_0 (unsafe-cdr lst_1)))
13893                                    (let ((fold-var_1
13894                                           (let ((fold-var_1
13895                                                  (cons
13896                                                   (binding-module-path-index-shift
13897                                                    b_1
13898                                                    from-mpi_0
13899                                                    to-mpi_0)
13900                                                   fold-var_0)))
13901                                             (values fold-var_1))))
13902                                      (for-loop_0 fold-var_1 rest_0))))
13903                                fold-var_0))))))
13904                       (for-loop_0 null lst_0)))))))
13905            (let ((temp85_1 temp85_0) (temp84_1 temp84_0))
13906              (module-binding-update.1
13907               unsafe-undefined
13908               temp86_0
13909               unsafe-undefined
13910               unsafe-undefined
13911               temp84_1
13912               temp85_1
13913               unsafe-undefined
13914               unsafe-undefined
13915               unsafe-undefined
13916               unsafe-undefined
13917               unsafe-undefined
13918               b_0)))))
13919      b_0)))
13920(define syntax-transfer-shifts.1
13921  (|#%name|
13922   syntax-transfer-shifts
13923   (lambda (non-source?25_0 to-s28_0 from-s29_0 inspector27_0)
13924     (begin
13925       (let ((temp88_0 (syntax-mpi-shifts from-s29_0)))
13926         (syntax-add-shifts.1
13927          non-source?25_0
13928          to-s28_0
13929          temp88_0
13930          inspector27_0))))))
13931(define syntax-add-shifts.1
13932  (|#%name|
13933   syntax-add-shifts
13934   (lambda (non-source?31_0 to-s34_0 shifts35_0 inspector33_0)
13935     (begin
13936       (if (if (null? shifts35_0) inspector33_0 #f)
13937         (syntax-set-inspector to-s34_0 inspector33_0)
13938         (let ((lst_0 (reverse$1 shifts35_0)))
13939           (begin
13940             (letrec*
13941              ((for-loop_0
13942                (|#%name|
13943                 for-loop
13944                 (lambda (s_0 lst_1 pos_0)
13945                   (begin
13946                     (if (if (pair? lst_1) #t #f)
13947                       (let ((shift_0 (unsafe-car lst_1)))
13948                         (let ((rest_0 (unsafe-cdr lst_1)))
13949                           (let ((s_1
13950                                  (let ((s_1
13951                                         (let ((temp92_0 (shift-from shift_0)))
13952                                           (let ((temp93_0 (shift-to shift_0)))
13953                                             (let ((temp94_0
13954                                                    (if (zero? pos_0)
13955                                                      inspector33_0
13956                                                      #f)))
13957                                               (let ((temp93_1 temp93_0)
13958                                                     (temp92_1 temp92_0))
13959                                                 (syntax-module-path-index-shift.1
13960                                                  non-source?31_0
13961                                                  s_0
13962                                                  temp92_1
13963                                                  temp93_1
13964                                                  temp94_0)))))))
13965                                    (values s_1))))
13966                             (for-loop_0 s_1 rest_0 (+ pos_0 1)))))
13967                       s_0))))))
13968              (for-loop_0 to-s34_0 lst_0 0)))))))))
13969(define syntax-set-inspector
13970  (lambda (s_0 insp_0)
13971    (let ((content*_0 (syntax-content* s_0)))
13972      (let ((content_0
13973             (if (modified-content? content*_0)
13974               (modified-content-content content*_0)
13975               content*_0)))
13976        (if (syntax?$1 s_0)
13977          (let ((or-part_0 (syntax-inspector s_0)))
13978            (let ((inspector96_0 (if or-part_0 or-part_0 insp_0)))
13979              (let ((content*97_0
13980                     (if (datum-has-elements? content_0)
13981                       (modified-content1.1
13982                        content_0
13983                        (propagation-mpi-shift
13984                         (if (modified-content? content*_0)
13985                           (modified-content-scope-propagations+taint
13986                            content*_0)
13987                           #f)
13988                         #f
13989                         insp_0
13990                         (syntax-scopes s_0)
13991                         (syntax-shifted-multi-scopes s_0)
13992                         (syntax-mpi-shifts s_0)))
13993                       content*_0)))
13994                (let ((inspector96_1 inspector96_0))
13995                  (syntax2.1
13996                   content*97_0
13997                   (syntax-scopes s_0)
13998                   (syntax-shifted-multi-scopes s_0)
13999                   (syntax-mpi-shifts s_0)
14000                   (syntax-srcloc$1 s_0)
14001                   (syntax-props s_0)
14002                   inspector96_1)))))
14003          (raise-argument-error 'struct-copy "syntax?" s_0))))))
14004(define 1/syntax-source-module
14005  (let ((syntax-source-module_0
14006         (|#%name|
14007          syntax-source-module
14008          (lambda (s38_0 source?37_0)
14009            (begin
14010              (begin
14011                (if (syntax?$1 s38_0)
14012                  (void)
14013                  (raise-argument-error 'syntax-track-origin "syntax?" s38_0))
14014                (let ((lst_0 (reverse$1 (syntax-mpi-shifts s38_0))))
14015                  (begin
14016                    (letrec*
14017                     ((for-loop_0
14018                       (|#%name|
14019                        for-loop
14020                        (lambda (result_0 lst_1)
14021                          (begin
14022                            (if (pair? lst_1)
14023                              (let ((shift_0 (unsafe-car lst_1)))
14024                                (let ((rest_0 (unsafe-cdr lst_1)))
14025                                  (let ((result_1
14026                                         (if (non-source-shift? shift_0)
14027                                           result_0
14028                                           (let ((result_1
14029                                                  (let ((from-mpi_0
14030                                                         (car shift_0)))
14031                                                    (call-with-values
14032                                                     (lambda ()
14033                                                       (1/module-path-index-split
14034                                                        from-mpi_0))
14035                                                     (case-lambda
14036                                                      ((path_0 base_0)
14037                                                       (if (not path_0)
14038                                                         (if (module-path-index-resolved
14039                                                              from-mpi_0)
14040                                                           (let ((mpi_0
14041                                                                  (apply-syntax-shifts
14042                                                                   from-mpi_0
14043                                                                   (syntax-mpi-shifts
14044                                                                    s38_0))))
14045                                                             (if source?37_0
14046                                                               (1/resolved-module-path-name
14047                                                                (1/module-path-index-resolve
14048                                                                 mpi_0
14049                                                                 #f))
14050                                                               mpi_0))
14051                                                           #f)
14052                                                         #f))
14053                                                      (args
14054                                                       (raise-binding-result-arity-error
14055                                                        2
14056                                                        args)))))))
14057                                             (values result_1)))))
14058                                    (if (if (not
14059                                             (let ((x_0 (list shift_0)))
14060                                               result_1))
14061                                          #t
14062                                          #f)
14063                                      (for-loop_0 result_1 rest_0)
14064                                      result_1))))
14065                              result_0))))))
14066                     (for-loop_0 #f lst_0))))))))))
14067    (|#%name|
14068     syntax-source-module
14069     (case-lambda
14070      ((s_0) (begin (syntax-source-module_0 s_0 #f)))
14071      ((s_0 source?37_0) (syntax-source-module_0 s_0 source?37_0))))))
14072(define 1/identifier-prune-to-source-module
14073  (|#%name|
14074   identifier-prune-to-source-module
14075   (lambda (id_0)
14076     (begin
14077       (begin
14078         (if (identifier? id_0)
14079           (void)
14080           (raise-argument-error
14081            'identifier-prune-to-source-module
14082            "identifier?"
14083            id_0))
14084         (let ((the-struct_0 (datum->syntax$1 #f (syntax-e$1 id_0) id_0 id_0)))
14085           (if (syntax?$1 the-struct_0)
14086             (let ((mpi-shifts98_0 (syntax-mpi-shifts id_0)))
14087               (syntax2.1
14088                (syntax-content* the-struct_0)
14089                (syntax-scopes the-struct_0)
14090                (syntax-shifted-multi-scopes the-struct_0)
14091                mpi-shifts98_0
14092                (syntax-srcloc$1 the-struct_0)
14093                (syntax-props the-struct_0)
14094                (syntax-inspector the-struct_0)))
14095             (raise-argument-error 'struct-copy "syntax?" the-struct_0))))))))
14096(define finish_3200
14097  (make-struct-type-install-properties
14098   '(provided)
14099   3
14100   0
14101   #f
14102   (list
14103    (cons prop:authentic #t)
14104    (cons
14105     prop:serialize
14106     (lambda (p_0 ser-push!_0 state_0)
14107       (begin
14108         (|#%app| ser-push!_0 'tag kw2897)
14109         (|#%app| ser-push!_0 (provided-binding p_0))
14110         (|#%app| ser-push!_0 (provided-protected? p_0))
14111         (|#%app| ser-push!_0 (provided-syntax? p_0))))))
14112   #f
14113   #f
14114   '(0 1 2)
14115   #f
14116   'provided))
14117(define struct:provided
14118  (make-record-type-descriptor*
14119   'provided
14120   #f
14121   (|#%nongenerative-uid| provided)
14122   #f
14123   #f
14124   3
14125   0))
14126(define effect_2629 (finish_3200 struct:provided))
14127(define provided1.1
14128  (|#%name|
14129   provided
14130   (record-constructor
14131    (make-record-constructor-descriptor struct:provided #f #f))))
14132(define provided? (|#%name| provided? (record-predicate struct:provided)))
14133(define provided-binding
14134  (|#%name| provided-binding (record-accessor struct:provided 0)))
14135(define provided-protected?
14136  (|#%name| provided-protected? (record-accessor struct:provided 1)))
14137(define provided-syntax?
14138  (|#%name| provided-syntax? (record-accessor struct:provided 2)))
14139(define provided-as-binding
14140  (lambda (v_0) (if (provided? v_0) (provided-binding v_0) v_0)))
14141(define provided-as-protected?
14142  (lambda (v_0) (if (provided? v_0) (provided-protected? v_0) #f)))
14143(define provided-as-transformer?
14144  (lambda (v_0) (if (provided? v_0) (provided-syntax? v_0) #f)))
14145(define deserialize-provided
14146  (lambda (binding_0 protected?_0 syntax?_0)
14147    (provided1.1 binding_0 protected?_0 syntax?_0)))
14148(define provide-binding-to-require-binding.1
14149  (|#%name|
14150   provide-binding-to-require-binding
14151   (lambda (mpi2_0
14152            phase+space-shift4_0
14153            provide-phase+space3_0
14154            self1_0
14155            binding/p9_0
14156            sym10_0)
14157     (begin
14158       (let ((binding_0 (provided-as-binding binding/p9_0)))
14159         (let ((from-mod_0 (module-binding-module binding_0)))
14160           (let ((temp16_0
14161                  (module-path-index-shift from-mod_0 self1_0 mpi2_0)))
14162             (let ((temp22_0
14163                    (if (not (provided-as-protected? binding/p9_0))
14164                      (module-binding-extra-inspector binding_0)
14165                      #f)))
14166               (let ((temp16_1 temp16_0))
14167                 (module-binding-update.1
14168                  temp22_0
14169                  null
14170                  #f
14171                  unsafe-undefined
14172                  temp16_1
14173                  mpi2_0
14174                  provide-phase+space3_0
14175                  phase+space-shift4_0
14176                  sym10_0
14177                  unsafe-undefined
14178                  unsafe-undefined
14179                  binding_0))))))))))
14180(define finish_1679
14181  (make-struct-type-install-properties
14182   '(bulk-binding)
14183   8
14184   0
14185   #f
14186   (list
14187    (cons prop:authentic #t)
14188    (cons
14189     prop:serialize
14190     (lambda (b_0 ser-push!_0 state_0)
14191       (begin
14192         (if (if (serialize-state-keep-provides? state_0)
14193               (|#%app| (serialize-state-keep-provides? state_0) b_0)
14194               #f)
14195           (begin
14196             (|#%app| ser-push!_0 'tag kw2882)
14197             (|#%app| ser-push!_0 (bulk-binding-provides b_0))
14198             (|#%app| ser-push!_0 (bulk-binding-self b_0)))
14199           (|#%app| ser-push!_0 'tag kw2762))
14200         (|#%app| ser-push!_0 (bulk-binding-prefix b_0))
14201         (|#%app| ser-push!_0 (bulk-binding-excepts b_0))
14202         (|#%app| ser-push!_0 (bulk-binding-mpi b_0))
14203         (|#%app| ser-push!_0 (bulk-binding-provide-phase+space b_0))
14204         (|#%app| ser-push!_0 (bulk-binding-phase+space-shift b_0))
14205         (|#%app| ser-push!_0 'tag kw2607))))
14206    (cons
14207     prop:bulk-binding
14208     (bulk-binding-class3.1
14209      (lambda (b_0 mpi-shifts_0)
14210        (let ((or-part_0 (bulk-binding-provides b_0)))
14211          (if or-part_0
14212            or-part_0
14213            (let ((mod-name_0
14214                   (begin-unsafe
14215                    (1/module-path-index-resolve
14216                     (apply-syntax-shifts
14217                      (bulk-binding-mpi b_0)
14218                      mpi-shifts_0)))))
14219              (begin
14220                (if (bulk-binding-bulk-binding-registry b_0)
14221                  (void)
14222                  (error
14223                   "namespace mismatch: no bulk-binding registry available:"
14224                   mod-name_0))
14225                (let ((table_0
14226                       (bulk-binding-registry-table
14227                        (bulk-binding-bulk-binding-registry b_0))))
14228                  (let ((bulk-provide_0 (hash-ref table_0 mod-name_0 #f)))
14229                    (begin
14230                      (if bulk-provide_0
14231                        (void)
14232                        (error
14233                         "namespace mismatch: bulk bindings not found in registry for module:"
14234                         mod-name_0))
14235                      (begin
14236                        (set-bulk-binding-self!
14237                         b_0
14238                         (bulk-provide-self bulk-provide_0))
14239                        (let ((provides_0
14240                               (hash-ref
14241                                (bulk-provide-provides bulk-provide_0)
14242                                (bulk-binding-provide-phase+space b_0)
14243                                hash2610)))
14244                          (let ((excepts_0 (bulk-binding-excepts b_0)))
14245                            (let ((prefix_0 (bulk-binding-prefix b_0)))
14246                              (let ((adjusted-provides_0
14247                                     (if (if prefix_0
14248                                           prefix_0
14249                                           (positive? (hash-count excepts_0)))
14250                                       (bulk-provides-add-prefix-remove-exceptions
14251                                        provides_0
14252                                        prefix_0
14253                                        excepts_0)
14254                                       provides_0)))
14255                                (begin
14256                                  (set-bulk-binding-provides!
14257                                   b_0
14258                                   adjusted-provides_0)
14259                                  adjusted-provides_0))))))))))))))
14260      (lambda (b_0 binding_0 sym_0)
14261        (let ((temp26_0
14262               (if (bulk-binding-prefix b_0)
14263                 (string->symbol
14264                  (let ((app_0 (symbol->string sym_0)))
14265                    (substring
14266                     app_0
14267                     (string-length
14268                      (symbol->string (bulk-binding-prefix b_0))))))
14269                 sym_0)))
14270          (let ((temp27_0 (bulk-binding-self b_0)))
14271            (let ((temp28_0 (bulk-binding-mpi b_0)))
14272              (let ((temp29_0 (bulk-binding-provide-phase+space b_0)))
14273                (let ((temp30_0 (bulk-binding-phase+space-shift b_0)))
14274                  (let ((temp29_1 temp29_0)
14275                        (temp28_1 temp28_0)
14276                        (temp27_1 temp27_0)
14277                        (temp26_1 temp26_0))
14278                    (provide-binding-to-require-binding.1
14279                     temp28_1
14280                     temp30_0
14281                     temp29_1
14282                     temp27_1
14283                     binding_0
14284                     temp26_1))))))))
14285      (lambda (b_0 mpi-shifts_0)
14286        (begin-unsafe
14287         (1/module-path-index-resolve
14288          (apply-syntax-shifts (bulk-binding-mpi b_0) mpi-shifts_0)))))))
14289   (current-inspector)
14290   #f
14291   '(1 2 4 5 6 7)
14292   #f
14293   'bulk-binding))
14294(define struct:bulk-binding
14295  (make-record-type-descriptor*
14296   'bulk-binding
14297   #f
14298   (|#%nongenerative-uid| bulk-binding)
14299   #f
14300   #f
14301   8
14302   9))
14303(define effect_2834 (finish_1679 struct:bulk-binding))
14304(define bulk-binding12.1
14305  (|#%name|
14306   bulk-binding
14307   (record-constructor
14308    (make-record-constructor-descriptor struct:bulk-binding #f #f))))
14309(define bulk-binding?
14310  (|#%name| bulk-binding? (record-predicate struct:bulk-binding)))
14311(define bulk-binding-provides
14312  (|#%name| bulk-binding-provides (record-accessor struct:bulk-binding 0)))
14313(define bulk-binding-prefix
14314  (|#%name| bulk-binding-prefix (record-accessor struct:bulk-binding 1)))
14315(define bulk-binding-excepts
14316  (|#%name| bulk-binding-excepts (record-accessor struct:bulk-binding 2)))
14317(define bulk-binding-self
14318  (|#%name| bulk-binding-self (record-accessor struct:bulk-binding 3)))
14319(define bulk-binding-mpi
14320  (|#%name| bulk-binding-mpi (record-accessor struct:bulk-binding 4)))
14321(define bulk-binding-provide-phase+space
14322  (|#%name|
14323   bulk-binding-provide-phase+space
14324   (record-accessor struct:bulk-binding 5)))
14325(define bulk-binding-phase+space-shift
14326  (|#%name|
14327   bulk-binding-phase+space-shift
14328   (record-accessor struct:bulk-binding 6)))
14329(define bulk-binding-bulk-binding-registry
14330  (|#%name|
14331   bulk-binding-bulk-binding-registry
14332   (record-accessor struct:bulk-binding 7)))
14333(define set-bulk-binding-provides!
14334  (|#%name| set-bulk-binding-provides! (record-mutator struct:bulk-binding 0)))
14335(define set-bulk-binding-self!
14336  (|#%name| set-bulk-binding-self! (record-mutator struct:bulk-binding 3)))
14337(define deserialize-bulk-binding
14338  (lambda (prefix_0
14339           excepts_0
14340           mpi_0
14341           provide-phase+space_0
14342           phase-level_0
14343           bulk-binding-registry_0)
14344    (bulk-binding12.1
14345     #f
14346     prefix_0
14347     excepts_0
14348     #f
14349     mpi_0
14350     (intern-phase+space provide-phase+space_0)
14351     phase-level_0
14352     bulk-binding-registry_0)))
14353(define deserialize-bulk-binding+provides
14354  (lambda (provides_0
14355           self_0
14356           prefix_0
14357           excepts_0
14358           mpi_0
14359           provide-phase+space_0
14360           phase-level_0
14361           bulk-binding-registry_0)
14362    (bulk-binding12.1
14363     provides_0
14364     prefix_0
14365     excepts_0
14366     self_0
14367     mpi_0
14368     (intern-phase+space provide-phase+space_0)
14369     phase-level_0
14370     bulk-binding-registry_0)))
14371(define bulk-provides-add-prefix-remove-exceptions
14372  (lambda (provides_0 prefix_0 excepts_0)
14373    (begin
14374      (letrec*
14375       ((for-loop_0
14376         (|#%name|
14377          for-loop
14378          (lambda (table_0 i_0)
14379            (begin
14380              (if i_0
14381                (call-with-values
14382                 (lambda () (hash-iterate-key+value provides_0 i_0))
14383                 (case-lambda
14384                  ((sym_0 val_0)
14385                   (let ((table_1
14386                          (if (hash-ref excepts_0 sym_0 #f)
14387                            table_0
14388                            (if (symbol-interned? sym_0)
14389                              (let ((table_1
14390                                     (call-with-values
14391                                      (lambda ()
14392                                        (values
14393                                         (if prefix_0
14394                                           (string->symbol
14395                                            (format "~a~a" prefix_0 sym_0))
14396                                           sym_0)
14397                                         val_0))
14398                                      (case-lambda
14399                                       ((key_0 val_1)
14400                                        (hash-set table_0 key_0 val_1))
14401                                       (args
14402                                        (raise-binding-result-arity-error
14403                                         2
14404                                         args))))))
14405                                (values table_1))
14406                              table_0))))
14407                     (for-loop_0 table_1 (hash-iterate-next provides_0 i_0))))
14408                  (args (raise-binding-result-arity-error 2 args))))
14409                table_0))))))
14410       (for-loop_0 hash2725 (hash-iterate-first provides_0))))))
14411(define bulk-binding-module-name
14412  (lambda (b_0 mpi-shifts_0)
14413    (1/module-path-index-resolve
14414     (apply-syntax-shifts (bulk-binding-mpi b_0) mpi-shifts_0))))
14415(define finish_2579
14416  (make-struct-type-install-properties
14417   '(bulk-provide)
14418   2
14419   0
14420   #f
14421   null
14422   (current-inspector)
14423   #f
14424   '(0 1)
14425   #f
14426   'bulk-provide))
14427(define struct:bulk-provide
14428  (make-record-type-descriptor*
14429   'bulk-provide
14430   #f
14431   (|#%nongenerative-uid| bulk-provide)
14432   #f
14433   #f
14434   2
14435   0))
14436(define effect_2392 (finish_2579 struct:bulk-provide))
14437(define bulk-provide13.1
14438  (|#%name|
14439   bulk-provide
14440   (record-constructor
14441    (make-record-constructor-descriptor struct:bulk-provide #f #f))))
14442(define bulk-provide?_2131
14443  (|#%name| bulk-provide? (record-predicate struct:bulk-provide)))
14444(define bulk-provide?
14445  (|#%name|
14446   bulk-provide?
14447   (lambda (v)
14448     (if (bulk-provide?_2131 v)
14449       #t
14450       ($value
14451        (if (impersonator? v)
14452          (bulk-provide?_2131 (impersonator-val v))
14453          #f))))))
14454(define bulk-provide-self_2134
14455  (|#%name| bulk-provide-self (record-accessor struct:bulk-provide 0)))
14456(define bulk-provide-self
14457  (|#%name|
14458   bulk-provide-self
14459   (lambda (s)
14460     (if (bulk-provide?_2131 s)
14461       (bulk-provide-self_2134 s)
14462       ($value
14463        (impersonate-ref
14464         bulk-provide-self_2134
14465         struct:bulk-provide
14466         0
14467         s
14468         'bulk-provide
14469         'self))))))
14470(define bulk-provide-provides_2573
14471  (|#%name| bulk-provide-provides (record-accessor struct:bulk-provide 1)))
14472(define bulk-provide-provides
14473  (|#%name|
14474   bulk-provide-provides
14475   (lambda (s)
14476     (if (bulk-provide?_2131 s)
14477       (bulk-provide-provides_2573 s)
14478       ($value
14479        (impersonate-ref
14480         bulk-provide-provides_2573
14481         struct:bulk-provide
14482         1
14483         s
14484         'bulk-provide
14485         'provides))))))
14486(define finish_2603
14487  (make-struct-type-install-properties
14488   '(bulk-binding-registry)
14489   1
14490   0
14491   #f
14492   null
14493   (current-inspector)
14494   #f
14495   '(0)
14496   #f
14497   'bulk-binding-registry))
14498(define struct:bulk-binding-registry
14499  (make-record-type-descriptor*
14500   'bulk-binding-registry
14501   #f
14502   (|#%nongenerative-uid| bulk-binding-registry)
14503   #f
14504   #f
14505   1
14506   0))
14507(define effect_2403 (finish_2603 struct:bulk-binding-registry))
14508(define bulk-binding-registry14.1
14509  (|#%name|
14510   bulk-binding-registry
14511   (record-constructor
14512    (make-record-constructor-descriptor struct:bulk-binding-registry #f #f))))
14513(define bulk-binding-registry?_2831
14514  (|#%name|
14515   bulk-binding-registry?
14516   (record-predicate struct:bulk-binding-registry)))
14517(define bulk-binding-registry?
14518  (|#%name|
14519   bulk-binding-registry?
14520   (lambda (v)
14521     (if (bulk-binding-registry?_2831 v)
14522       #t
14523       ($value
14524        (if (impersonator? v)
14525          (bulk-binding-registry?_2831 (impersonator-val v))
14526          #f))))))
14527(define bulk-binding-registry-table_2379
14528  (|#%name|
14529   bulk-binding-registry-table
14530   (record-accessor struct:bulk-binding-registry 0)))
14531(define bulk-binding-registry-table
14532  (|#%name|
14533   bulk-binding-registry-table
14534   (lambda (s)
14535     (if (bulk-binding-registry?_2831 s)
14536       (bulk-binding-registry-table_2379 s)
14537       ($value
14538        (impersonate-ref
14539         bulk-binding-registry-table_2379
14540         struct:bulk-binding-registry
14541         0
14542         s
14543         'bulk-binding-registry
14544         'table))))))
14545(define make-bulk-binding-registry
14546  (lambda () (bulk-binding-registry14.1 (make-hasheq))))
14547(define register-bulk-provide!
14548  (lambda (bulk-binding-registry_0 mod-name_0 self_0 provides_0)
14549    (let ((app_0 (bulk-binding-registry-table bulk-binding-registry_0)))
14550      (hash-set! app_0 mod-name_0 (bulk-provide13.1 self_0 provides_0)))))
14551(define registered-bulk-provide?
14552  (lambda (bulk-binding-registry_0 mod-name_0)
14553    (if (hash-ref
14554         (bulk-binding-registry-table bulk-binding-registry_0)
14555         mod-name_0
14556         #f)
14557      #t
14558      #f)))
14559(define generate-lift-key (lambda () (gensym 'lift)))
14560(define finish_2813
14561  (make-struct-type-install-properties
14562   '(root-expand-context)
14563   4
14564   0
14565   #f
14566   (list (cons prop:authentic #t))
14567   (current-inspector)
14568   #f
14569   '(0 1 2 3)
14570   #f
14571   'root-expand-context/outer))
14572(define struct:root-expand-context/outer
14573  (make-record-type-descriptor*
14574   'root-expand-context
14575   #f
14576   (|#%nongenerative-uid| root-expand-context)
14577   #f
14578   #f
14579   4
14580   0))
14581(define effect_2124 (finish_2813 struct:root-expand-context/outer))
14582(define root-expand-context/outer1.1
14583  (|#%name|
14584   root-expand-context/outer
14585   (record-constructor
14586    (make-record-constructor-descriptor
14587     struct:root-expand-context/outer
14588     #f
14589     #f))))
14590(define root-expand-context/outer?
14591  (|#%name|
14592   root-expand-context?
14593   (record-predicate struct:root-expand-context/outer)))
14594(define root-expand-context/outer-inner
14595  (|#%name|
14596   root-expand-context-inner
14597   (record-accessor struct:root-expand-context/outer 0)))
14598(define root-expand-context/outer-post-expansion
14599  (|#%name|
14600   root-expand-context-post-expansion
14601   (record-accessor struct:root-expand-context/outer 1)))
14602(define root-expand-context/outer-use-site-scopes
14603  (|#%name|
14604   root-expand-context-use-site-scopes
14605   (record-accessor struct:root-expand-context/outer 2)))
14606(define root-expand-context/outer-frame-id
14607  (|#%name|
14608   root-expand-context-frame-id
14609   (record-accessor struct:root-expand-context/outer 3)))
14610(define finish_2837
14611  (make-struct-type-install-properties
14612   '(root-expand-context/inner)
14613   7
14614   0
14615   #f
14616   (list (cons prop:authentic #t))
14617   (current-inspector)
14618   #f
14619   '(0 1 2 3 4 5 6)
14620   #f
14621   'root-expand-context/inner))
14622(define struct:root-expand-context/inner
14623  (make-record-type-descriptor*
14624   'root-expand-context/inner
14625   #f
14626   (|#%nongenerative-uid| root-expand-context/inner)
14627   #f
14628   #f
14629   7
14630   0))
14631(define effect_2880 (finish_2837 struct:root-expand-context/inner))
14632(define root-expand-context/inner2.1
14633  (|#%name|
14634   root-expand-context/inner
14635   (record-constructor
14636    (make-record-constructor-descriptor
14637     struct:root-expand-context/inner
14638     #f
14639     #f))))
14640(define root-expand-context/inner?
14641  (|#%name|
14642   root-expand-context/inner?
14643   (record-predicate struct:root-expand-context/inner)))
14644(define root-expand-context/inner-self-mpi
14645  (|#%name|
14646   root-expand-context/inner-self-mpi
14647   (record-accessor struct:root-expand-context/inner 0)))
14648(define root-expand-context/inner-module-scopes
14649  (|#%name|
14650   root-expand-context/inner-module-scopes
14651   (record-accessor struct:root-expand-context/inner 1)))
14652(define root-expand-context/inner-top-level-bind-scope
14653  (|#%name|
14654   root-expand-context/inner-top-level-bind-scope
14655   (record-accessor struct:root-expand-context/inner 2)))
14656(define root-expand-context/inner-all-scopes-stx
14657  (|#%name|
14658   root-expand-context/inner-all-scopes-stx
14659   (record-accessor struct:root-expand-context/inner 3)))
14660(define root-expand-context/inner-defined-syms
14661  (|#%name|
14662   root-expand-context/inner-defined-syms
14663   (record-accessor struct:root-expand-context/inner 4)))
14664(define root-expand-context/inner-counter
14665  (|#%name|
14666   root-expand-context/inner-counter
14667   (record-accessor struct:root-expand-context/inner 5)))
14668(define root-expand-context/inner-lift-key
14669  (|#%name|
14670   root-expand-context/inner-lift-key
14671   (record-accessor struct:root-expand-context/inner 6)))
14672(define root-expand-context/make
14673  (lambda (self-mpi_0
14674           module-scopes_0
14675           post-expansion_0
14676           top-level-bind-scope_0
14677           all-scopes-stx_0
14678           use-site-scopes_0
14679           defined-syms_0
14680           frame-id_0
14681           counter_0
14682           lift-key_0)
14683    (root-expand-context/outer1.1
14684     (root-expand-context/inner2.1
14685      self-mpi_0
14686      module-scopes_0
14687      top-level-bind-scope_0
14688      all-scopes-stx_0
14689      defined-syms_0
14690      counter_0
14691      lift-key_0)
14692     post-expansion_0
14693     use-site-scopes_0
14694     frame-id_0)))
14695(define root-expand-context-post-expansion
14696  (lambda (v_0) (root-expand-context/outer-post-expansion v_0)))
14697(define root-expand-context-use-site-scopes
14698  (lambda (v_0) (root-expand-context/outer-use-site-scopes v_0)))
14699(define root-expand-context-frame-id
14700  (lambda (v_0) (root-expand-context/outer-frame-id v_0)))
14701(define root-expand-context-self-mpi
14702  (lambda (v_0)
14703    (root-expand-context/inner-self-mpi
14704     (root-expand-context/outer-inner v_0))))
14705(define root-expand-context-module-scopes
14706  (lambda (v_0)
14707    (root-expand-context/inner-module-scopes
14708     (root-expand-context/outer-inner v_0))))
14709(define root-expand-context-top-level-bind-scope
14710  (lambda (v_0)
14711    (root-expand-context/inner-top-level-bind-scope
14712     (root-expand-context/outer-inner v_0))))
14713(define root-expand-context-all-scopes-stx
14714  (lambda (v_0)
14715    (root-expand-context/inner-all-scopes-stx
14716     (root-expand-context/outer-inner v_0))))
14717(define root-expand-context-defined-syms
14718  (lambda (v_0)
14719    (root-expand-context/inner-defined-syms
14720     (root-expand-context/outer-inner v_0))))
14721(define root-expand-context-counter
14722  (lambda (v_0)
14723    (root-expand-context/inner-counter (root-expand-context/outer-inner v_0))))
14724(define root-expand-context-lift-key
14725  (lambda (v_0)
14726    (root-expand-context/inner-lift-key
14727     (root-expand-context/outer-inner v_0))))
14728(define make-root-expand-context.1
14729  (|#%name|
14730   make-root-expand-context
14731   (lambda (all-scopes-stx7_0
14732            initial-scopes4_0
14733            outside-scope5_0
14734            post-expansion-scope6_0
14735            self-mpi3_0)
14736     (begin
14737       (let ((outside-scope_0
14738              (if (eq? outside-scope5_0 unsafe-undefined)
14739                top-level-common-scope
14740                outside-scope5_0)))
14741         (let ((post-expansion-scope_0
14742                (if (eq? post-expansion-scope6_0 unsafe-undefined)
14743                  (new-multi-scope 'top-level)
14744                  post-expansion-scope6_0)))
14745           (let ((module-scopes_0
14746                  (list*
14747                   post-expansion-scope_0
14748                   outside-scope_0
14749                   initial-scopes4_0)))
14750             (let ((top-level-bind-scope_0 (new-scope 'module)))
14751               (let ((all-scopes-stx_0
14752                      (if all-scopes-stx7_0
14753                        all-scopes-stx7_0
14754                        (add-scopes empty-syntax module-scopes_0))))
14755                 (let ((use-site-scopes_0 (box null)))
14756                   (let ((defined-syms_0 (make-hasheqv)))
14757                     (let ((frame-id_0
14758                            (string->uninterned-symbol "root-frame")))
14759                       (let ((counter_0 (box 0)))
14760                         (let ((lift-key_0 (generate-lift-key)))
14761                           (let ((counter_1 counter_0)
14762                                 (frame-id_1 frame-id_0)
14763                                 (defined-syms_1 defined-syms_0)
14764                                 (use-site-scopes_1 use-site-scopes_0)
14765                                 (all-scopes-stx_1 all-scopes-stx_0)
14766                                 (top-level-bind-scope_1
14767                                  top-level-bind-scope_0))
14768                             (begin-unsafe
14769                              (root-expand-context/outer1.1
14770                               (root-expand-context/inner2.1
14771                                self-mpi3_0
14772                                module-scopes_0
14773                                top-level-bind-scope_1
14774                                all-scopes-stx_1
14775                                defined-syms_1
14776                                counter_1
14777                                lift-key_0)
14778                               post-expansion-scope_0
14779                               use-site-scopes_1
14780                               frame-id_1)))))))))))))))))
14781(define apply-post-expansion
14782  (lambda (pe_0 s_0)
14783    (if (not pe_0)
14784      s_0
14785      (if (shifted-multi-scope? pe_0)
14786        (push-scope s_0 pe_0)
14787        (if (pair? pe_0)
14788          (let ((temp16_0 (push-scope s_0 (car pe_0))))
14789            (let ((temp17_0 (cdr pe_0)))
14790              (let ((temp16_1 temp16_0))
14791                (syntax-add-shifts.1 #f temp16_1 temp17_0 #f))))
14792          (|#%app| pe_0 s_0))))))
14793(define post-expansion-scope
14794  (lambda (pe_0)
14795    (if (shifted-multi-scope? pe_0)
14796      pe_0
14797      (if (pair? pe_0)
14798        (car pe_0)
14799        (error
14800         'post-expansion-scope
14801         "internal error: cannot extract scope from ~s"
14802         pe_0)))))
14803(define root-expand-context-encode-for-module
14804  (lambda (ctx_0 orig-self_0 new-self_0)
14805    (datum->syntax$1
14806     #f
14807     (let ((app_0
14808            (add-scopes
14809             empty-syntax
14810             (begin-unsafe
14811              (root-expand-context/inner-module-scopes
14812               (root-expand-context/outer-inner ctx_0))))))
14813       (let ((app_1
14814              (apply-post-expansion
14815               (begin-unsafe (root-expand-context/outer-post-expansion ctx_0))
14816               empty-syntax)))
14817         (let ((app_2
14818                (let ((temp18_0
14819                       (begin-unsafe
14820                        (root-expand-context/inner-all-scopes-stx
14821                         (root-expand-context/outer-inner ctx_0)))))
14822                  (syntax-module-path-index-shift.1
14823                   #f
14824                   temp18_0
14825                   orig-self_0
14826                   new-self_0
14827                   #f))))
14828           (let ((app_3
14829                  (add-scopes
14830                   empty-syntax
14831                   (unbox
14832                    (begin-unsafe
14833                     (root-expand-context/outer-use-site-scopes ctx_0))))))
14834             (let ((app_4
14835                    (let ((ht_0
14836                           (begin-unsafe
14837                            (root-expand-context/inner-defined-syms
14838                             (root-expand-context/outer-inner ctx_0)))))
14839                      (begin
14840                        (letrec*
14841                         ((for-loop_0
14842                           (|#%name|
14843                            for-loop
14844                            (lambda (table_0 i_0)
14845                              (begin
14846                                (if i_0
14847                                  (call-with-values
14848                                   (lambda ()
14849                                     (hash-iterate-key+value ht_0 i_0))
14850                                   (case-lambda
14851                                    ((phase_0 ht_1)
14852                                     (let ((table_1
14853                                            (let ((table_1
14854                                                   (call-with-values
14855                                                    (lambda ()
14856                                                      (values phase_0 ht_1))
14857                                                    (case-lambda
14858                                                     ((key_0 val_0)
14859                                                      (hash-set
14860                                                       table_0
14861                                                       key_0
14862                                                       val_0))
14863                                                     (args
14864                                                      (raise-binding-result-arity-error
14865                                                       2
14866                                                       args))))))
14867                                              (values table_1))))
14868                                       (for-loop_0
14869                                        table_1
14870                                        (hash-iterate-next ht_0 i_0))))
14871                                    (args
14872                                     (raise-binding-result-arity-error
14873                                      2
14874                                      args))))
14875                                  table_0))))))
14876                         (for-loop_0 hash2589 (hash-iterate-first ht_0)))))))
14877               (vector
14878                app_0
14879                app_1
14880                app_2
14881                app_3
14882                app_4
14883                (begin-unsafe (root-expand-context/outer-frame-id ctx_0))
14884                (unbox
14885                 (begin-unsafe
14886                  (root-expand-context/inner-counter
14887                   (root-expand-context/outer-inner ctx_0)))))))))))))
14888(define root-expand-context-decode-for-module
14889  (lambda (vec-s_0 self_0)
14890    (let ((vec_0 (if (syntax?$1 vec-s_0) (syntax-e$1 vec-s_0) #f)))
14891      (begin
14892        (if (if (vector? vec_0)
14893              (if (= (vector-length vec_0) 7)
14894                (if (syntax?$1 (vector-ref vec_0 0))
14895                  (if (syntax-with-one-scope? (vector-ref vec_0 1))
14896                    (if (syntax?$1 (vector-ref vec_0 2))
14897                      (if (syntax?$1 (vector-ref vec_0 3))
14898                        (if (defined-syms-hash?
14899                             (syntax-e$1 (vector-ref vec_0 4)))
14900                          (if (symbol? (syntax-e$1 (vector-ref vec_0 5)))
14901                            (exact-nonnegative-integer?
14902                             (syntax-e$1 (vector-ref vec_0 6)))
14903                            #f)
14904                          #f)
14905                        #f)
14906                      #f)
14907                    #f)
14908                  #f)
14909                #f)
14910              #f)
14911          (void)
14912          (error
14913           'root-expand-context-decode-for-module
14914           "bad encoding: ~s"
14915           vec-s_0))
14916        (let ((module-scopes_0 (extract-scope-list (vector-ref vec_0 0))))
14917          (let ((post-expansion_0
14918                 (let ((app_0 (extract-scope (vector-ref vec_0 1))))
14919                   (cons
14920                    app_0
14921                    (let ((stx_0 (vector-ref vec_0 1)))
14922                      (begin-unsafe (syntax-mpi-shifts stx_0)))))))
14923            (let ((top-level-bind-scope_0 (new-scope 'module)))
14924              (let ((all-scopes-stx_0 (vector-ref vec_0 2)))
14925                (let ((use-site-scopes_0
14926                       (box (extract-scope-list (vector-ref vec_0 3)))))
14927                  (let ((defined-syms_0
14928                         (unpack-defined-syms (vector-ref vec_0 4))))
14929                    (let ((frame-id_0 (syntax-e$1 (vector-ref vec_0 5))))
14930                      (let ((counter_0
14931                             (box (syntax-e$1 (vector-ref vec_0 6)))))
14932                        (let ((lift-key_0 (generate-lift-key)))
14933                          (let ((counter_1 counter_0)
14934                                (frame-id_1 frame-id_0)
14935                                (defined-syms_1 defined-syms_0)
14936                                (use-site-scopes_1 use-site-scopes_0)
14937                                (all-scopes-stx_1 all-scopes-stx_0)
14938                                (top-level-bind-scope_1 top-level-bind-scope_0)
14939                                (post-expansion_1 post-expansion_0)
14940                                (module-scopes_1 module-scopes_0))
14941                            (begin-unsafe
14942                             (root-expand-context/outer1.1
14943                              (root-expand-context/inner2.1
14944                               self_0
14945                               module-scopes_1
14946                               top-level-bind-scope_1
14947                               all-scopes-stx_1
14948                               defined-syms_1
14949                               counter_1
14950                               lift-key_0)
14951                              post-expansion_1
14952                              use-site-scopes_1
14953                              frame-id_1))))))))))))))))
14954(define defined-syms-hash?
14955  (lambda (v_0)
14956    (begin
14957      (letrec*
14958       ((for-loop_0
14959         (|#%name|
14960          for-loop
14961          (lambda (result_0 i_0)
14962            (begin
14963              (if i_0
14964                (call-with-values
14965                 (lambda () (hash-iterate-key+value v_0 i_0))
14966                 (case-lambda
14967                  ((phase_0 ht-s_0)
14968                   (let ((result_1
14969                          (let ((result_1
14970                                 (if (phase? phase_0)
14971                                   (if (hash? (syntax-e$1 ht-s_0))
14972                                     (let ((ht_0 (syntax-e$1 ht-s_0)))
14973                                       (begin
14974                                         (letrec*
14975                                          ((for-loop_1
14976                                            (|#%name|
14977                                             for-loop
14978                                             (lambda (result_1 i_1)
14979                                               (begin
14980                                                 (if i_1
14981                                                   (call-with-values
14982                                                    (lambda ()
14983                                                      (hash-iterate-key+value
14984                                                       ht_0
14985                                                       i_1))
14986                                                    (case-lambda
14987                                                     ((sym_0 id_0)
14988                                                      (let ((result_2
14989                                                             (let ((result_2
14990                                                                    (if (symbol?
14991                                                                         sym_0)
14992                                                                      (identifier?
14993                                                                       id_0)
14994                                                                      #f)))
14995                                                               (values
14996                                                                result_2))))
14997                                                        (if (if (not
14998                                                                 (let ((x_0
14999                                                                        (list
15000                                                                         sym_0
15001                                                                         id_0)))
15002                                                                   (not
15003                                                                    result_2)))
15004                                                              #t
15005                                                              #f)
15006                                                          (for-loop_1
15007                                                           result_2
15008                                                           (hash-iterate-next
15009                                                            ht_0
15010                                                            i_1))
15011                                                          result_2)))
15012                                                     (args
15013                                                      (raise-binding-result-arity-error
15014                                                       2
15015                                                       args))))
15016                                                   result_1))))))
15017                                          (for-loop_1
15018                                           #t
15019                                           (hash-iterate-first ht_0)))))
15020                                     #f)
15021                                   #f)))
15022                            (values result_1))))
15023                     (if (if (not
15024                              (let ((x_0 (list phase_0 ht-s_0)))
15025                                (not result_1)))
15026                           #t
15027                           #f)
15028                       (for-loop_0 result_1 (hash-iterate-next v_0 i_0))
15029                       result_1)))
15030                  (args (raise-binding-result-arity-error 2 args))))
15031                result_0))))))
15032       (for-loop_0 #t (hash-iterate-first v_0))))))
15033(define extract-scope-list
15034  (lambda (stx_0)
15035    (map_1346 generalize-scope (set->list (syntax-scope-set stx_0 0)))))
15036(define syntax-with-one-scope?
15037  (lambda (stx_0)
15038    (if (syntax?$1 stx_0)
15039      (=
15040       1
15041       (let ((s_0 (syntax-scope-set stx_0 0)))
15042         (begin-unsafe (hash-count s_0))))
15043      #f)))
15044(define extract-scope
15045  (lambda (stx_0)
15046    (let ((s_0 (syntax-scope-set stx_0 0)))
15047      (generalize-scope (set-first s_0)))))
15048(define extract-shifts (lambda (stx_0) (syntax-mpi-shifts stx_0)))
15049(define unpack-defined-syms
15050  (lambda (v_0)
15051    (hash-copy
15052     (let ((ht_0 (syntax-e$1 v_0)))
15053       (begin
15054         (letrec*
15055          ((for-loop_0
15056            (|#%name|
15057             for-loop
15058             (lambda (table_0 i_0)
15059               (begin
15060                 (if i_0
15061                   (call-with-values
15062                    (lambda () (hash-iterate-key+value ht_0 i_0))
15063                    (case-lambda
15064                     ((phase_0 ht-s_0)
15065                      (let ((table_1
15066                             (let ((table_1
15067                                    (call-with-values
15068                                     (lambda ()
15069                                       (values
15070                                        phase_0
15071                                        (hash-copy
15072                                         (let ((ht_1 (syntax-e$1 ht-s_0)))
15073                                           (begin
15074                                             (letrec*
15075                                              ((for-loop_1
15076                                                (|#%name|
15077                                                 for-loop
15078                                                 (lambda (table_1 i_1)
15079                                                   (begin
15080                                                     (if i_1
15081                                                       (call-with-values
15082                                                        (lambda ()
15083                                                          (hash-iterate-key+value
15084                                                           ht_1
15085                                                           i_1))
15086                                                        (case-lambda
15087                                                         ((sym_0 id_0)
15088                                                          (let ((table_2
15089                                                                 (let ((table_2
15090                                                                        (call-with-values
15091                                                                         (lambda ()
15092                                                                           (values
15093                                                                            sym_0
15094                                                                            id_0))
15095                                                                         (case-lambda
15096                                                                          ((key_0
15097                                                                            val_0)
15098                                                                           (hash-set
15099                                                                            table_1
15100                                                                            key_0
15101                                                                            val_0))
15102                                                                          (args
15103                                                                           (raise-binding-result-arity-error
15104                                                                            2
15105                                                                            args))))))
15106                                                                   (values
15107                                                                    table_2))))
15108                                                            (for-loop_1
15109                                                             table_2
15110                                                             (hash-iterate-next
15111                                                              ht_1
15112                                                              i_1))))
15113                                                         (args
15114                                                          (raise-binding-result-arity-error
15115                                                           2
15116                                                           args))))
15117                                                       table_1))))))
15118                                              (for-loop_1
15119                                               hash2725
15120                                               (hash-iterate-first ht_1))))))))
15121                                     (case-lambda
15122                                      ((key_0 val_0)
15123                                       (hash-set table_0 key_0 val_0))
15124                                      (args
15125                                       (raise-binding-result-arity-error
15126                                        2
15127                                        args))))))
15128                               (values table_1))))
15129                        (for-loop_0 table_1 (hash-iterate-next ht_0 i_0))))
15130                     (args (raise-binding-result-arity-error 2 args))))
15131                   table_0))))))
15132          (for-loop_0 hash2589 (hash-iterate-first ht_0))))))))
15133(define 1/primitive-table primitive-table)
15134(define 1/primitive->compiled-position primitive->compiled-position)
15135(define 1/compiled-position->primitive compiled-position->primitive)
15136(define 1/primitive-in-category? primitive-in-category?)
15137(define 1/primitive-lookup primitive-lookup)
15138(define linklet?$1 linklet?)
15139(define 1/compile-linklet compile-linklet)
15140(define recompile-linklet$1 recompile-linklet)
15141(define eval-linklet$1 eval-linklet)
15142(define instantiate-linklet$1 instantiate-linklet)
15143(define linklet-import-variables$1 linklet-import-variables)
15144(define linklet-export-variables$1 linklet-export-variables)
15145(define 1/instance? instance?)
15146(define 1/make-instance make-instance)
15147(define 1/instance-name instance-name)
15148(define 1/instance-data instance-data)
15149(define 1/instance-variable-names instance-variable-names)
15150(define 1/instance-variable-value instance-variable-value)
15151(define 1/instance-set-variable-value! instance-set-variable-value!)
15152(define 1/instance-unset-variable! instance-unset-variable!)
15153(define 1/instance-describe-variable! instance-describe-variable!)
15154(define 1/linklet-virtual-machine-bytes linklet-virtual-machine-bytes)
15155(define 1/write-linklet-bundle-hash write-linklet-bundle-hash)
15156(define 1/read-linklet-bundle-hash read-linklet-bundle-hash)
15157(define 1/variable-reference? variable-reference?)
15158(define 1/variable-reference->instance variable-reference->instance)
15159(define 1/variable-reference-constant? variable-reference-constant?)
15160(define 1/variable-reference-from-unsafe? variable-reference-from-unsafe?)
15161(define effect_3049
15162  (begin
15163    (void
15164     (if variable-reference-constant?
15165       (void)
15166       (error
15167        "broken '#%linklet primitive table; maybe you need to use \"bootstrap-run.rkt\"")))
15168    (void)))
15169(define finish_2938
15170  (make-struct-type-install-properties
15171   '(module-registry)
15172   2
15173   0
15174   #f
15175   null
15176   (current-inspector)
15177   #f
15178   '(0 1)
15179   #f
15180   'module-registry))
15181(define struct:module-registry
15182  (make-record-type-descriptor*
15183   'module-registry
15184   #f
15185   (|#%nongenerative-uid| module-registry)
15186   #f
15187   #f
15188   2
15189   0))
15190(define effect_2565 (finish_2938 struct:module-registry))
15191(define module-registry1.1
15192  (|#%name|
15193   module-registry
15194   (record-constructor
15195    (make-record-constructor-descriptor struct:module-registry #f #f))))
15196(define module-registry?_2653
15197  (|#%name| module-registry? (record-predicate struct:module-registry)))
15198(define module-registry?
15199  (|#%name|
15200   module-registry?
15201   (lambda (v)
15202     (if (module-registry?_2653 v)
15203       #t
15204       ($value
15205        (if (impersonator? v)
15206          (module-registry?_2653 (impersonator-val v))
15207          #f))))))
15208(define module-registry-declarations_3107
15209  (|#%name|
15210   module-registry-declarations
15211   (record-accessor struct:module-registry 0)))
15212(define module-registry-declarations
15213  (|#%name|
15214   module-registry-declarations
15215   (lambda (s)
15216     (if (module-registry?_2653 s)
15217       (module-registry-declarations_3107 s)
15218       ($value
15219        (impersonate-ref
15220         module-registry-declarations_3107
15221         struct:module-registry
15222         0
15223         s
15224         'module-registry
15225         'declarations))))))
15226(define module-registry-lock-box_2205
15227  (|#%name|
15228   module-registry-lock-box
15229   (record-accessor struct:module-registry 1)))
15230(define module-registry-lock-box
15231  (|#%name|
15232   module-registry-lock-box
15233   (lambda (s)
15234     (if (module-registry?_2653 s)
15235       (module-registry-lock-box_2205 s)
15236       ($value
15237        (impersonate-ref
15238         module-registry-lock-box_2205
15239         struct:module-registry
15240         1
15241         s
15242         'module-registry
15243         'lock-box))))))
15244(define make-module-registry
15245  (lambda ()
15246    (let ((app_0 (make-hasheq))) (module-registry1.1 app_0 (box #f)))))
15247(define registry-call-with-lock
15248  (lambda (r_0 proc_0)
15249    (let ((lock-box_0 (module-registry-lock-box r_0)))
15250      (letrec*
15251       ((loop_0
15252         (|#%name|
15253          loop
15254          (lambda ()
15255            (begin
15256              (let ((v_0 (unbox lock-box_0)))
15257                (if (let ((or-part_0 (not v_0)))
15258                      (if or-part_0
15259                        or-part_0
15260                        (let ((app_0 (car v_0)))
15261                          (sync/timeout
15262                           0
15263                           app_0
15264                           (let ((or-part_1 (weak-box-value (cdr v_0))))
15265                             (if or-part_1 or-part_1 never-evt))))))
15266                  (let ((sema_0 (make-semaphore)))
15267                    (let ((lock_0
15268                           (let ((app_0 (semaphore-peek-evt sema_0)))
15269                             (cons app_0 (make-weak-box (current-thread))))))
15270                      (|#%app|
15271                       (dynamic-wind
15272                        void
15273                        (lambda ()
15274                          (if (unsafe-box*-cas! lock-box_0 v_0 lock_0)
15275                            (|#%call-with-values|
15276                             proc_0
15277                             (lambda results_0
15278                               (lambda () (apply values results_0))))
15279                            (lambda () (loop_0))))
15280                        (lambda () (semaphore-post sema_0))))))
15281                  (if (let ((app_0 (current-thread)))
15282                        (eq? app_0 (weak-box-value (cdr v_0))))
15283                    (|#%app| proc_0)
15284                    (begin
15285                      (let ((app_0 (car v_0)))
15286                        (sync
15287                         app_0
15288                         (let ((or-part_0 (weak-box-value (cdr v_0))))
15289                           (if or-part_0 or-part_0 never-evt))))
15290                      (loop_0))))))))))
15291       (loop_0)))))
15292(define finish_2468
15293  (make-struct-type-install-properties
15294   '(namespace)
15295   15
15296   0
15297   #f
15298   (list
15299    (cons prop:authentic #t)
15300    (cons
15301     prop:custom-write
15302     (lambda (ns_0 port_0 mode_0)
15303       (begin
15304         (write-string "#<namespace" port_0)
15305         (let ((n_0 (namespace-source-name ns_0)))
15306           (begin
15307             (if n_0
15308               (fprintf port_0 ":~a" (|#%app| namespace->name ns_0))
15309               (void))
15310             (let ((0-phase_0 (namespace-0-phase ns_0)))
15311               (let ((phase-level_0 (phase- (namespace-phase ns_0) 0-phase_0)))
15312                 (begin
15313                   (if (begin-unsafe (eq? phase-level_0 0))
15314                     (void)
15315                     (fprintf port_0 ":~s" phase-level_0))
15316                   (if (begin-unsafe (eq? 0-phase_0 0))
15317                     (void)
15318                     (fprintf
15319                      port_0
15320                      "~a~s"
15321                      (if (positive? 0-phase_0) "+" "")
15322                      0-phase_0))
15323                   (write-string ">" port_0))))))))))
15324   (current-inspector)
15325   #f
15326   '(0 1 2 3 4 5 6 7 8 9 10 11 13 14)
15327   #f
15328   'namespace))
15329(define struct:namespace
15330  (make-record-type-descriptor*
15331   'namespace
15332   #f
15333   (|#%nongenerative-uid| namespace)
15334   #f
15335   #f
15336   15
15337   4096))
15338(define effect_3128 (finish_2468 struct:namespace))
15339(define namespace1.1
15340  (|#%name|
15341   namespace
15342   (record-constructor
15343    (make-record-constructor-descriptor struct:namespace #f #f))))
15344(define 1/namespace? (|#%name| namespace? (record-predicate struct:namespace)))
15345(define namespace-mpi
15346  (|#%name| namespace-mpi (record-accessor struct:namespace 0)))
15347(define namespace-source-name
15348  (|#%name| namespace-source-name (record-accessor struct:namespace 1)))
15349(define namespace-root-expand-ctx
15350  (|#%name| namespace-root-expand-ctx (record-accessor struct:namespace 2)))
15351(define namespace-phase
15352  (|#%name| namespace-phase (record-accessor struct:namespace 3)))
15353(define namespace-0-phase
15354  (|#%name| namespace-0-phase (record-accessor struct:namespace 4)))
15355(define namespace-phase-to-namespace
15356  (|#%name| namespace-phase-to-namespace (record-accessor struct:namespace 5)))
15357(define namespace-phase-level-to-definitions
15358  (|#%name|
15359   namespace-phase-level-to-definitions
15360   (record-accessor struct:namespace 6)))
15361(define namespace-module-registry$1
15362  (|#%name| namespace-module-registry (record-accessor struct:namespace 7)))
15363(define namespace-bulk-binding-registry
15364  (|#%name|
15365   namespace-bulk-binding-registry
15366   (record-accessor struct:namespace 8)))
15367(define namespace-submodule-declarations
15368  (|#%name|
15369   namespace-submodule-declarations
15370   (record-accessor struct:namespace 9)))
15371(define namespace-root-namespace
15372  (|#%name| namespace-root-namespace (record-accessor struct:namespace 10)))
15373(define namespace-declaration-inspector
15374  (|#%name|
15375   namespace-declaration-inspector
15376   (record-accessor struct:namespace 11)))
15377(define namespace-inspector
15378  (|#%name| namespace-inspector (record-accessor struct:namespace 12)))
15379(define namespace-available-module-instances
15380  (|#%name|
15381   namespace-available-module-instances
15382   (record-accessor struct:namespace 13)))
15383(define namespace-module-instances
15384  (|#%name| namespace-module-instances (record-accessor struct:namespace 14)))
15385(define set-namespace-inspector!
15386  (|#%name| set-namespace-inspector! (record-mutator struct:namespace 12)))
15387(define finish_2741
15388  (make-struct-type-install-properties
15389   '(definitions)
15390   2
15391   0
15392   #f
15393   (list (cons prop:authentic #t))
15394   (current-inspector)
15395   #f
15396   '(0 1)
15397   #f
15398   'definitions))
15399(define struct:definitions
15400  (make-record-type-descriptor*
15401   'definitions
15402   #f
15403   (|#%nongenerative-uid| definitions)
15404   #f
15405   #f
15406   2
15407   0))
15408(define effect_2319 (finish_2741 struct:definitions))
15409(define definitions2.1
15410  (|#%name|
15411   definitions
15412   (record-constructor
15413    (make-record-constructor-descriptor struct:definitions #f #f))))
15414(define definitions?
15415  (|#%name| definitions? (record-predicate struct:definitions)))
15416(define definitions-variables
15417  (|#%name| definitions-variables (record-accessor struct:definitions 0)))
15418(define definitions-transformers
15419  (|#%name| definitions-transformers (record-accessor struct:definitions 1)))
15420(define make-namespace (lambda () (new-namespace.1 #t unsafe-undefined #f)))
15421(define new-namespace.1
15422  (|#%name|
15423   new-namespace
15424   (lambda (register?4_0 root-expand-ctx3_0 share-from-ns7_0)
15425     (begin
15426       (let ((root-expand-ctx_0
15427              (if (eq? root-expand-ctx3_0 unsafe-undefined)
15428                (make-root-expand-context.1
15429                 #f
15430                 null
15431                 unsafe-undefined
15432                 unsafe-undefined
15433                 top-level-module-path-index)
15434                root-expand-ctx3_0)))
15435         (let ((phase_0
15436                (if share-from-ns7_0 (namespace-phase share-from-ns7_0) 0)))
15437           (let ((app_0 (box root-expand-ctx_0)))
15438             (let ((ns_0
15439                    (let ((app_1 (make-small-hasheqv)))
15440                      (let ((app_2 (make-small-hasheqv)))
15441                        (let ((app_3
15442                               (if share-from-ns7_0
15443                                 (namespace-module-registry$1 share-from-ns7_0)
15444                                 (make-module-registry))))
15445                          (let ((app_4
15446                                 (if share-from-ns7_0
15447                                   (namespace-bulk-binding-registry
15448                                    share-from-ns7_0)
15449                                   (make-bulk-binding-registry))))
15450                            (let ((app_5 (make-small-hasheq)))
15451                              (let ((app_6
15452                                     (if share-from-ns7_0
15453                                       (let ((or-part_0
15454                                              (namespace-root-namespace
15455                                               share-from-ns7_0)))
15456                                         (if or-part_0
15457                                           or-part_0
15458                                           share-from-ns7_0))
15459                                       #f)))
15460                                (let ((app_7
15461                                       (make-inspector
15462                                        (current-code-inspector))))
15463                                  (let ((app_8
15464                                         (if share-from-ns7_0
15465                                           (namespace-available-module-instances
15466                                            share-from-ns7_0)
15467                                           (make-hasheqv))))
15468                                    (namespace1.1
15469                                     top-level-module-path-index
15470                                     #f
15471                                     app_0
15472                                     phase_0
15473                                     phase_0
15474                                     app_1
15475                                     app_2
15476                                     app_3
15477                                     app_4
15478                                     app_5
15479                                     app_6
15480                                     #f
15481                                     app_7
15482                                     app_8
15483                                     (if share-from-ns7_0
15484                                       (namespace-module-instances
15485                                        share-from-ns7_0)
15486                                       (make-hasheqv)))))))))))))
15487               (begin
15488                 (if register?4_0
15489                   (let ((small-ht_0 (namespace-phase-to-namespace ns_0)))
15490                     (begin-unsafe
15491                      (set-box!
15492                       small-ht_0
15493                       (hash-set (unbox small-ht_0) phase_0 ns_0))))
15494                   (void))
15495                 ns_0)))))))))
15496(define 1/current-namespace
15497  (make-parameter
15498   (make-namespace)
15499   (lambda (v_0)
15500     (begin
15501       (if (1/namespace? v_0)
15502         (void)
15503         (raise-argument-error 'current-namespace "namespace?" v_0))
15504       v_0))
15505   'current-namespace))
15506(define namespace-get-root-expand-ctx
15507  (lambda (ns_0) (force (unbox (namespace-root-expand-ctx ns_0)))))
15508(define namespace-set-root-expand-ctx!
15509  (lambda (ns_0 root-ctx_0)
15510    (set-box! (namespace-root-expand-ctx ns_0) root-ctx_0)))
15511(define namespace-self-mpi
15512  (lambda (ns_0)
15513    (let ((v_0 (namespace-get-root-expand-ctx ns_0)))
15514      (begin-unsafe
15515       (root-expand-context/inner-self-mpi
15516        (root-expand-context/outer-inner v_0))))))
15517(define namespace-self-mpi/no-top-level
15518  (lambda (ns_0)
15519    (let ((mpi_0
15520           (let ((v_0 (namespace-get-root-expand-ctx ns_0)))
15521             (begin-unsafe
15522              (root-expand-context/inner-self-mpi
15523               (root-expand-context/outer-inner v_0))))))
15524      (if (if mpi_0 (begin-unsafe (eq? top-level-module-path-index mpi_0)) #f)
15525        #f
15526        mpi_0))))
15527(define namespace->module
15528  (lambda (ns_0 name_0)
15529    (let ((small-ht_0 (namespace-submodule-declarations ns_0)))
15530      (let ((or-part_0 (begin-unsafe (hash-ref (unbox small-ht_0) name_0 #f))))
15531        (if or-part_0
15532          or-part_0
15533          (hash-ref
15534           (module-registry-declarations (namespace-module-registry$1 ns_0))
15535           name_0
15536           #f))))))
15537(define namespace->namespace-at-phase
15538  (lambda (ns_0 phase_0)
15539    (let ((small-ht_0 (namespace-phase-to-namespace ns_0)))
15540      (let ((or-part_0
15541             (begin-unsafe (hash-ref (unbox small-ht_0) phase_0 #f))))
15542        (if or-part_0
15543          or-part_0
15544          (let ((p-ns_0
15545                 (if (1/namespace? ns_0)
15546                   (let ((or-part_1 (namespace-root-namespace ns_0)))
15547                     (let ((root-namespace18_0 (if or-part_1 or-part_1 ns_0)))
15548                       (namespace1.1
15549                        (namespace-mpi ns_0)
15550                        (namespace-source-name ns_0)
15551                        (namespace-root-expand-ctx ns_0)
15552                        phase_0
15553                        (namespace-0-phase ns_0)
15554                        (namespace-phase-to-namespace ns_0)
15555                        (namespace-phase-level-to-definitions ns_0)
15556                        (namespace-module-registry$1 ns_0)
15557                        (namespace-bulk-binding-registry ns_0)
15558                        (namespace-submodule-declarations ns_0)
15559                        root-namespace18_0
15560                        (namespace-declaration-inspector ns_0)
15561                        (namespace-inspector ns_0)
15562                        (namespace-available-module-instances ns_0)
15563                        (namespace-module-instances ns_0))))
15564                   (raise-argument-error 'struct-copy "namespace?" ns_0))))
15565            (begin
15566              (let ((small-ht_1 (namespace-phase-to-namespace ns_0)))
15567                (begin-unsafe
15568                 (set-box!
15569                  small-ht_1
15570                  (hash-set (unbox small-ht_1) phase_0 p-ns_0))))
15571              p-ns_0)))))))
15572(define namespace->name
15573  (lambda (ns_0)
15574    (let ((n_0 (namespace-source-name ns_0)))
15575      (let ((s_0
15576             (if (not n_0)
15577               'top-level
15578               (if (symbol? n_0)
15579                 (format "'~s" n_0)
15580                 (string-append "\"" (path->string n_0) "\"")))))
15581        (let ((r_0
15582               (1/resolved-module-path-name
15583                (1/module-path-index-resolve (namespace-mpi ns_0)))))
15584          (if (pair? r_0)
15585            (string-append
15586             "(submod "
15587             s_0
15588             " "
15589             (substring (format "~s" (cdr r_0)) 1))
15590            s_0))))))
15591(define namespace->definitions
15592  (lambda (ns_0 phase-level_0)
15593    (let ((small-ht_0 (namespace-phase-level-to-definitions ns_0)))
15594      (let ((d_0
15595             (begin-unsafe (hash-ref (unbox small-ht_0) phase-level_0 #f))))
15596        (if d_0
15597          d_0
15598          (let ((p-ns_0
15599                 (namespace->namespace-at-phase
15600                  ns_0
15601                  (phase+ (namespace-0-phase ns_0) phase-level_0))))
15602            (let ((d_1
15603                   (let ((app_0
15604                          (make-instance (namespace->name p-ns_0) p-ns_0)))
15605                     (definitions2.1 app_0 (make-hasheq)))))
15606              (begin
15607                (let ((small-ht_1 (namespace-phase-level-to-definitions ns_0)))
15608                  (begin-unsafe
15609                   (set-box!
15610                    small-ht_1
15611                    (hash-set (unbox small-ht_1) phase-level_0 d_1))))
15612                d_1))))))))
15613(define namespace-set-variable!
15614  (let ((namespace-set-variable!_0
15615         (|#%name|
15616          namespace-set-variable!
15617          (lambda (ns10_0 phase-level11_0 name12_0 val13_0 as-constant?9_0)
15618            (begin
15619              (let ((d_0 (namespace->definitions ns10_0 phase-level11_0)))
15620                (instance-set-variable-value!
15621                 (definitions-variables d_0)
15622                 name12_0
15623                 val13_0
15624                 (if as-constant?9_0 'constant #f))))))))
15625    (case-lambda
15626     ((ns_0 phase-level_0 name_0 val_0)
15627      (namespace-set-variable!_0 ns_0 phase-level_0 name_0 val_0 #f))
15628     ((ns_0 phase-level_0 name_0 val_0 as-constant?9_0)
15629      (namespace-set-variable!_0
15630       ns_0
15631       phase-level_0
15632       name_0
15633       val_0
15634       as-constant?9_0)))))
15635(define namespace-set-consistent!
15636  (lambda (ns_0 phase-level_0 name_0 val_0)
15637    (let ((d_0 (namespace->definitions ns_0 phase-level_0)))
15638      (instance-set-variable-value!
15639       (definitions-variables d_0)
15640       name_0
15641       val_0
15642       'consistent))))
15643(define namespace-unset-variable!
15644  (lambda (ns_0 phase-level_0 name_0)
15645    (let ((d_0 (namespace->definitions ns_0 phase-level_0)))
15646      (instance-unset-variable! (definitions-variables d_0) name_0))))
15647(define namespace-set-transformer!
15648  (lambda (ns_0 phase-level_0 name_0 val_0)
15649    (let ((d_0 (namespace->definitions ns_0 (add1 phase-level_0))))
15650      (hash-set! (definitions-transformers d_0) name_0 val_0))))
15651(define namespace-unset-transformer!
15652  (lambda (ns_0 phase-level_0 name_0)
15653    (let ((d_0 (namespace->definitions ns_0 (add1 phase-level_0))))
15654      (hash-remove! (definitions-transformers d_0) name_0))))
15655(define namespace-get-variable
15656  (lambda (ns_0 phase-level_0 name_0 fail-k_0)
15657    (let ((d_0 (namespace->definitions ns_0 phase-level_0)))
15658      (instance-variable-value (definitions-variables d_0) name_0 fail-k_0))))
15659(define namespace-get-transformer
15660  (lambda (ns_0 phase-level_0 name_0 fail-k_0)
15661    (let ((d_0 (namespace->definitions ns_0 (add1 phase-level_0))))
15662      (hash-ref (definitions-transformers d_0) name_0 fail-k_0))))
15663(define namespace->instance
15664  (lambda (ns_0 phase-shift_0)
15665    (definitions-variables (namespace->definitions ns_0 phase-shift_0))))
15666(define namespace-same-instance?
15667  (lambda (a-ns_0 b-ns_0)
15668    (let ((app_0
15669           (let ((small-ht_0 (namespace-phase-level-to-definitions a-ns_0)))
15670             (begin-unsafe (hash-ref (unbox small-ht_0) 0 'no-a)))))
15671      (eq?
15672       app_0
15673       (let ((small-ht_0 (namespace-phase-level-to-definitions b-ns_0)))
15674         (begin-unsafe (hash-ref (unbox small-ht_0) 0 'no-b)))))))
15675(define original-property-sym (gensym 'original))
15676(define syntax->list$1
15677  (|#%name|
15678   syntax->list
15679   (lambda (s_0)
15680     (begin
15681       (let ((l_0
15682              (letrec*
15683               ((loop_0
15684                 (|#%name|
15685                  loop
15686                  (lambda (s_1)
15687                    (begin
15688                      (if (pair? s_1)
15689                        (let ((app_0 (car s_1)))
15690                          (cons app_0 (loop_0 (cdr s_1))))
15691                        (if (syntax?$1 s_1)
15692                          (loop_0 (syntax-e$1 s_1))
15693                          s_1)))))))
15694               (loop_0 s_0))))
15695         (if (list? l_0) l_0 #f))))))
15696(define missing$1 (gensym))
15697(define syntax-track-origin$1
15698  (let ((syntax-track-origin_0
15699         (|#%name|
15700          syntax-track-origin
15701          (lambda (new-stx2_0 old-stx3_0 id1_0)
15702            (begin
15703              (let ((id_0
15704                     (if (eq? id1_0 unsafe-undefined)
15705                       (if (identifier? old-stx3_0)
15706                         old-stx3_0
15707                         (let ((v_0 (syntax-e$1 old-stx3_0)))
15708                           (if (pair? v_0) (car v_0) #f)))
15709                       id1_0)))
15710                (let ((old-props_0
15711                       (hash-remove
15712                        (syntax-props old-stx3_0)
15713                        original-property-sym)))
15714                  (if (zero? (hash-count old-props_0))
15715                    (if id_0
15716                      (syntax-property$1
15717                       new-stx2_0
15718                       'origin
15719                       (cons
15720                        id_0
15721                        (hash-ref (syntax-props new-stx2_0) 'origin null)))
15722                      new-stx2_0)
15723                    (let ((new-props_0 (syntax-props new-stx2_0)))
15724                      (if (zero? (hash-count new-props_0))
15725                        (if id_0
15726                          (let ((old-origin_0
15727                                 (plain-property-value
15728                                  (hash-ref old-props_0 'origin missing$1))))
15729                            (let ((origin_0
15730                                   (if (eq? old-origin_0 missing$1)
15731                                     (list id_0)
15732                                     (cons id_0 old-origin_0))))
15733                              (if (syntax?$1 new-stx2_0)
15734                                (let ((props4_0
15735                                       (hash-set
15736                                        old-props_0
15737                                        'origin
15738                                        origin_0)))
15739                                  (syntax2.1
15740                                   (syntax-content* new-stx2_0)
15741                                   (syntax-scopes new-stx2_0)
15742                                   (syntax-shifted-multi-scopes new-stx2_0)
15743                                   (syntax-mpi-shifts new-stx2_0)
15744                                   (syntax-srcloc$1 new-stx2_0)
15745                                   props4_0
15746                                   (syntax-inspector new-stx2_0)))
15747                                (raise-argument-error
15748                                 'struct-copy
15749                                 "syntax?"
15750                                 new-stx2_0))))
15751                          (if (syntax?$1 new-stx2_0)
15752                            (syntax2.1
15753                             (syntax-content* new-stx2_0)
15754                             (syntax-scopes new-stx2_0)
15755                             (syntax-shifted-multi-scopes new-stx2_0)
15756                             (syntax-mpi-shifts new-stx2_0)
15757                             (syntax-srcloc$1 new-stx2_0)
15758                             old-props_0
15759                             (syntax-inspector new-stx2_0))
15760                            (raise-argument-error
15761                             'struct-copy
15762                             "syntax?"
15763                             new-stx2_0)))
15764                        (let ((old-props-with-origin_0
15765                               (if id_0
15766                                 (hash-set
15767                                  old-props_0
15768                                  'origin
15769                                  (cons
15770                                   id_0
15771                                   (hash-ref old-props_0 'origin null)))
15772                                 old-props_0)))
15773                          (let ((updated-props_0
15774                                 (if (let ((app_0
15775                                            (hash-count
15776                                             old-props-with-origin_0)))
15777                                       (< app_0 (hash-count new-props_0)))
15778                                   (begin
15779                                     (letrec*
15780                                      ((for-loop_0
15781                                        (|#%name|
15782                                         for-loop
15783                                         (lambda (new-props_1 i_0)
15784                                           (begin
15785                                             (if i_0
15786                                               (call-with-values
15787                                                (lambda ()
15788                                                  (unsafe-immutable-hash-iterate-key+value
15789                                                   old-props-with-origin_0
15790                                                   i_0))
15791                                                (case-lambda
15792                                                 ((k_0 v_0)
15793                                                  (let ((new-props_2
15794                                                         (let ((new-props_2
15795                                                                (let ((new-v_0
15796                                                                       (hash-ref
15797                                                                        new-props_1
15798                                                                        k_0
15799                                                                        missing$1)))
15800                                                                  (hash-set
15801                                                                   new-props_1
15802                                                                   k_0
15803                                                                   (if (eq?
15804                                                                        new-v_0
15805                                                                        missing$1)
15806                                                                     v_0
15807                                                                     (cons/preserve
15808                                                                      new-v_0
15809                                                                      v_0))))))
15810                                                           (values
15811                                                            new-props_2))))
15812                                                    (for-loop_0
15813                                                     new-props_2
15814                                                     (unsafe-immutable-hash-iterate-next
15815                                                      old-props-with-origin_0
15816                                                      i_0))))
15817                                                 (args
15818                                                  (raise-binding-result-arity-error
15819                                                   2
15820                                                   args))))
15821                                               new-props_1))))))
15822                                      (for-loop_0
15823                                       new-props_0
15824                                       (unsafe-immutable-hash-iterate-first
15825                                        old-props-with-origin_0))))
15826                                   (begin
15827                                     (letrec*
15828                                      ((for-loop_0
15829                                        (|#%name|
15830                                         for-loop
15831                                         (lambda (old-props_1 i_0)
15832                                           (begin
15833                                             (if i_0
15834                                               (call-with-values
15835                                                (lambda ()
15836                                                  (unsafe-immutable-hash-iterate-key+value
15837                                                   new-props_0
15838                                                   i_0))
15839                                                (case-lambda
15840                                                 ((k_0 v_0)
15841                                                  (let ((old-props_2
15842                                                         (let ((old-props_2
15843                                                                (let ((old-v_0
15844                                                                       (hash-ref
15845                                                                        old-props_1
15846                                                                        k_0
15847                                                                        missing$1)))
15848                                                                  (hash-set
15849                                                                   old-props_1
15850                                                                   k_0
15851                                                                   (if (eq?
15852                                                                        old-v_0
15853                                                                        missing$1)
15854                                                                     v_0
15855                                                                     (cons/preserve
15856                                                                      v_0
15857                                                                      old-v_0))))))
15858                                                           (values
15859                                                            old-props_2))))
15860                                                    (for-loop_0
15861                                                     old-props_2
15862                                                     (unsafe-immutable-hash-iterate-next
15863                                                      new-props_0
15864                                                      i_0))))
15865                                                 (args
15866                                                  (raise-binding-result-arity-error
15867                                                   2
15868                                                   args))))
15869                                               old-props_1))))))
15870                                      (for-loop_0
15871                                       old-props-with-origin_0
15872                                       (unsafe-immutable-hash-iterate-first
15873                                        new-props_0)))))))
15874                            (if (syntax?$1 new-stx2_0)
15875                              (syntax2.1
15876                               (syntax-content* new-stx2_0)
15877                               (syntax-scopes new-stx2_0)
15878                               (syntax-shifted-multi-scopes new-stx2_0)
15879                               (syntax-mpi-shifts new-stx2_0)
15880                               (syntax-srcloc$1 new-stx2_0)
15881                               updated-props_0
15882                               (syntax-inspector new-stx2_0))
15883                              (raise-argument-error
15884                               'struct-copy
15885                               "syntax?"
15886                               new-stx2_0))))))))))))))
15887    (|#%name|
15888     syntax-track-origin
15889     (case-lambda
15890      ((new-stx_0 old-stx_0)
15891       (begin (syntax-track-origin_0 new-stx_0 old-stx_0 unsafe-undefined)))
15892      ((new-stx_0 old-stx_0 id1_0)
15893       (syntax-track-origin_0 new-stx_0 old-stx_0 id1_0))))))
15894(define cons/preserve
15895  (lambda (a_0 b_0)
15896    (if (let ((or-part_0 (preserved-property-value? a_0)))
15897          (if or-part_0 or-part_0 (preserved-property-value? b_0)))
15898      (preserved-property-value1.1
15899       (let ((app_0 (plain-property-value a_0)))
15900         (cons app_0 (plain-property-value b_0))))
15901      (cons a_0 b_0))))
15902(define syntax-track-origin*
15903  (lambda (old-stxes_0 new-stx_0)
15904    (begin
15905      (letrec*
15906       ((for-loop_0
15907         (|#%name|
15908          for-loop
15909          (lambda (new-stx_1 lst_0)
15910            (begin
15911              (if (pair? lst_0)
15912                (let ((old-stx_0 (unsafe-car lst_0)))
15913                  (let ((rest_0 (unsafe-cdr lst_0)))
15914                    (let ((new-stx_2
15915                           (let ((new-stx_2
15916                                  (syntax-track-origin$1 new-stx_1 old-stx_0)))
15917                             (values new-stx_2))))
15918                      (for-loop_0 new-stx_2 rest_0))))
15919                new-stx_1))))))
15920       (for-loop_0 new-stx_0 old-stxes_0)))))
15921(define finish_2245
15922  (make-struct-type-install-properties
15923   '(syntax-binding-set)
15924   1
15925   0
15926   #f
15927   null
15928   (current-inspector)
15929   #f
15930   '(0)
15931   #f
15932   'syntax-binding-set))
15933(define struct:syntax-binding-set
15934  (make-record-type-descriptor*
15935   'syntax-binding-set
15936   #f
15937   (|#%nongenerative-uid| syntax-binding-set)
15938   #f
15939   #f
15940   1
15941   0))
15942(define effect_2582 (finish_2245 struct:syntax-binding-set))
15943(define syntax-binding-set1.1
15944  (|#%name|
15945   syntax-binding-set
15946   (record-constructor
15947    (make-record-constructor-descriptor struct:syntax-binding-set #f #f))))
15948(define 1/syntax-binding-set?_3050
15949  (|#%name| syntax-binding-set? (record-predicate struct:syntax-binding-set)))
15950(define 1/syntax-binding-set?
15951  (|#%name|
15952   syntax-binding-set?
15953   (lambda (v)
15954     (if (1/syntax-binding-set?_3050 v)
15955       #t
15956       ($value
15957        (if (impersonator? v)
15958          (1/syntax-binding-set?_3050 (impersonator-val v))
15959          #f))))))
15960(define syntax-binding-set-binds_2873
15961  (|#%name|
15962   syntax-binding-set-binds
15963   (record-accessor struct:syntax-binding-set 0)))
15964(define syntax-binding-set-binds
15965  (|#%name|
15966   syntax-binding-set-binds
15967   (lambda (s)
15968     (if (1/syntax-binding-set?_3050 s)
15969       (syntax-binding-set-binds_2873 s)
15970       ($value
15971        (impersonate-ref
15972         syntax-binding-set-binds_2873
15973         struct:syntax-binding-set
15974         0
15975         s
15976         'syntax-binding-set
15977         'binds))))))
15978(define finish_2672
15979  (make-struct-type-install-properties
15980   '(bind)
15981   3
15982   0
15983   #f
15984   null
15985   (current-inspector)
15986   #f
15987   '(0 1 2)
15988   #f
15989   'bind))
15990(define struct:bind
15991  (make-record-type-descriptor*
15992   'bind
15993   #f
15994   (|#%nongenerative-uid| bind)
15995   #f
15996   #f
15997   3
15998   0))
15999(define effect_2584 (finish_2672 struct:bind))
16000(define bind2.1
16001  (|#%name|
16002   bind
16003   (record-constructor
16004    (make-record-constructor-descriptor struct:bind #f #f))))
16005(define bind?_2465 (|#%name| bind? (record-predicate struct:bind)))
16006(define bind?
16007  (|#%name|
16008   bind?
16009   (lambda (v)
16010     (if (bind?_2465 v)
16011       #t
16012       ($value (if (impersonator? v) (bind?_2465 (impersonator-val v)) #f))))))
16013(define bind-sym_2139 (|#%name| bind-sym (record-accessor struct:bind 0)))
16014(define bind-sym
16015  (|#%name|
16016   bind-sym
16017   (lambda (s)
16018     (if (bind?_2465 s)
16019       (bind-sym_2139 s)
16020       ($value (impersonate-ref bind-sym_2139 struct:bind 0 s 'bind 'sym))))))
16021(define bind-phase_2605 (|#%name| bind-phase (record-accessor struct:bind 1)))
16022(define bind-phase
16023  (|#%name|
16024   bind-phase
16025   (lambda (s)
16026     (if (bind?_2465 s)
16027       (bind-phase_2605 s)
16028       ($value
16029        (impersonate-ref bind-phase_2605 struct:bind 1 s 'bind 'phase))))))
16030(define bind-binding_2667
16031  (|#%name| bind-binding (record-accessor struct:bind 2)))
16032(define bind-binding
16033  (|#%name|
16034   bind-binding
16035   (lambda (s)
16036     (if (bind?_2465 s)
16037       (bind-binding_2667 s)
16038       ($value
16039        (impersonate-ref bind-binding_2667 struct:bind 2 s 'bind 'binding))))))
16040(define syntax-binding-set-extend$1
16041  (|#%name|
16042   syntax-binding-set-extend
16043   (lambda (bs_0
16044            as-sym_0
16045            as-phase_0
16046            mpi_0
16047            sym_0
16048            phase_0
16049            nominal-mpi_0
16050            nominal-phase+space_0
16051            nominal-sym_0
16052            nominal-require-phase+space-shift_0
16053            inspector_0)
16054     (begin
16055       (if (1/syntax-binding-set? bs_0)
16056         (let ((binds5_0
16057                (let ((app_0
16058                       (bind2.1
16059                        as-sym_0
16060                        as-phase_0
16061                        (make-module-binding.1
16062                         inspector_0
16063                         null
16064                         #f
16065                         #f
16066                         nominal-mpi_0
16067                         nominal-phase+space_0
16068                         nominal-require-phase+space-shift_0
16069                         nominal-sym_0
16070                         mpi_0
16071                         phase_0
16072                         sym_0))))
16073                  (cons app_0 (syntax-binding-set-binds bs_0)))))
16074           (syntax-binding-set1.1 binds5_0))
16075         (raise-argument-error 'struct-copy "syntax-binding-set?" bs_0))))))
16076(define syntax-binding-set->syntax$1
16077  (|#%name|
16078   syntax-binding-set->syntax
16079   (lambda (bs_0 datum_0)
16080     (begin
16081       (let ((s_0
16082              (let ((app_0 (datum->syntax$1 #f datum_0)))
16083                (add-scope app_0 (new-multi-scope 'binding-set)))))
16084         (begin
16085           (let ((lst_0 (syntax-binding-set-binds bs_0)))
16086             (begin
16087               (letrec*
16088                ((for-loop_0
16089                  (|#%name|
16090                   for-loop
16091                   (lambda (lst_1)
16092                     (begin
16093                       (if (pair? lst_1)
16094                         (let ((bind_0 (unsafe-car lst_1)))
16095                           (let ((rest_0 (unsafe-cdr lst_1)))
16096                             (begin
16097                               (let ((temp14_0
16098                                      (syntax-scope-set
16099                                       s_0
16100                                       (bind-phase bind_0))))
16101                                 (let ((temp15_0 (bind-sym bind_0)))
16102                                   (let ((temp16_0 (bind-binding bind_0)))
16103                                     (let ((temp15_1 temp15_0)
16104                                           (temp14_1 temp14_0))
16105                                       (add-binding-in-scopes!.1
16106                                        #f
16107                                        temp14_1
16108                                        temp15_1
16109                                        temp16_0)))))
16110                               (for-loop_0 rest_0))))
16111                         (values)))))))
16112                (for-loop_0 lst_0))))
16113           (void)
16114           s_0))))))
16115(define-values
16116 (1/struct:exn:fail:syntax
16117  make-exn:fail:syntax$1
16118  1/exn:fail:syntax?
16119  1/exn:fail:syntax-exprs)
16120 (call-with-values
16121  (lambda ()
16122    (make-struct-type
16123     'exn:fail:syntax
16124     struct:exn:fail
16125     1
16126     0
16127     #f
16128     (list
16129      (cons
16130       prop:exn:srclocs
16131       (lambda (e_0)
16132         (filter
16133          values
16134          (map_1346
16135           syntax-srcloc$1
16136           (|#%app|
16137            (check-not-unsafe-undefined
16138             1/exn:fail:syntax-exprs
16139             '1/exn:fail:syntax-exprs)
16140            e_0))))))
16141     #f
16142     #f
16143     '(0)
16144     (lambda (str_0 cm_0 exprs_0 info_0)
16145       (begin
16146         (if (if (list? exprs_0) (andmap_2344 syntax?$1 exprs_0) #f)
16147           (void)
16148           (raise-argument-error 'exn:fail:syntax "(listof syntax?)" exprs_0))
16149         (values str_0 cm_0 exprs_0)))
16150     'exn:fail:syntax))
16151  (case-lambda
16152   ((struct:_0 make-_0 ?_0 -ref_0 -set!_0)
16153    (values
16154     struct:_0
16155     make-_0
16156     ?_0
16157     (make-struct-field-accessor -ref_0 0 'exprs)))
16158   (args (raise-binding-result-arity-error 5 args)))))
16159(define-values
16160 (1/struct:exn:fail:syntax:unbound
16161  make-exn:fail:syntax:unbound$1
16162  1/exn:fail:syntax:unbound?)
16163 (call-with-values
16164  (lambda ()
16165    (make-struct-type
16166     'exn:fail:syntax:unbound
16167     1/struct:exn:fail:syntax
16168     0
16169     0
16170     #f
16171     null
16172     #f
16173     #f
16174     '()
16175     #f
16176     'exn:fail:syntax:unbound))
16177  (case-lambda
16178   ((struct:_0 make-_0 ?_0 -ref_0 -set!_0) (values struct:_0 make-_0 ?_0))
16179   (args (raise-binding-result-arity-error 5 args)))))
16180(define raise-syntax-error$1
16181  (let ((raise-syntax-error_0
16182         (|#%name|
16183          raise-syntax-error
16184          (lambda (given-name5_0
16185                   message6_0
16186                   expr1_0
16187                   sub-expr2_0
16188                   extra-sources3_0
16189                   message-suffix4_0)
16190            (begin
16191              (do-raise-syntax-error
16192               'raise-syntax-error
16193               make-exn:fail:syntax$1
16194               given-name5_0
16195               message6_0
16196               expr1_0
16197               sub-expr2_0
16198               extra-sources3_0
16199               message-suffix4_0))))))
16200    (|#%name|
16201     raise-syntax-error
16202     (case-lambda
16203      ((given-name_0 message_0)
16204       (begin (raise-syntax-error_0 given-name_0 message_0 #f #f null "")))
16205      ((given-name_0
16206        message_0
16207        expr_0
16208        sub-expr_0
16209        extra-sources_0
16210        message-suffix4_0)
16211       (raise-syntax-error_0
16212        given-name_0
16213        message_0
16214        expr_0
16215        sub-expr_0
16216        extra-sources_0
16217        message-suffix4_0))
16218      ((given-name_0 message_0 expr_0 sub-expr_0 extra-sources3_0)
16219       (raise-syntax-error_0
16220        given-name_0
16221        message_0
16222        expr_0
16223        sub-expr_0
16224        extra-sources3_0
16225        ""))
16226      ((given-name_0 message_0 expr_0 sub-expr2_0)
16227       (raise-syntax-error_0
16228        given-name_0
16229        message_0
16230        expr_0
16231        sub-expr2_0
16232        null
16233        ""))
16234      ((given-name_0 message_0 expr1_0)
16235       (raise-syntax-error_0 given-name_0 message_0 expr1_0 #f null ""))))))
16236(define raise-unbound-syntax-error
16237  (let ((raise-unbound-syntax-error_0
16238         (|#%name|
16239          raise-unbound-syntax-error
16240          (lambda (given-name11_0
16241                   message12_0
16242                   expr7_0
16243                   sub-expr8_0
16244                   extra-sources9_0
16245                   message-suffix10_0)
16246            (begin
16247              (do-raise-syntax-error
16248               'raise-unbound-syntax-error
16249               make-exn:fail:syntax:unbound$1
16250               given-name11_0
16251               message12_0
16252               expr7_0
16253               sub-expr8_0
16254               extra-sources9_0
16255               message-suffix10_0))))))
16256    (case-lambda
16257     ((given-name_0 message_0)
16258      (raise-unbound-syntax-error_0 given-name_0 message_0 #f #f null ""))
16259     ((given-name_0
16260       message_0
16261       expr_0
16262       sub-expr_0
16263       extra-sources_0
16264       message-suffix10_0)
16265      (raise-unbound-syntax-error_0
16266       given-name_0
16267       message_0
16268       expr_0
16269       sub-expr_0
16270       extra-sources_0
16271       message-suffix10_0))
16272     ((given-name_0 message_0 expr_0 sub-expr_0 extra-sources9_0)
16273      (raise-unbound-syntax-error_0
16274       given-name_0
16275       message_0
16276       expr_0
16277       sub-expr_0
16278       extra-sources9_0
16279       ""))
16280     ((given-name_0 message_0 expr_0 sub-expr8_0)
16281      (raise-unbound-syntax-error_0
16282       given-name_0
16283       message_0
16284       expr_0
16285       sub-expr8_0
16286       null
16287       ""))
16288     ((given-name_0 message_0 expr7_0)
16289      (raise-unbound-syntax-error_0
16290       given-name_0
16291       message_0
16292       expr7_0
16293       #f
16294       null
16295       "")))))
16296(define do-raise-syntax-error
16297  (lambda (who_0
16298           exn:fail:syntax_0
16299           given-name_0
16300           message_0
16301           expr_0
16302           sub-expr_0
16303           extra-sources_0
16304           message-suffix_0)
16305    (begin
16306      (if (let ((or-part_0 (not given-name_0)))
16307            (if or-part_0 or-part_0 (symbol? given-name_0)))
16308        (void)
16309        (raise-argument-error who_0 "(or/c symbol? #f)" given-name_0))
16310      (begin
16311        (if (string? message_0)
16312          (void)
16313          (raise-argument-error who_0 "string?" message_0))
16314        (begin
16315          (if (if (list? extra-sources_0)
16316                (andmap_2344 syntax?$1 extra-sources_0)
16317                #f)
16318            (void)
16319            (raise-argument-error who_0 "(listof syntax?)" extra-sources_0))
16320          (begin
16321            (if (string? message-suffix_0)
16322              (void)
16323              (raise-argument-error who_0 "string?" message-suffix_0))
16324            (let ((name_0
16325                   (format
16326                    "~a"
16327                    (if given-name_0
16328                      given-name_0
16329                      (let ((or-part_0 (extract-form-name expr_0)))
16330                        (if or-part_0 or-part_0 '?))))))
16331              (let ((unbound-message_0
16332                     (let ((ids_0 (|#%app| current-previously-unbound)))
16333                       (let ((or-part_0
16334                              (if (pair? ids_0)
16335                                (let ((app_0 (if (null? (cdr ids_0)) "" "s")))
16336                                  (format
16337                                   "\n  after encountering unbound identifier~a (which is possibly the real problem):~a"
16338                                   app_0
16339                                   (apply
16340                                    string-append
16341                                    (reverse$1
16342                                     (begin
16343                                       (letrec*
16344                                        ((for-loop_0
16345                                          (|#%name|
16346                                           for-loop
16347                                           (lambda (fold-var_0 lst_0)
16348                                             (begin
16349                                               (if (pair? lst_0)
16350                                                 (let ((id_0
16351                                                        (unsafe-car lst_0)))
16352                                                   (let ((rest_0
16353                                                          (unsafe-cdr lst_0)))
16354                                                     (let ((fold-var_1
16355                                                            (let ((fold-var_1
16356                                                                   (cons
16357                                                                    (format
16358                                                                     "\n   ~s"
16359                                                                     (syntax-e$1
16360                                                                      id_0))
16361                                                                    fold-var_0)))
16362                                                              (values
16363                                                               fold-var_1))))
16364                                                       (for-loop_0
16365                                                        fold-var_1
16366                                                        rest_0))))
16367                                                 fold-var_0))))))
16368                                        (for-loop_0 null ids_0)))))))
16369                                #f)))
16370                         (if or-part_0 or-part_0 "")))))
16371                (let ((at-message_0
16372                       (let ((or-part_0
16373                              (if sub-expr_0
16374                                (if (error-print-source-location)
16375                                  (string-append
16376                                   "\n  at:"
16377                                   (syntax->string sub-expr_0))
16378                                  #f)
16379                                #f)))
16380                         (if or-part_0 or-part_0 ""))))
16381                  (let ((in-message_0
16382                         (let ((or-part_0
16383                                (if expr_0
16384                                  (if (error-print-source-location)
16385                                    (string-append
16386                                     "\n  in:"
16387                                     (syntax->string expr_0))
16388                                    #f)
16389                                  #f)))
16390                           (if or-part_0 or-part_0 ""))))
16391                    (let ((src-loc-str_0
16392                           (let ((or-part_0
16393                                  (if (error-print-source-location)
16394                                    (let ((or-part_0
16395                                           (extract-source-location
16396                                            sub-expr_0)))
16397                                      (if or-part_0
16398                                        or-part_0
16399                                        (extract-source-location expr_0)))
16400                                    #f)))
16401                             (if or-part_0 or-part_0 ""))))
16402                      (raise
16403                       (let ((app_0
16404                              (string-append
16405                               src-loc-str_0
16406                               name_0
16407                               ": "
16408                               message_0
16409                               unbound-message_0
16410                               at-message_0
16411                               in-message_0
16412                               message-suffix_0)))
16413                         (let ((app_1 (current-continuation-marks)))
16414                           (|#%app|
16415                            exn:fail:syntax_0
16416                            app_0
16417                            app_1
16418                            (map_1346
16419                             syntax-taint$1
16420                             (if (if sub-expr_0 sub-expr_0 expr_0)
16421                               (let ((with-handlers-handler18_0
16422                                      (|#%name|
16423                                       with-handlers-handler18
16424                                       (lambda (exn_0)
16425                                         (begin extra-sources_0)))))
16426                                 (let ((bpz_0
16427                                        (continuation-mark-set-first
16428                                         #f
16429                                         break-enabled-key)))
16430                                   (call-handled-body
16431                                    bpz_0
16432                                    (lambda (e_0)
16433                                      (select-handler/no-breaks
16434                                       e_0
16435                                       bpz_0
16436                                       (list
16437                                        (cons
16438                                         exn:fail:contract?
16439                                         with-handlers-handler18_0))))
16440                                    (lambda ()
16441                                      (cons
16442                                       (datum->syntax$1
16443                                        #f
16444                                        (if sub-expr_0 sub-expr_0 expr_0))
16445                                       extra-sources_0)))))
16446                               extra-sources_0)))))))))))))))))
16447(define extract-form-name
16448  (lambda (s_0)
16449    (if (syntax?$1 s_0)
16450      (let ((e_0 (syntax-e$1 s_0)))
16451        (if (symbol? e_0)
16452          e_0
16453          (if (if (pair? e_0) (identifier? (car e_0)) #f)
16454            (syntax-e$1 (car e_0))
16455            #f)))
16456      #f)))
16457(define extract-source-location
16458  (lambda (s_0)
16459    (if (syntax?$1 s_0)
16460      (if (syntax-srcloc$1 s_0)
16461        (let ((str_0 (srcloc->string (syntax-srcloc$1 s_0))))
16462          (if str_0 (string-append str_0 ": ") #f))
16463        #f)
16464      #f)))
16465(define ->datum
16466  (lambda (expr_0)
16467    (let ((with-handlers-handler20_0
16468           (|#%name| with-handlers-handler20 (lambda (exn_0) (begin expr_0)))))
16469      (let ((bpz_0 (continuation-mark-set-first #f break-enabled-key)))
16470        (call-handled-body
16471         bpz_0
16472         (lambda (e_0)
16473           (select-handler/no-breaks
16474            e_0
16475            bpz_0
16476            (list (cons exn:fail:contract? with-handlers-handler20_0))))
16477         (lambda () (syntax->datum$1 (datum->syntax$1 #f expr_0))))))))
16478(define current-previously-unbound (lambda () #f))
16479(define set-current-previously-unbound!
16480  (lambda (proc_0) (set! current-previously-unbound proc_0)))
16481(define syntax->string
16482  (lambda (v_0)
16483    (let ((str_0
16484           (let ((app_0 (error-syntax->string-handler)))
16485             (|#%app| app_0 v_0 (error-print-width)))))
16486      (if (regexp-match? rx2823 str_0)
16487        (string-append "\n   " (regexp-replace* rx2823 str_0 "\n   "))
16488        (string-append " " str_0)))))
16489(define install-error-syntax->string-handler!
16490  (lambda ()
16491    (error-syntax->string-handler
16492     (|#%name|
16493      default-error-syntax->string-handler
16494      (lambda (v_0 len_0)
16495        (begin
16496          (begin
16497            (if (let ((or-part_0 (not len_0)))
16498                  (if or-part_0 or-part_0 (exact-nonnegative-integer? len_0)))
16499              (void)
16500              (raise-argument-error
16501               'default-error-value->string-handler
16502               "(or/c exact-nonnegative-integer? #f)"
16503               len_0))
16504            (if len_0
16505              (with-continuation-mark*
16506               authentic
16507               parameterization-key
16508               (let ((app_0
16509                      (continuation-mark-set-first #f parameterization-key)))
16510                 (extend-parameterization
16511                  app_0
16512                  error-print-width
16513                  (max 3 len_0)))
16514               (format "~.s" (->datum v_0)))
16515              (format "~s" (->datum v_0))))))))))
16516(define finish_2737
16517  (make-struct-type-install-properties
16518   '(module-use)
16519   2
16520   0
16521   #f
16522   (list
16523    (cons
16524     prop:equal+hash
16525     (list
16526      (lambda (a_0 b_0 eql?_0)
16527        (let ((a-mod_0 (module-use-module a_0)))
16528          (let ((b-mod_0 (module-use-module b_0)))
16529            (if (|#%app| eql?_0 a-mod_0 b-mod_0)
16530              (if (let ((app_0 (module-use-phase a_0)))
16531                    (|#%app| eql?_0 app_0 (module-use-phase b_0)))
16532                (call-with-values
16533                 (lambda () (1/module-path-index-split a-mod_0))
16534                 (case-lambda
16535                  ((a-path_0 a-base_0)
16536                   (call-with-values
16537                    (lambda () (1/module-path-index-split b-mod_0))
16538                    (case-lambda
16539                     ((b-path_0 b-base_0)
16540                      (let ((a-path_1 a-path_0) (a-base_1 a-base_0))
16541                        (if a-path_1
16542                          a-path_1
16543                          (if b-path_0
16544                            b-path_0
16545                            (let ((app_0 (module-path-index-resolved a-mod_0)))
16546                              (eq?
16547                               app_0
16548                               (module-path-index-resolved b-mod_0)))))))
16549                     (args (raise-binding-result-arity-error 2 args)))))
16550                  (args (raise-binding-result-arity-error 2 args))))
16551                #f)
16552              #f))))
16553      (lambda (a_0 hash-code_0)
16554        (let ((app_0 (|#%app| hash-code_0 (module-use-module a_0))))
16555          (+ app_0 (|#%app| hash-code_0 (module-use-phase a_0)))))
16556      (lambda (a_0 hash-code_0)
16557        (let ((app_0 (|#%app| hash-code_0 (module-use-module a_0))))
16558          (+ app_0 (|#%app| hash-code_0 (module-use-phase a_0))))))))
16559   (current-inspector)
16560   #f
16561   '(0 1)
16562   #f
16563   'module-use))
16564(define struct:module-use
16565  (make-record-type-descriptor*
16566   'module-use
16567   #f
16568   (|#%nongenerative-uid| module-use)
16569   #f
16570   #f
16571   2
16572   0))
16573(define effect_2097 (finish_2737 struct:module-use))
16574(define module-use1.1
16575  (|#%name|
16576   module-use
16577   (record-constructor
16578    (make-record-constructor-descriptor struct:module-use #f #f))))
16579(define module-use?_2982
16580  (|#%name| module-use? (record-predicate struct:module-use)))
16581(define module-use?
16582  (|#%name|
16583   module-use?
16584   (lambda (v)
16585     (if (module-use?_2982 v)
16586       #t
16587       ($value
16588        (if (impersonator? v) (module-use?_2982 (impersonator-val v)) #f))))))
16589(define module-use-module_2384
16590  (|#%name| module-use-module (record-accessor struct:module-use 0)))
16591(define module-use-module
16592  (|#%name|
16593   module-use-module
16594   (lambda (s)
16595     (if (module-use?_2982 s)
16596       (module-use-module_2384 s)
16597       ($value
16598        (impersonate-ref
16599         module-use-module_2384
16600         struct:module-use
16601         0
16602         s
16603         'module-use
16604         'module))))))
16605(define module-use-phase_2668
16606  (|#%name| module-use-phase (record-accessor struct:module-use 1)))
16607(define module-use-phase
16608  (|#%name|
16609   module-use-phase
16610   (lambda (s)
16611     (if (module-use?_2982 s)
16612       (module-use-phase_2668 s)
16613       ($value
16614        (impersonate-ref
16615         module-use-phase_2668
16616         struct:module-use
16617         1
16618         s
16619         'module-use
16620         'phase))))))
16621(define finish_2673
16622  (make-struct-type-install-properties
16623   '(module)
16624   20
16625   0
16626   #f
16627   (list (cons prop:authentic #t))
16628   (current-inspector)
16629   #f
16630   '(0 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
16631   #f
16632   'module))
16633(define struct:module
16634  (make-record-type-descriptor*
16635   'module
16636   #f
16637   (|#%nongenerative-uid| module)
16638   #f
16639   #f
16640   20
16641   16))
16642(define effect_2640 (finish_2673 struct:module))
16643(define module1.1
16644  (|#%name|
16645   module
16646   (record-constructor
16647    (make-record-constructor-descriptor struct:module #f #f))))
16648(define module? (|#%name| module? (record-predicate struct:module)))
16649(define module-source-name
16650  (|#%name| module-source-name (record-accessor struct:module 0)))
16651(define module-self (|#%name| module-self (record-accessor struct:module 1)))
16652(define module-requires
16653  (|#%name| module-requires (record-accessor struct:module 2)))
16654(define module-provides
16655  (|#%name| module-provides (record-accessor struct:module 3)))
16656(define module-access
16657  (|#%name| module-access (record-accessor struct:module 4)))
16658(define module-language-info
16659  (|#%name| module-language-info (record-accessor struct:module 5)))
16660(define module-min-phase-level
16661  (|#%name| module-min-phase-level (record-accessor struct:module 6)))
16662(define module-max-phase-level
16663  (|#%name| module-max-phase-level (record-accessor struct:module 7)))
16664(define module-phase-level-linklet-info-callback
16665  (|#%name|
16666   module-phase-level-linklet-info-callback
16667   (record-accessor struct:module 8)))
16668(define module-force-bulk-binding
16669  (|#%name| module-force-bulk-binding (record-accessor struct:module 9)))
16670(define module-prepare-instance
16671  (|#%name| module-prepare-instance (record-accessor struct:module 10)))
16672(define module-instantiate-phase
16673  (|#%name| module-instantiate-phase (record-accessor struct:module 11)))
16674(define module-primitive?
16675  (|#%name| module-primitive? (record-accessor struct:module 12)))
16676(define module-is-predefined?
16677  (|#%name| module-is-predefined? (record-accessor struct:module 13)))
16678(define module-cross-phase-persistent?
16679  (|#%name| module-cross-phase-persistent? (record-accessor struct:module 14)))
16680(define module-no-protected?
16681  (|#%name| module-no-protected? (record-accessor struct:module 15)))
16682(define module-inspector
16683  (|#%name| module-inspector (record-accessor struct:module 16)))
16684(define module-submodule-names
16685  (|#%name| module-submodule-names (record-accessor struct:module 17)))
16686(define module-supermodule-name
16687  (|#%name| module-supermodule-name (record-accessor struct:module 18)))
16688(define module-get-all-variables
16689  (|#%name| module-get-all-variables (record-accessor struct:module 19)))
16690(define set-module-access!
16691  (|#%name| set-module-access! (record-mutator struct:module 4)))
16692(define finish_2550
16693  (make-struct-type-install-properties
16694   '(module-linklet-info)
16695   6
16696   0
16697   #f
16698   (list (cons prop:authentic #t))
16699   #f
16700   #f
16701   '(0 1 2 3 4 5)
16702   #f
16703   'module-linklet-info))
16704(define struct:module-linklet-info
16705  (make-record-type-descriptor*
16706   'module-linklet-info
16707   #f
16708   (|#%nongenerative-uid| module-linklet-info)
16709   #f
16710   #f
16711   6
16712   0))
16713(define effect_2508 (finish_2550 struct:module-linklet-info))
16714(define module-linklet-info2.1
16715  (|#%name|
16716   module-linklet-info
16717   (record-constructor
16718    (make-record-constructor-descriptor struct:module-linklet-info #f #f))))
16719(define module-linklet-info?
16720  (|#%name|
16721   module-linklet-info?
16722   (record-predicate struct:module-linklet-info)))
16723(define module-linklet-info-linklet-or-instance
16724  (|#%name|
16725   module-linklet-info-linklet-or-instance
16726   (record-accessor struct:module-linklet-info 0)))
16727(define module-linklet-info-module-uses
16728  (|#%name|
16729   module-linklet-info-module-uses
16730   (record-accessor struct:module-linklet-info 1)))
16731(define module-linklet-info-self
16732  (|#%name|
16733   module-linklet-info-self
16734   (record-accessor struct:module-linklet-info 2)))
16735(define module-linklet-info-inspector
16736  (|#%name|
16737   module-linklet-info-inspector
16738   (record-accessor struct:module-linklet-info 3)))
16739(define module-linklet-info-extra-inspector
16740  (|#%name|
16741   module-linklet-info-extra-inspector
16742   (record-accessor struct:module-linklet-info 4)))
16743(define module-linklet-info-extra-inspectorsss
16744  (|#%name|
16745   module-linklet-info-extra-inspectorsss
16746   (record-accessor struct:module-linklet-info 5)))
16747(define make-module.1
16748  (|#%name|
16749   make-module
16750   (lambda (cross-phase-persistent?16_0
16751            force-bulk-binding-callback10_0
16752            get-all-variables20_0
16753            instantiate-phase-callback9_0
16754            language-info13_0
16755            max-phase-level8_0
16756            min-phase-level7_0
16757            no-protected?17_0
16758            phase-level-linklet-info-callback12_0
16759            predefined?15_0
16760            prepare-instance-callback11_0
16761            primitive?14_0
16762            provides6_0
16763            requires5_0
16764            self4_0
16765            source-name3_0
16766            submodule-names18_0
16767            supermodule-name19_0)
16768     (begin
16769       (let ((phase-level-linklet-info-callback_0
16770              (if (eq? phase-level-linklet-info-callback12_0 unsafe-undefined)
16771                (|#%name|
16772                 phase-level-linklet-info-callback
16773                 (lambda (phase-level_0 ns_0 insp_0) (begin #f)))
16774                phase-level-linklet-info-callback12_0)))
16775         (let ((cross-phase-persistent?_0
16776                (if (eq? cross-phase-persistent?16_0 unsafe-undefined)
16777                  primitive?14_0
16778                  cross-phase-persistent?16_0)))
16779           (let ((get-all-variables_0
16780                  (if (eq? get-all-variables20_0 unsafe-undefined)
16781                    (|#%name| get-all-variables (lambda () (begin null)))
16782                    get-all-variables20_0)))
16783             (let ((app_0 (fresh-requires requires5_0)))
16784               (module1.1
16785                source-name3_0
16786                self4_0
16787                app_0
16788                provides6_0
16789                #f
16790                language-info13_0
16791                min-phase-level7_0
16792                max-phase-level8_0
16793                phase-level-linklet-info-callback_0
16794                force-bulk-binding-callback10_0
16795                prepare-instance-callback11_0
16796                instantiate-phase-callback9_0
16797                primitive?14_0
16798                predefined?15_0
16799                cross-phase-persistent?_0
16800                no-protected?17_0
16801                (current-code-inspector)
16802                submodule-names18_0
16803                supermodule-name19_0
16804                get-all-variables_0)))))))))
16805(define finish_2326
16806  (make-struct-type-install-properties
16807   '(module-instance)
16808   7
16809   0
16810   #f
16811   (list (cons prop:authentic #t))
16812   (current-inspector)
16813   #f
16814   '(0 1 3 6)
16815   #f
16816   'module-instance))
16817(define struct:module-instance
16818  (make-record-type-descriptor*
16819   'module-instance
16820   #f
16821   (|#%nongenerative-uid| module-instance)
16822   #f
16823   #f
16824   7
16825   52))
16826(define effect_2382 (finish_2326 struct:module-instance))
16827(define module-instance40.1
16828  (|#%name|
16829   module-instance
16830   (record-constructor
16831    (make-record-constructor-descriptor struct:module-instance #f #f))))
16832(define module-instance?
16833  (|#%name| module-instance? (record-predicate struct:module-instance)))
16834(define module-instance-namespace
16835  (|#%name|
16836   module-instance-namespace
16837   (record-accessor struct:module-instance 0)))
16838(define module-instance-module
16839  (|#%name| module-instance-module (record-accessor struct:module-instance 1)))
16840(define module-instance-shifted-requires
16841  (|#%name|
16842   module-instance-shifted-requires
16843   (record-accessor struct:module-instance 2)))
16844(define module-instance-phase-level-to-state
16845  (|#%name|
16846   module-instance-phase-level-to-state
16847   (record-accessor struct:module-instance 3)))
16848(define module-instance-made-available?
16849  (|#%name|
16850   module-instance-made-available?
16851   (record-accessor struct:module-instance 4)))
16852(define module-instance-attached?
16853  (|#%name|
16854   module-instance-attached?
16855   (record-accessor struct:module-instance 5)))
16856(define module-instance-data-box
16857  (|#%name|
16858   module-instance-data-box
16859   (record-accessor struct:module-instance 6)))
16860(define set-module-instance-shifted-requires!
16861  (|#%name|
16862   set-module-instance-shifted-requires!
16863   (record-mutator struct:module-instance 2)))
16864(define set-module-instance-made-available?!
16865  (|#%name|
16866   set-module-instance-made-available?!
16867   (record-mutator struct:module-instance 4)))
16868(define set-module-instance-attached?!
16869  (|#%name|
16870   set-module-instance-attached?!
16871   (record-mutator struct:module-instance 5)))
16872(define make-module-instance
16873  (lambda (m-ns_0 m_0)
16874    (let ((app_0 (make-small-hasheqv)))
16875      (module-instance40.1 m-ns_0 m_0 #f app_0 #f #f (box #f)))))
16876(define make-module-namespace.1
16877  (|#%name|
16878   make-module-namespace
16879   (lambda (for-submodule?43_0 mpi41_0 root-expand-context42_0 ns47_0)
16880     (begin
16881       (let ((name_0 (1/module-path-index-resolve mpi41_0)))
16882         (let ((m-ns_0
16883                (let ((the-struct_0
16884                       (new-namespace.1 #f root-expand-context42_0 ns47_0)))
16885                  (if (1/namespace? the-struct_0)
16886                    (let ((source-name135_0
16887                           (resolved-module-path-root-name name_0)))
16888                      (let ((submodule-declarations138_0
16889                             (if for-submodule?43_0
16890                               (namespace-submodule-declarations ns47_0)
16891                               (make-small-hasheq))))
16892                        (let ((available-module-instances139_0 (make-hasheqv)))
16893                          (let ((module-instances140_0 (make-hasheqv)))
16894                            (let ((declaration-inspector141_0
16895                                   (current-code-inspector)))
16896                              (let ((module-instances140_1
16897                                     module-instances140_0)
16898                                    (available-module-instances139_1
16899                                     available-module-instances139_0)
16900                                    (submodule-declarations138_1
16901                                     submodule-declarations138_0)
16902                                    (source-name135_1 source-name135_0))
16903                                (namespace1.1
16904                                 mpi41_0
16905                                 source-name135_1
16906                                 (namespace-root-expand-ctx the-struct_0)
16907                                 0
16908                                 0
16909                                 (namespace-phase-to-namespace the-struct_0)
16910                                 (namespace-phase-level-to-definitions
16911                                  the-struct_0)
16912                                 (namespace-module-registry$1 the-struct_0)
16913                                 (namespace-bulk-binding-registry the-struct_0)
16914                                 submodule-declarations138_1
16915                                 (namespace-root-namespace the-struct_0)
16916                                 declaration-inspector141_0
16917                                 (namespace-inspector the-struct_0)
16918                                 available-module-instances139_1
16919                                 module-instances140_1)))))))
16920                    (raise-argument-error
16921                     'struct-copy
16922                     "namespace?"
16923                     the-struct_0)))))
16924           (begin
16925             (let ((small-ht_0 (namespace-phase-to-namespace m-ns_0)))
16926               (begin-unsafe
16927                (set-box! small-ht_0 (hash-set (unbox small-ht_0) 0 m-ns_0))))
16928             (let ((at-phase_0 (make-hasheq)))
16929               (begin
16930                 (hash-set! (namespace-module-instances m-ns_0) 0 at-phase_0)
16931                 (hash-set! at-phase_0 name_0 (make-module-instance m-ns_0 #f))
16932                 m-ns_0)))))))))
16933(define declare-module!.1
16934  (|#%name|
16935   declare-module!
16936   (lambda (with-submodules?49_0 ns51_0 m52_0 mod-name53_0)
16937     (begin
16938       (let ((prior-m_0
16939              (if with-submodules?49_0
16940                (hash-ref
16941                 (module-registry-declarations
16942                  (namespace-module-registry$1 ns51_0))
16943                 mod-name53_0
16944                 #f)
16945                #f)))
16946         (let ((prior-mi_0
16947                (if prior-m_0
16948                  (if (not (eq? m52_0 prior-m_0))
16949                    (let ((temp147_0 (namespace-phase ns51_0)))
16950                      (namespace->module-instance.1
16951                       #f
16952                       #f
16953                       void
16954                       ns51_0
16955                       mod-name53_0
16956                       temp147_0))
16957                    #f)
16958                  #f)))
16959           (begin
16960             (if (if prior-m_0 (not (eq? m52_0 prior-m_0)) #f)
16961               (check-redeclaration-ok prior-m_0 prior-mi_0 mod-name53_0)
16962               (void))
16963             (if with-submodules?49_0
16964               (hash-set!
16965                (module-registry-declarations
16966                 (namespace-module-registry$1 ns51_0))
16967                mod-name53_0
16968                m52_0)
16969               (let ((small-ht_0 (namespace-submodule-declarations ns51_0)))
16970                 (begin-unsafe
16971                  (set-box!
16972                   small-ht_0
16973                   (hash-set (unbox small-ht_0) mod-name53_0 m52_0)))))
16974             (if with-submodules?49_0
16975               (begin
16976                 (let ((bulk-binding-registry_0
16977                        (namespace-bulk-binding-registry ns51_0)))
16978                   (let ((self_0 (module-self m52_0)))
16979                     (let ((provides_0 (module-provides m52_0)))
16980                       (begin-unsafe
16981                        (let ((app_0
16982                               (bulk-binding-registry-table
16983                                bulk-binding-registry_0)))
16984                          (hash-set!
16985                           app_0
16986                           mod-name53_0
16987                           (bulk-provide13.1 self_0 provides_0)))))))
16988                 (|#%app|
16989                  (|#%app| 1/current-module-name-resolver)
16990                  mod-name53_0
16991                  #f))
16992               (void))
16993             (if prior-mi_0
16994               (let ((m-ns_0 (module-instance-namespace prior-mi_0)))
16995                 (let ((states_0
16996                        (module-instance-phase-level-to-state prior-mi_0)))
16997                   (let ((phase_0 (namespace-phase ns51_0)))
16998                     (let ((visit?_0
16999                            (eq?
17000                             'started
17001                             (let ((key_0 (add1 phase_0)))
17002                               (begin-unsafe
17003                                (hash-ref (unbox states_0) key_0 #f))))))
17004                       (let ((run?_0
17005                              (eq?
17006                               'started
17007                               (begin-unsafe
17008                                (hash-ref (unbox states_0) phase_0 #f)))))
17009                         (let ((at-phase_0
17010                                (hash-ref
17011                                 (namespace-module-instances ns51_0)
17012                                 phase_0)))
17013                           (begin
17014                             (hash-set!
17015                              at-phase_0
17016                              mod-name53_0
17017                              (make-module-instance m-ns_0 m52_0))
17018                             (set-module-instance-shifted-requires!
17019                              prior-mi_0
17020                              #f)
17021                             (if visit?_0
17022                               (let ((temp149_0 (namespace-mpi m-ns_0)))
17023                                 (namespace-module-visit!.1
17024                                  unsafe-undefined
17025                                  ns51_0
17026                                  temp149_0
17027                                  phase_0))
17028                               (void))
17029                             (if run?_0
17030                               (let ((temp152_0 (namespace-mpi m-ns_0)))
17031                                 (namespace-module-instantiate!.1
17032                                  #f
17033                                  #t
17034                                  unsafe-undefined
17035                                  hash2610
17036                                  null
17037                                  #f
17038                                  ns51_0
17039                                  temp152_0
17040                                  phase_0))
17041                               (void)))))))))
17042               (void)))))))))
17043(define check-redeclaration-ok
17044  (lambda (prior-m_0 prior-mi_0 mod-name_0)
17045    (begin
17046      (if (module-cross-phase-persistent? prior-m_0)
17047        (raise-arguments-error
17048         'module
17049         "cannot redeclare cross-phase persistent module"
17050         "module name"
17051         (module-name->error-string mod-name_0))
17052        (void))
17053      (if (if prior-mi_0
17054            (let ((or-part_0 (module-instance-attached? prior-mi_0)))
17055              (if or-part_0
17056                or-part_0
17057                (not
17058                 (let ((app_0 (current-code-inspector)))
17059                   (inspector-superior?
17060                    app_0
17061                    (namespace-inspector
17062                     (module-instance-namespace prior-mi_0)))))))
17063            #f)
17064        (raise-arguments-error
17065         'module
17066         "current code inspector cannot redeclare module"
17067         "module name"
17068         (module-name->error-string mod-name_0))
17069        (void)))))
17070(define raise-unknown-module-error
17071  (lambda (who_0 mod-name_0)
17072    (raise-arguments-error
17073     who_0
17074     "unknown module"
17075     "module name"
17076     (module-name->error-string mod-name_0))))
17077(define namespace->module-linklet-info
17078  (lambda (ns_0 name_0 phase-level_0)
17079    (let ((m_0 (namespace->module ns_0 name_0)))
17080      (if m_0
17081        (|#%app|
17082         (module-phase-level-linklet-info-callback m_0)
17083         phase-level_0
17084         ns_0
17085         (module-inspector m_0))
17086        #f))))
17087(define module-name->error-string
17088  (lambda (mod-name_0) (unquoted-printing-string (format "~a" mod-name_0))))
17089(define namespace->module-instance.1
17090  (|#%name|
17091   namespace->module-instance
17092   (lambda (check-available-at-phase-level56_0
17093            complain-on-failure?55_0
17094            unavailable-callback57_0
17095            ns61_0
17096            name62_0
17097            0-phase63_0)
17098     (begin
17099       (let ((mi_0
17100              (let ((or-part_0
17101                     (hash-ref
17102                      (hash-ref
17103                       (namespace-module-instances ns61_0)
17104                       0-phase63_0
17105                       hash2610)
17106                      name62_0
17107                      #f)))
17108                (if or-part_0
17109                  or-part_0
17110                  (let ((or-part_1 (namespace-root-namespace ns61_0)))
17111                    (let ((or-part_2
17112                           (let ((c-ns_0 (if or-part_1 or-part_1 ns61_0)))
17113                             (hash-ref
17114                              (namespace-module-instances c-ns_0)
17115                              name62_0
17116                              #f))))
17117                      (if or-part_2
17118                        or-part_2
17119                        (if complain-on-failure?55_0
17120                          (error
17121                           'require
17122                           (string-append
17123                            "namespace mismatch;\n"
17124                            " reference to a module that is not instantiated\n"
17125                            "  module: ~a\n"
17126                            "  phase: ~a")
17127                           name62_0
17128                           0-phase63_0)
17129                          #f))))))))
17130         (if (if mi_0 check-available-at-phase-level56_0 #f)
17131           (check-availablilty
17132            mi_0
17133            check-available-at-phase-level56_0
17134            unavailable-callback57_0)
17135           mi_0))))))
17136(define namespace-install-module-namespace!
17137  (lambda (ns_0 name_0 0-phase_0 m_0 existing-m-ns_0)
17138    (let ((m-ns_0
17139           (if (1/namespace? ns_0)
17140             (let ((mpi154_0 (namespace-mpi existing-m-ns_0)))
17141               (let ((source-name155_0
17142                      (namespace-source-name existing-m-ns_0)))
17143                 (let ((root-expand-ctx156_0
17144                        (box
17145                         (unbox (namespace-root-expand-ctx existing-m-ns_0)))))
17146                   (let ((phase157_0 (namespace-phase existing-m-ns_0)))
17147                     (let ((0-phase158_0 (namespace-0-phase existing-m-ns_0)))
17148                       (let ((phase-to-namespace159_0 (make-small-hasheqv)))
17149                         (let ((phase-level-to-definitions160_0
17150                                (if (module-cross-phase-persistent? m_0)
17151                                  (namespace-phase-level-to-definitions
17152                                   existing-m-ns_0)
17153                                  (make-small-hasheqv))))
17154                           (let ((declaration-inspector161_0
17155                                  (module-inspector m_0)))
17156                             (let ((inspector162_0
17157                                    (namespace-inspector existing-m-ns_0)))
17158                               (let ((declaration-inspector161_1
17159                                      declaration-inspector161_0)
17160                                     (phase-level-to-definitions160_1
17161                                      phase-level-to-definitions160_0)
17162                                     (phase-to-namespace159_1
17163                                      phase-to-namespace159_0)
17164                                     (0-phase158_1 0-phase158_0)
17165                                     (phase157_1 phase157_0)
17166                                     (root-expand-ctx156_1
17167                                      root-expand-ctx156_0)
17168                                     (source-name155_1 source-name155_0)
17169                                     (mpi154_1 mpi154_0))
17170                                 (namespace1.1
17171                                  mpi154_1
17172                                  source-name155_1
17173                                  root-expand-ctx156_1
17174                                  phase157_1
17175                                  0-phase158_1
17176                                  phase-to-namespace159_1
17177                                  phase-level-to-definitions160_1
17178                                  (namespace-module-registry$1 ns_0)
17179                                  (namespace-bulk-binding-registry ns_0)
17180                                  (namespace-submodule-declarations ns_0)
17181                                  (namespace-root-namespace ns_0)
17182                                  declaration-inspector161_1
17183                                  inspector162_0
17184                                  (namespace-available-module-instances ns_0)
17185                                  (namespace-module-instances ns_0))))))))))))
17186             (raise-argument-error 'struct-copy "namespace?" ns_0))))
17187      (let ((mi_0 (make-module-instance m-ns_0 m_0)))
17188        (begin
17189          (set-module-instance-attached?! mi_0 #t)
17190          (if (module-cross-phase-persistent? m_0)
17191            (begin
17192              (let ((small-ht_0 (namespace-phase-to-namespace m-ns_0)))
17193                (begin-unsafe
17194                 (set-box! small-ht_0 (hash-set (unbox small-ht_0) 0 m-ns_0))))
17195              (let ((small-ht_0 (namespace-phase-level-to-definitions m-ns_0)))
17196                (let ((val_0 (namespace->definitions existing-m-ns_0 0)))
17197                  (let ((small-ht_1 small-ht_0))
17198                    (begin-unsafe
17199                     (set-box!
17200                      small-ht_1
17201                      (hash-set (unbox small-ht_1) 0 val_0))))))
17202              (let ((small-ht_0 (namespace-phase-to-namespace m-ns_0)))
17203                (let ((val_0 (namespace->namespace-at-phase m-ns_0 1)))
17204                  (let ((small-ht_1 small-ht_0))
17205                    (begin-unsafe
17206                     (set-box!
17207                      small-ht_1
17208                      (hash-set (unbox small-ht_1) 1 val_0))))))
17209              (let ((small-ht_0 (namespace-phase-level-to-definitions m-ns_0)))
17210                (let ((val_0 (namespace->definitions existing-m-ns_0 1)))
17211                  (let ((small-ht_1 small-ht_0))
17212                    (begin-unsafe
17213                     (set-box!
17214                      small-ht_1
17215                      (hash-set (unbox small-ht_1) 1 val_0))))))
17216              (hash-set!
17217               (namespace-module-instances
17218                (let ((or-part_0 (namespace-root-namespace ns_0)))
17219                  (if or-part_0 or-part_0 ns_0)))
17220               name_0
17221               mi_0)
17222              (let ((small-ht_0 (module-instance-phase-level-to-state mi_0)))
17223                (begin-unsafe
17224                 (set-box!
17225                  small-ht_0
17226                  (hash-set (unbox small-ht_0) 0 'started)))))
17227            (begin
17228              (let ((small-ht_0 (namespace-phase-to-namespace m-ns_0)))
17229                (begin-unsafe
17230                 (set-box!
17231                  small-ht_0
17232                  (hash-set (unbox small-ht_0) 0-phase_0 m-ns_0))))
17233              (begin
17234                (let ((small-ht_0
17235                       (namespace-phase-level-to-definitions m-ns_0)))
17236                  (let ((val_0 (namespace->definitions existing-m-ns_0 0)))
17237                    (let ((small-ht_1 small-ht_0))
17238                      (begin-unsafe
17239                       (set-box!
17240                        small-ht_1
17241                        (hash-set (unbox small-ht_1) 0 val_0))))))
17242                (begin
17243                  (let ((small-ht_0
17244                         (module-instance-phase-level-to-state mi_0)))
17245                    (begin-unsafe
17246                     (set-box!
17247                      small-ht_0
17248                      (hash-set (unbox small-ht_0) 0 'started))))
17249                  (let ((at-phase_0
17250                         (let ((or-part_0
17251                                (hash-ref
17252                                 (namespace-module-instances ns_0)
17253                                 0-phase_0
17254                                 #f)))
17255                           (if or-part_0
17256                             or-part_0
17257                             (let ((at-phase_0 (make-hasheq)))
17258                               (begin
17259                                 (hash-set!
17260                                  (namespace-module-instances ns_0)
17261                                  0-phase_0
17262                                  at-phase_0)
17263                                 at-phase_0))))))
17264                    (hash-set! at-phase_0 name_0 mi_0)))))))))))
17265(define namespace-create-module-instance!
17266  (lambda (ns_0 name_0 0-phase_0 m_0 mpi_0)
17267    (let ((m-ns_0
17268           (if (1/namespace? ns_0)
17269             (let ((or-part_0 (module-source-name m_0)))
17270               (let ((source-name164_0
17271                      (if or-part_0
17272                        or-part_0
17273                        (resolved-module-path-root-name
17274                         (1/module-path-index-resolve mpi_0)))))
17275                 (let ((root-expand-ctx165_0 (box #f)))
17276                   (let ((phase-to-namespace168_0 (make-small-hasheqv)))
17277                     (let ((phase-level-to-definitions169_0
17278                            (make-small-hasheqv)))
17279                       (let ((declaration-inspector170_0
17280                              (module-inspector m_0)))
17281                         (let ((inspector171_0
17282                                (make-inspector (module-inspector m_0))))
17283                           (let ((declaration-inspector170_1
17284                                  declaration-inspector170_0)
17285                                 (phase-level-to-definitions169_1
17286                                  phase-level-to-definitions169_0)
17287                                 (phase-to-namespace168_1
17288                                  phase-to-namespace168_0)
17289                                 (root-expand-ctx165_1 root-expand-ctx165_0)
17290                                 (source-name164_1 source-name164_0))
17291                             (namespace1.1
17292                              mpi_0
17293                              source-name164_1
17294                              root-expand-ctx165_1
17295                              0-phase_0
17296                              0-phase_0
17297                              phase-to-namespace168_1
17298                              phase-level-to-definitions169_1
17299                              (namespace-module-registry$1 ns_0)
17300                              (namespace-bulk-binding-registry ns_0)
17301                              (namespace-submodule-declarations ns_0)
17302                              (namespace-root-namespace ns_0)
17303                              declaration-inspector170_1
17304                              inspector171_0
17305                              (namespace-available-module-instances ns_0)
17306                              (namespace-module-instances ns_0))))))))))
17307             (raise-argument-error 'struct-copy "namespace?" ns_0))))
17308      (begin
17309        (let ((small-ht_0 (namespace-phase-to-namespace m-ns_0)))
17310          (begin-unsafe
17311           (set-box!
17312            small-ht_0
17313            (hash-set (unbox small-ht_0) 0-phase_0 m-ns_0))))
17314        (let ((mi_0 (make-module-instance m-ns_0 m_0)))
17315          (begin
17316            (if (module-cross-phase-persistent? m_0)
17317              (hash-set! (namespace-module-instances ns_0) name_0 mi_0)
17318              (let ((at-phase_0
17319                     (let ((or-part_0
17320                            (hash-ref
17321                             (namespace-module-instances ns_0)
17322                             0-phase_0
17323                             #f)))
17324                       (if or-part_0
17325                         or-part_0
17326                         (let ((at-phase_0 (make-hasheq)))
17327                           (begin
17328                             (hash-set!
17329                              (namespace-module-instances ns_0)
17330                              0-phase_0
17331                              at-phase_0)
17332                             at-phase_0))))))
17333                (hash-set! at-phase_0 name_0 mi_0)))
17334            mi_0))))))
17335(define check-availablilty
17336  (lambda (mi_0 check-available-at-phase-level_0 unavailable-callback_0)
17337    (let ((m_0 (module-instance-module mi_0)))
17338      (if (if m_0
17339            (if (<=
17340                 (module-min-phase-level m_0)
17341                 (add1 check-available-at-phase-level_0)
17342                 (module-max-phase-level m_0))
17343              (not
17344               (let ((small-ht_0 (module-instance-phase-level-to-state mi_0)))
17345                 (let ((key_0 (add1 check-available-at-phase-level_0)))
17346                   (let ((small-ht_1 small-ht_0))
17347                     (begin-unsafe (hash-ref (unbox small-ht_1) key_0 #f))))))
17348              #f)
17349            #f)
17350        (|#%app| unavailable-callback_0 mi_0)
17351        mi_0))))
17352(define namespace->module-namespace.1
17353  (|#%name|
17354   namespace->module-namespace
17355   (lambda (check-available-at-phase-level66_0
17356            complain-on-failure?65_0
17357            unavailable-callback67_0
17358            ns71_0
17359            name72_0
17360            0-phase73_0)
17361     (begin
17362       (let ((mi_0
17363              (namespace->module-instance.1
17364               check-available-at-phase-level66_0
17365               complain-on-failure?65_0
17366               unavailable-callback67_0
17367               ns71_0
17368               name72_0
17369               0-phase73_0)))
17370         (if mi_0 (module-instance-namespace mi_0) #f))))))
17371(define namespace-record-module-instance-attached!
17372  (lambda (ns_0 mod-name_0 phase_0)
17373    (let ((mi_0
17374           (namespace->module-instance.1 #f #f void ns_0 mod-name_0 phase_0)))
17375      (set-module-instance-attached?! mi_0 #t))))
17376(define module-force-bulk-binding!
17377  (lambda (m_0 ns_0)
17378    (|#%app|
17379     (module-force-bulk-binding m_0)
17380     (namespace-bulk-binding-registry ns_0))))
17381(define namespace-module-instantiate!.1
17382  (|#%name|
17383   namespace-module-instantiate!
17384   (lambda (minimum-inspector80_0
17385            otherwise-available?77_0
17386            run-phase75_0
17387            seen78_0
17388            seen-list79_0
17389            skip-run?76_0
17390            ns87_0
17391            mpi88_0
17392            instance-phase89_0)
17393     (begin
17394       (let ((run-phase_0
17395              (if (eq? run-phase75_0 unsafe-undefined)
17396                (namespace-phase ns87_0)
17397                run-phase75_0)))
17398         (begin
17399           (if (1/module-path-index? mpi88_0)
17400             (void)
17401             (error "not a module path index:" mpi88_0))
17402           (let ((name_0 (1/module-path-index-resolve mpi88_0 #t)))
17403             (let ((m_0 (namespace->module ns87_0 name_0)))
17404               (begin
17405                 (if m_0
17406                   (void)
17407                   (begin-unsafe
17408                    (raise-arguments-error
17409                     'instantiate
17410                     "unknown module"
17411                     "module name"
17412                     (module-name->error-string name_0))))
17413                 (let ((instantiate!_0
17414                        (|#%name|
17415                         instantiate!
17416                         (lambda (instance-phase_0 run-phase_1 ns_0)
17417                           (begin
17418                             (let ((mi_0
17419                                    (let ((or-part_0
17420                                           (namespace->module-instance.1
17421                                            #f
17422                                            #f
17423                                            void
17424                                            ns_0
17425                                            name_0
17426                                            instance-phase_0)))
17427                                      (if or-part_0
17428                                        or-part_0
17429                                        (namespace-create-module-instance!
17430                                         ns_0
17431                                         name_0
17432                                         instance-phase_0
17433                                         m_0
17434                                         mpi88_0)))))
17435                               (run-module-instance!.1
17436                                minimum-inspector80_0
17437                                otherwise-available?77_0
17438                                run-phase_1
17439                                seen78_0
17440                                seen-list79_0
17441                                skip-run?76_0
17442                                mi_0
17443                                ns_0)))))))
17444                   (if (module-cross-phase-persistent? m_0)
17445                     (instantiate!_0
17446                      0
17447                      0
17448                      (let ((or-part_0 (namespace-root-namespace ns87_0)))
17449                        (if or-part_0 or-part_0 ns87_0)))
17450                     (instantiate!_0
17451                      instance-phase89_0
17452                      run-phase_0
17453                      ns87_0))))))))))))
17454(define namespace-module-visit!.1
17455  (|#%name|
17456   namespace-module-visit!
17457   (lambda (visit-phase91_0 ns93_0 mpi94_0 instance-phase95_0)
17458     (begin
17459       (let ((visit-phase_0
17460              (if (eq? visit-phase91_0 unsafe-undefined)
17461                (namespace-phase ns93_0)
17462                visit-phase91_0)))
17463         (let ((temp195_0 (add1 visit-phase_0)))
17464           (namespace-module-instantiate!.1
17465            #f
17466            #t
17467            temp195_0
17468            hash2610
17469            null
17470            #f
17471            ns93_0
17472            mpi94_0
17473            instance-phase95_0)))))))
17474(define namespace-module-make-available!.1
17475  (|#%name|
17476   namespace-module-make-available!
17477   (lambda (visit-phase97_0 ns99_0 mpi100_0 instance-phase101_0)
17478     (begin
17479       (let ((visit-phase_0
17480              (if (eq? visit-phase97_0 unsafe-undefined)
17481                (namespace-phase ns99_0)
17482                visit-phase97_0)))
17483         (let ((temp199_0 (add1 visit-phase_0)))
17484           (namespace-module-instantiate!.1
17485            #f
17486            #t
17487            temp199_0
17488            hash2610
17489            null
17490            #t
17491            ns99_0
17492            mpi100_0
17493            instance-phase101_0)))))))
17494(define run-module-instance!.1
17495  (|#%name|
17496   run-module-instance!
17497   (lambda (minimum-inspector108_0
17498            otherwise-available?105_0
17499            run-phase103_0
17500            seen106_0
17501            seen-list107_0
17502            skip-run?104_0
17503            mi115_0
17504            ns116_0)
17505     (begin
17506       (begin
17507         (if log-performance?
17508           (start-performance-region 'eval 'requires)
17509           (void))
17510         (begin0
17511           (let ((m-ns_0 (module-instance-namespace mi115_0)))
17512             (let ((instance-phase_0 (namespace-0-phase m-ns_0)))
17513               (let ((run-phase-level_0
17514                      (phase- run-phase103_0 instance-phase_0)))
17515                 (let ((inspector_0
17516                        (module-inspector (module-instance-module mi115_0))))
17517                   (begin
17518                     (if minimum-inspector108_0
17519                       (if (let ((or-part_0
17520                                  (eq? inspector_0 minimum-inspector108_0)))
17521                             (if or-part_0
17522                               or-part_0
17523                               (inspector-superior?
17524                                inspector_0
17525                                minimum-inspector108_0)))
17526                         (void)
17527                         (error
17528                          'require
17529                          "cannot import module with weaker code inspector\n  module: ~a"
17530                          (1/module-path-index-resolve
17531                           (namespace-mpi
17532                            (module-instance-namespace mi115_0)))))
17533                       (void))
17534                     (if (if (if skip-run?104_0
17535                               skip-run?104_0
17536                               (eq?
17537                                'started
17538                                (let ((small-ht_0
17539                                       (module-instance-phase-level-to-state
17540                                        mi115_0)))
17541                                  (begin-unsafe
17542                                   (hash-ref
17543                                    (unbox small-ht_0)
17544                                    run-phase-level_0
17545                                    #f)))))
17546                           (let ((or-part_0 (not otherwise-available?105_0)))
17547                             (if or-part_0
17548                               or-part_0
17549                               (module-instance-made-available? mi115_0)))
17550                           #f)
17551                       (void)
17552                       (let ((m_0 (module-instance-module mi115_0)))
17553                         (begin
17554                           (if m_0
17555                             (void)
17556                             (error
17557                              'require
17558                              "import cycle detected; trying to run module being expanded"))
17559                           (let ((mpi_0 (namespace-mpi m-ns_0)))
17560                             (let ((bulk-binding-registry_0
17561                                    (namespace-bulk-binding-registry m-ns_0)))
17562                               (begin
17563                                 (if (hash-ref seen106_0 mi115_0 #f)
17564                                   (error
17565                                    'require
17566                                    (apply
17567                                     string-append
17568                                     "import cycle detected during module instantiation\n"
17569                                     "  dependency chain:"
17570                                     (module-instances->indented-module-names
17571                                      mi115_0
17572                                      seen-list107_0)))
17573                                   (void))
17574                                 (if (module-instance-shifted-requires mi115_0)
17575                                   (void)
17576                                   (set-module-instance-shifted-requires!
17577                                    mi115_0
17578                                    (reverse$1
17579                                     (let ((lst_0 (module-requires m_0)))
17580                                       (begin
17581                                         (letrec*
17582                                          ((for-loop_0
17583                                            (|#%name|
17584                                             for-loop
17585                                             (lambda (fold-var_0 lst_1)
17586                                               (begin
17587                                                 (if (pair? lst_1)
17588                                                   (let ((phase+mpis_0
17589                                                          (unsafe-car lst_1)))
17590                                                     (let ((rest_0
17591                                                            (unsafe-cdr
17592                                                             lst_1)))
17593                                                       (let ((fold-var_1
17594                                                              (let ((fold-var_1
17595                                                                     (cons
17596                                                                      (let ((app_0
17597                                                                             (car
17598                                                                              phase+mpis_0)))
17599                                                                        (cons
17600                                                                         app_0
17601                                                                         (reverse$1
17602                                                                          (let ((lst_2
17603                                                                                 (cdr
17604                                                                                  phase+mpis_0)))
17605                                                                            (begin
17606                                                                              (letrec*
17607                                                                               ((for-loop_1
17608                                                                                 (|#%name|
17609                                                                                  for-loop
17610                                                                                  (lambda (fold-var_1
17611                                                                                           lst_3)
17612                                                                                    (begin
17613                                                                                      (if (pair?
17614                                                                                           lst_3)
17615                                                                                        (let ((req-mpi_0
17616                                                                                               (unsafe-car
17617                                                                                                lst_3)))
17618                                                                                          (let ((rest_1
17619                                                                                                 (unsafe-cdr
17620                                                                                                  lst_3)))
17621                                                                                            (let ((fold-var_2
17622                                                                                                   (let ((fold-var_2
17623                                                                                                          (cons
17624                                                                                                           (module-path-index-shift
17625                                                                                                            req-mpi_0
17626                                                                                                            (module-self
17627                                                                                                             m_0)
17628                                                                                                            mpi_0)
17629                                                                                                           fold-var_1)))
17630                                                                                                     (values
17631                                                                                                      fold-var_2))))
17632                                                                                              (for-loop_1
17633                                                                                               fold-var_2
17634                                                                                               rest_1))))
17635                                                                                        fold-var_1))))))
17636                                                                               (for-loop_1
17637                                                                                null
17638                                                                                lst_2)))))))
17639                                                                      fold-var_0)))
17640                                                                (values
17641                                                                 fold-var_1))))
17642                                                         (for-loop_0
17643                                                          fold-var_1
17644                                                          rest_0))))
17645                                                   fold-var_0))))))
17646                                          (for-loop_0 null lst_0)))))))
17647                                 (let ((lst_0
17648                                        (module-instance-shifted-requires
17649                                         mi115_0)))
17650                                   (begin
17651                                     (letrec*
17652                                      ((for-loop_0
17653                                        (|#%name|
17654                                         for-loop
17655                                         (lambda (lst_1)
17656                                           (begin
17657                                             (if (pair? lst_1)
17658                                               (let ((phase+mpis_0
17659                                                      (unsafe-car lst_1)))
17660                                                 (let ((rest_0
17661                                                        (unsafe-cdr lst_1)))
17662                                                   (begin
17663                                                     (let ((req-phase_0
17664                                                            (car
17665                                                             phase+mpis_0)))
17666                                                       (begin
17667                                                         (let ((lst_2
17668                                                                (cdr
17669                                                                 phase+mpis_0)))
17670                                                           (begin
17671                                                             (letrec*
17672                                                              ((for-loop_1
17673                                                                (|#%name|
17674                                                                 for-loop
17675                                                                 (lambda (lst_3)
17676                                                                   (begin
17677                                                                     (if (pair?
17678                                                                          lst_3)
17679                                                                       (let ((req-mpi_0
17680                                                                              (unsafe-car
17681                                                                               lst_3)))
17682                                                                         (let ((rest_1
17683                                                                                (unsafe-cdr
17684                                                                                 lst_3)))
17685                                                                           (begin
17686                                                                             (let ((temp203_0
17687                                                                                    (phase+
17688                                                                                     instance-phase_0
17689                                                                                     req-phase_0)))
17690                                                                               (let ((temp207_0
17691                                                                                      (hash-set
17692                                                                                       seen106_0
17693                                                                                       mi115_0
17694                                                                                       #t)))
17695                                                                                 (let ((temp208_0
17696                                                                                        (cons
17697                                                                                         mi115_0
17698                                                                                         seen-list107_0)))
17699                                                                                   (let ((temp207_1
17700                                                                                          temp207_0)
17701                                                                                         (temp203_1
17702                                                                                          temp203_0))
17703                                                                                     (namespace-module-instantiate!.1
17704                                                                                      inspector_0
17705                                                                                      otherwise-available?105_0
17706                                                                                      run-phase103_0
17707                                                                                      temp207_1
17708                                                                                      temp208_0
17709                                                                                      skip-run?104_0
17710                                                                                      ns116_0
17711                                                                                      req-mpi_0
17712                                                                                      temp203_1)))))
17713                                                                             (for-loop_1
17714                                                                              rest_1))))
17715                                                                       (values)))))))
17716                                                              (for-loop_1
17717                                                               lst_2))))
17718                                                         (void)))
17719                                                     (for-loop_0 rest_0))))
17720                                               (values)))))))
17721                                      (for-loop_0 lst_0))))
17722                                 (void)
17723                                 (if (begin-unsafe (not instance-phase_0))
17724                                   (void)
17725                                   (begin
17726                                     (let ((start_0
17727                                            (module-max-phase-level m_0)))
17728                                       (let ((end_0
17729                                              (sub1
17730                                               (module-min-phase-level m_0))))
17731                                         (let ((start_1 start_0))
17732                                           (begin
17733                                             (letrec*
17734                                              ((for-loop_0
17735                                                (|#%name|
17736                                                 for-loop
17737                                                 (lambda (pos_0)
17738                                                   (begin
17739                                                     (if (> pos_0 end_0)
17740                                                       (begin
17741                                                         (let ((phase_0
17742                                                                (phase+
17743                                                                 pos_0
17744                                                                 instance-phase_0)))
17745                                                           (if (if (not
17746                                                                    skip-run?104_0)
17747                                                                 (eqv?
17748                                                                  phase_0
17749                                                                  run-phase103_0)
17750                                                                 #f)
17751                                                             (if (eq?
17752                                                                  'started
17753                                                                  (let ((small-ht_0
17754                                                                         (module-instance-phase-level-to-state
17755                                                                          mi115_0)))
17756                                                                    (begin-unsafe
17757                                                                     (hash-ref
17758                                                                      (unbox
17759                                                                       small-ht_0)
17760                                                                      pos_0
17761                                                                      #f))))
17762                                                               (void)
17763                                                               (begin
17764                                                                 (let ((small-ht_0
17765                                                                        (module-instance-phase-level-to-state
17766                                                                         mi115_0)))
17767                                                                   (begin-unsafe
17768                                                                    (set-box!
17769                                                                     small-ht_0
17770                                                                     (hash-set
17771                                                                      (unbox
17772                                                                       small-ht_0)
17773                                                                      pos_0
17774                                                                      'started))))
17775                                                                 (begin
17776                                                                   (void
17777                                                                    (namespace->definitions
17778                                                                     m-ns_0
17779                                                                     pos_0))
17780                                                                   (let ((p-ns_0
17781                                                                          (namespace->namespace-at-phase
17782                                                                           m-ns_0
17783                                                                           phase_0)))
17784                                                                     (let ((insp_0
17785                                                                            (module-inspector
17786                                                                             m_0)))
17787                                                                       (let ((data-box_0
17788                                                                              (module-instance-data-box
17789                                                                               mi115_0)))
17790                                                                         (let ((prep_0
17791                                                                                (module-prepare-instance
17792                                                                                 m_0)))
17793                                                                           (let ((go_0
17794                                                                                  (module-instantiate-phase
17795                                                                                   m_0)))
17796                                                                             (begin
17797                                                                               (|#%app|
17798                                                                                prep_0
17799                                                                                data-box_0
17800                                                                                p-ns_0
17801                                                                                instance-phase_0
17802                                                                                mpi_0
17803                                                                                bulk-binding-registry_0
17804                                                                                insp_0)
17805                                                                               (|#%app|
17806                                                                                go_0
17807                                                                                data-box_0
17808                                                                                p-ns_0
17809                                                                                instance-phase_0
17810                                                                                pos_0
17811                                                                                mpi_0
17812                                                                                bulk-binding-registry_0
17813                                                                                insp_0))))))))))
17814                                                             (if (if otherwise-available?105_0
17815                                                                   (if (not
17816                                                                        (negative?
17817                                                                         run-phase103_0))
17818                                                                     (not
17819                                                                      (let ((small-ht_0
17820                                                                             (module-instance-phase-level-to-state
17821                                                                              mi115_0)))
17822                                                                        (begin-unsafe
17823                                                                         (hash-ref
17824                                                                          (unbox
17825                                                                           small-ht_0)
17826                                                                          pos_0
17827                                                                          #f))))
17828                                                                     #f)
17829                                                                   #f)
17830                                                               (begin
17831                                                                 (let ((ht_0
17832                                                                        (namespace-available-module-instances
17833                                                                         ns116_0)))
17834                                                                   (let ((xform_0
17835                                                                          (lambda (l_0)
17836                                                                            (cons
17837                                                                             mi115_0
17838                                                                             l_0))))
17839                                                                     (begin-unsafe
17840                                                                      (do-hash-update
17841                                                                       'hash-update!
17842                                                                       #t
17843                                                                       hash-set!
17844                                                                       ht_0
17845                                                                       phase_0
17846                                                                       xform_0
17847                                                                       null))))
17848                                                                 (let ((small-ht_0
17849                                                                        (module-instance-phase-level-to-state
17850                                                                         mi115_0)))
17851                                                                   (begin-unsafe
17852                                                                    (set-box!
17853                                                                     small-ht_0
17854                                                                     (hash-set
17855                                                                      (unbox
17856                                                                       small-ht_0)
17857                                                                      pos_0
17858                                                                      'available)))))
17859                                                               (void))))
17860                                                         (for-loop_0
17861                                                          (+ pos_0 -1)))
17862                                                       (values)))))))
17863                                              (for-loop_0 start_1))))))
17864                                     (void)))
17865                                 (if otherwise-available?105_0
17866                                   (set-module-instance-made-available?!
17867                                    mi115_0
17868                                    #t)
17869                                   (void))
17870                                 (if skip-run?104_0
17871                                   (void)
17872                                   (let ((small-ht_0
17873                                          (module-instance-phase-level-to-state
17874                                           mi115_0)))
17875                                     (begin-unsafe
17876                                      (set-box!
17877                                       small-ht_0
17878                                       (hash-set
17879                                        (unbox small-ht_0)
17880                                        run-phase-level_0
17881                                        'started))))))))))))))))
17882           (if log-performance? (end-performance-region) (void))))))))
17883(define namespace-visit-available-modules!
17884  (let ((namespace-visit-available-modules!_0
17885         (|#%name|
17886          namespace-visit-available-modules!
17887          (lambda (ns119_0 run-phase118_0)
17888            (begin
17889              (let ((run-phase_0
17890                     (if (eq? run-phase118_0 unsafe-undefined)
17891                       (namespace-phase ns119_0)
17892                       run-phase118_0)))
17893                (namespace-run-available-modules!
17894                 ns119_0
17895                 (add1 run-phase_0))))))))
17896    (case-lambda
17897     ((ns_0) (namespace-visit-available-modules!_0 ns_0 unsafe-undefined))
17898     ((ns_0 run-phase118_0)
17899      (namespace-visit-available-modules!_0 ns_0 run-phase118_0)))))
17900(define namespace-run-available-modules!
17901  (let ((namespace-run-available-modules!_0
17902         (|#%name|
17903          namespace-run-available-modules!
17904          (lambda (ns121_0 run-phase120_0)
17905            (begin
17906              (let ((run-phase_0
17907                     (if (eq? run-phase120_0 unsafe-undefined)
17908                       (namespace-phase ns121_0)
17909                       run-phase120_0)))
17910                (registry-call-with-lock
17911                 (namespace-module-registry$1 ns121_0)
17912                 (lambda ()
17913                   (letrec*
17914                    ((loop_0
17915                      (|#%name|
17916                       loop
17917                       (lambda ()
17918                         (begin
17919                           (let ((mis_0
17920                                  (hash-ref
17921                                   (namespace-available-module-instances
17922                                    ns121_0)
17923                                   run-phase_0
17924                                   null)))
17925                             (if (null? mis_0)
17926                               (void)
17927                               (begin
17928                                 (hash-set!
17929                                  (namespace-available-module-instances
17930                                   ns121_0)
17931                                  run-phase_0
17932                                  null)
17933                                 (let ((lst_0 (reverse$1 mis_0)))
17934                                   (begin
17935                                     (letrec*
17936                                      ((for-loop_0
17937                                        (|#%name|
17938                                         for-loop
17939                                         (lambda (lst_1)
17940                                           (begin
17941                                             (if (pair? lst_1)
17942                                               (let ((mi_0 (unsafe-car lst_1)))
17943                                                 (let ((rest_0
17944                                                        (unsafe-cdr lst_1)))
17945                                                   (begin
17946                                                     (run-module-instance!.1
17947                                                      #f
17948                                                      #f
17949                                                      run-phase_0
17950                                                      hash2610
17951                                                      null
17952                                                      #f
17953                                                      mi_0
17954                                                      ns121_0)
17955                                                     (for-loop_0 rest_0))))
17956                                               (values)))))))
17957                                      (for-loop_0 lst_0))))
17958                                 (void)
17959                                 (loop_0)))))))))
17960                    (loop_0))))))))))
17961    (case-lambda
17962     ((ns_0) (namespace-run-available-modules!_0 ns_0 unsafe-undefined))
17963     ((ns_0 run-phase120_0)
17964      (namespace-run-available-modules!_0 ns_0 run-phase120_0)))))
17965(define namespace-primitive-module-visit!
17966  (lambda (ns_0 name_0)
17967    (let ((mi_0
17968           (hash-ref
17969            (namespace-module-instances ns_0)
17970            (1/make-resolved-module-path name_0))))
17971      (run-module-instance!.1 #f #t 1 hash2610 null #f mi_0 ns_0))))
17972(define namespace-module-use->module+linklet-instances.1
17973  (|#%name|
17974   namespace-module-use->module+linklet-instances
17975   (lambda (phase-shift124_0 shift-from122_0 shift-to123_0 ns128_0 mu129_0)
17976     (begin
17977       (let ((mod_0 (module-use-module mu129_0)))
17978         (let ((mi_0
17979                (let ((temp221_0
17980                       (1/module-path-index-resolve
17981                        (if shift-from122_0
17982                          (module-path-index-shift
17983                           mod_0
17984                           shift-from122_0
17985                           shift-to123_0)
17986                          mod_0))))
17987                  (namespace->module-instance.1
17988                   #f
17989                   #t
17990                   void
17991                   ns128_0
17992                   temp221_0
17993                   phase-shift124_0))))
17994           (let ((m-ns_0 (module-instance-namespace mi_0)))
17995             (let ((small-ht_0 (namespace-phase-level-to-definitions m-ns_0)))
17996               (let ((d_0
17997                      (let ((key_0 (module-use-phase mu129_0)))
17998                        (let ((small-ht_1 small-ht_0))
17999                          (begin-unsafe
18000                           (hash-ref (unbox small-ht_1) key_0 #f))))))
18001                 (if d_0
18002                   (values mi_0 (definitions-variables d_0))
18003                   (let ((app_0
18004                          (string-append
18005                           "namespace mismatch: phase level not found;\n"
18006                           "  module: ~a\n"
18007                           "  phase level: ~a\n"
18008                           "  found phase levels: ~a")))
18009                     (let ((app_1 (module-use-phase mu129_0)))
18010                       (error
18011                        'eval
18012                        app_0
18013                        mod_0
18014                        app_1
18015                        (let ((small-ht_1
18016                               (namespace-phase-level-to-definitions m-ns_0)))
18017                          (begin-unsafe
18018                           (hash-keys (unbox small-ht_1)))))))))))))))))
18019(define fresh-requires
18020  (lambda (requires_0)
18021    (reverse$1
18022     (begin
18023       (letrec*
18024        ((for-loop_0
18025          (|#%name|
18026           for-loop
18027           (lambda (fold-var_0 lst_0)
18028             (begin
18029               (if (pair? lst_0)
18030                 (let ((phase+mpis_0 (unsafe-car lst_0)))
18031                   (let ((rest_0 (unsafe-cdr lst_0)))
18032                     (let ((fold-var_1
18033                            (let ((fold-var_1
18034                                   (cons
18035                                    (let ((app_0 (car phase+mpis_0)))
18036                                      (cons
18037                                       app_0
18038                                       (reverse$1
18039                                        (let ((lst_1 (cdr phase+mpis_0)))
18040                                          (begin
18041                                            (letrec*
18042                                             ((for-loop_1
18043                                               (|#%name|
18044                                                for-loop
18045                                                (lambda (fold-var_1 lst_2)
18046                                                  (begin
18047                                                    (if (pair? lst_2)
18048                                                      (let ((req-mpi_0
18049                                                             (unsafe-car
18050                                                              lst_2)))
18051                                                        (let ((rest_1
18052                                                               (unsafe-cdr
18053                                                                lst_2)))
18054                                                          (let ((fold-var_2
18055                                                                 (let ((fold-var_2
18056                                                                        (cons
18057                                                                         (module-path-index-fresh
18058                                                                          req-mpi_0)
18059                                                                         fold-var_1)))
18060                                                                   (values
18061                                                                    fold-var_2))))
18062                                                            (for-loop_1
18063                                                             fold-var_2
18064                                                             rest_1))))
18065                                                      fold-var_1))))))
18066                                             (for-loop_1 null lst_1)))))))
18067                                    fold-var_0)))
18068                              (values fold-var_1))))
18069                       (for-loop_0 fold-var_1 rest_0))))
18070                 fold-var_0))))))
18071        (for-loop_0 null requires_0))))))
18072(define module-compute-access!
18073  (lambda (m_0)
18074    (let ((ht_0 (module-provides m_0)))
18075      (let ((access_0
18076             (begin
18077               (letrec*
18078                ((for-loop_0
18079                  (|#%name|
18080                   for-loop
18081                   (lambda (table_0 i_0)
18082                     (begin
18083                       (if i_0
18084                         (call-with-values
18085                          (lambda () (hash-iterate-key+value ht_0 i_0))
18086                          (case-lambda
18087                           ((phase_0 at-phase_0)
18088                            (let ((table_1
18089                                   (let ((table_1
18090                                          (call-with-values
18091                                           (lambda ()
18092                                             (values
18093                                              phase_0
18094                                              (begin
18095                                                (letrec*
18096                                                 ((for-loop_1
18097                                                   (|#%name|
18098                                                    for-loop
18099                                                    (lambda (table_1 i_1)
18100                                                      (begin
18101                                                        (if i_1
18102                                                          (call-with-values
18103                                                           (lambda ()
18104                                                             (hash-iterate-key+value
18105                                                              at-phase_0
18106                                                              i_1))
18107                                                           (case-lambda
18108                                                            ((sym_0
18109                                                              binding/p_0)
18110                                                             (let ((table_2
18111                                                                    (let ((table_2
18112                                                                           (call-with-values
18113                                                                            (lambda ()
18114                                                                              (let ((app_0
18115                                                                                     (module-binding-sym
18116                                                                                      (provided-as-binding
18117                                                                                       binding/p_0))))
18118                                                                                (values
18119                                                                                 app_0
18120                                                                                 (if (provided-as-protected?
18121                                                                                      binding/p_0)
18122                                                                                   'protected
18123                                                                                   'provided))))
18124                                                                            (case-lambda
18125                                                                             ((key_0
18126                                                                               val_0)
18127                                                                              (hash-set
18128                                                                               table_1
18129                                                                               key_0
18130                                                                               val_0))
18131                                                                             (args
18132                                                                              (raise-binding-result-arity-error
18133                                                                               2
18134                                                                               args))))))
18135                                                                      (values
18136                                                                       table_2))))
18137                                                               (for-loop_1
18138                                                                table_2
18139                                                                (hash-iterate-next
18140                                                                 at-phase_0
18141                                                                 i_1))))
18142                                                            (args
18143                                                             (raise-binding-result-arity-error
18144                                                              2
18145                                                              args))))
18146                                                          table_1))))))
18147                                                 (for-loop_1
18148                                                  hash2725
18149                                                  (hash-iterate-first
18150                                                   at-phase_0))))))
18151                                           (case-lambda
18152                                            ((key_0 val_0)
18153                                             (hash-set table_0 key_0 val_0))
18154                                            (args
18155                                             (raise-binding-result-arity-error
18156                                              2
18157                                              args))))))
18158                                     (values table_1))))
18159                              (for-loop_0
18160                               table_1
18161                               (hash-iterate-next ht_0 i_0))))
18162                           (args (raise-binding-result-arity-error 2 args))))
18163                         table_0))))))
18164                (for-loop_0 hash2589 (hash-iterate-first ht_0))))))
18165        (begin (set-module-access! m_0 access_0) access_0)))))
18166(define module-instances->indented-module-names
18167  (lambda (mi_0 seen-list_0)
18168    (let ((mi->name_0
18169           (|#%name|
18170            mi->name
18171            (lambda (mi_1)
18172              (begin
18173                (format
18174                 "\n   ~a"
18175                 (1/module-path-index-resolve
18176                  (namespace-mpi (module-instance-namespace mi_1)))))))))
18177      (let ((app_0 (mi->name_0 mi_0)))
18178        (cons
18179         app_0
18180         (letrec*
18181          ((loop_0
18182            (|#%name|
18183             loop
18184             (lambda (seen-list_1)
18185               (begin
18186                 (if (null? seen-list_1)
18187                   '()
18188                   (if (eq? mi_0 (car seen-list_1))
18189                     (list (mi->name_0 mi_0))
18190                     (let ((app_1 (mi->name_0 (car seen-list_1))))
18191                       (cons app_1 (loop_0 (cdr seen-list_1)))))))))))
18192          (loop_0 seen-list_0)))))))
18193(define binding->module-instance
18194  (lambda (b_0 ns_0 phase_0 id_0)
18195    (let ((at-phase_0 (phase- phase_0 (module-binding-phase b_0))))
18196      (let ((mi_0
18197             (let ((temp2_0
18198                    (1/module-path-index-resolve (module-binding-module b_0))))
18199               (let ((temp4_0 (module-binding-phase b_0)))
18200                 (let ((temp5_0 (lambda (mi_0) 'unavailable)))
18201                   (let ((temp4_1 temp4_0) (temp2_1 temp2_0))
18202                     (namespace->module-instance.1
18203                      temp4_1
18204                      #f
18205                      temp5_0
18206                      ns_0
18207                      temp2_1
18208                      at-phase_0)))))))
18209        (begin
18210          (if (eq? mi_0 'unavailable)
18211            (raise-syntax-error$1
18212             #f
18213             (let ((app_0
18214                    (string-append
18215                     "module mismatch;\n"
18216                     " attempted to use a module that is not available\n"
18217                     "  possible cause:\n"
18218                     "   using (dynamic-require .... #f)\n"
18219                     "   but need (dynamic-require .... 0)\n"
18220                     "  module: ~s\n"
18221                     "  phase: ~s")))
18222               (let ((app_1 (module-binding-module b_0)))
18223                 (format
18224                  app_0
18225                  app_1
18226                  (phase+ at-phase_0 (module-binding-phase b_0)))))
18227             id_0)
18228            (void))
18229          (if mi_0
18230            (void)
18231            (raise-syntax-error$1
18232             #f
18233             (let ((app_0
18234                    (string-append
18235                     "namespace mismatch;\n"
18236                     " cannot locate module instance\n"
18237                     "  module: ~a\n"
18238                     "  use phase: ~a\n"
18239                     "  definition phase: ~a")))
18240               (let ((app_1
18241                      (1/module-path-index-resolve
18242                       (module-binding-module b_0))))
18243                 (format app_0 app_1 phase_0 (module-binding-phase b_0))))
18244             id_0))
18245          mi_0)))))
18246(define check-access
18247  (lambda (b_0 mi_0 id_0 in-s_0 what_0)
18248    (let ((m_0 (module-instance-module mi_0)))
18249      (if (if m_0 (not (module-no-protected? m_0)) #f)
18250        (let ((access_0
18251               (let ((or-part_0 (module-access m_0)))
18252                 (if or-part_0 or-part_0 (module-compute-access! m_0)))))
18253          (let ((a_0
18254                 (let ((app_0
18255                        (hash-ref
18256                         access_0
18257                         (module-binding-phase b_0)
18258                         hash2610)))
18259                   (hash-ref app_0 (module-binding-sym b_0) 'unexported))))
18260            (if (let ((or-part_0 (eq? a_0 'unexported)))
18261                  (if or-part_0 or-part_0 (eq? a_0 'protected)))
18262              (begin
18263                (if (let ((or-part_0
18264                           (let ((app_0
18265                                  (let ((or-part_0 (syntax-inspector id_0)))
18266                                    (if or-part_0
18267                                      or-part_0
18268                                      (current-code-inspector)))))
18269                             (inspector-superior?
18270                              app_0
18271                              (namespace-inspector
18272                               (module-instance-namespace mi_0))))))
18273                      (if or-part_0
18274                        or-part_0
18275                        (if (module-binding-extra-inspector b_0)
18276                          (let ((app_0 (module-binding-extra-inspector b_0)))
18277                            (inspector-superior?
18278                             app_0
18279                             (namespace-inspector
18280                              (module-instance-namespace mi_0))))
18281                          #f)))
18282                  (void)
18283                  (let ((complain-id_0
18284                         (let ((c-id_0
18285                                (if in-s_0 in-s_0 (module-binding-sym b_0))))
18286                           (if (not
18287                                (let ((app_0
18288                                       (if (syntax?$1 c-id_0)
18289                                         (syntax-content c-id_0)
18290                                         c-id_0)))
18291                                  (eq? app_0 (syntax-content id_0))))
18292                             c-id_0
18293                             #f))))
18294                    (raise-syntax-error$1
18295                     #f
18296                     (format
18297                      "access disallowed by code inspector to ~a ~a\n  from module: ~a"
18298                      a_0
18299                      what_0
18300                      (1/module-path-index-resolve
18301                       (namespace-mpi (module-instance-namespace mi_0))))
18302                     complain-id_0
18303                     id_0
18304                     null)))
18305                #t)
18306              #f)))
18307        #f))))
18308(define resolve+shift/extra-inspector
18309  (lambda (id_0 phase_0 ns_0)
18310    (letrec*
18311     ((loop_0
18312       (|#%name|
18313        loop
18314        (lambda (id_1 in-s_0)
18315          (begin
18316            (let ((b_0 (resolve+shift.1 #f #f null #t #f id_1 phase_0)))
18317              (let ((c1_0 (binding-free=id b_0)))
18318                (if c1_0
18319                  (begin
18320                    (if (if (module-binding? b_0)
18321                          (not
18322                           (let ((mpi_0 (module-binding-module b_0)))
18323                             (begin-unsafe
18324                              (eq? top-level-module-path-index mpi_0))))
18325                          #f)
18326                      (let ((mi_0
18327                             (binding->module-instance b_0 ns_0 phase_0 id_1)))
18328                        (check-access b_0 mi_0 id_1 in-s_0 "provided binding"))
18329                      (void))
18330                    (let ((next-b_0 (loop_0 c1_0 (if in-s_0 in-s_0 id_1))))
18331                      (if (not next-b_0)
18332                        b_0
18333                        (if (if (module-binding? next-b_0)
18334                              (if (not
18335                                   (module-binding-extra-inspector next-b_0))
18336                                (syntax-inspector id_1)
18337                                #f)
18338                              #f)
18339                          (let ((temp5_0 (syntax-inspector id_1)))
18340                            (module-binding-update.1
18341                             temp5_0
18342                             unsafe-undefined
18343                             unsafe-undefined
18344                             unsafe-undefined
18345                             unsafe-undefined
18346                             unsafe-undefined
18347                             unsafe-undefined
18348                             unsafe-undefined
18349                             unsafe-undefined
18350                             unsafe-undefined
18351                             unsafe-undefined
18352                             next-b_0))
18353                          next-b_0))))
18354                  b_0))))))))
18355     (loop_0 id_0 #f))))
18356(define-values
18357 (1/prop:set!-transformer 1/set!-transformer? set!-transformer-value)
18358 (make-struct-type-property
18359  'set!-transformer
18360  (lambda (v_0 info_0)
18361    (begin
18362      (if (let ((or-part_0
18363                 (if (procedure? v_0)
18364                   (let ((or-part_0 (procedure-arity-includes? v_0 1)))
18365                     (if or-part_0
18366                       or-part_0
18367                       (procedure-arity-includes? v_0 2)))
18368                   #f)))
18369            (if or-part_0 or-part_0 (exact-nonnegative-integer? v_0)))
18370        (void)
18371        (raise-argument-error
18372         'guard-for-prop:set!-transformer
18373         (string-append
18374          "(or/c (procedure-arity-includes? proc 1)\n"
18375          "      (procedure-arity-includes? proc 2)\n"
18376          "      exact-nonnegative-integer?)")
18377         v_0))
18378      (begin
18379        (if (exact-nonnegative-integer? v_0)
18380          (begin
18381            (if (<= v_0 (list-ref info_0 1))
18382              (void)
18383              (raise-arguments-error
18384               'guard-for-prop:set!-transformer
18385               "field index >= initialized-field count for structure type"
18386               "field index"
18387               v_0
18388               "initialized-field count"
18389               (list-ref info_0 1)))
18390            (if (member v_0 (list-ref info_0 5))
18391              (void)
18392              (raise-arguments-error
18393               'guard-for-prop:set!-transformer
18394               "field index not declared immutable"
18395               "field index"
18396               v_0)))
18397          (void))
18398        (let ((ref_0 (list-ref info_0 3)))
18399          (if (integer? v_0)
18400            (lambda (t_0)
18401              (let ((p_0 (|#%app| ref_0 t_0 v_0)))
18402                (if (if (procedure? p_0) (procedure-arity-includes? p_0 1) #f)
18403                  p_0
18404                  (lambda (s_0) (error "bad syntax:" s_0)))))
18405            (lambda (t_0) v_0))))))))
18406(define 1/make-set!-transformer
18407  (let ((finish732
18408         (make-struct-type-install-properties
18409          '(set!-transformer)
18410          1
18411          0
18412          #f
18413          (list (cons 1/prop:set!-transformer 0))
18414          (current-inspector)
18415          #f
18416          '(0)
18417          #f
18418          'set!-transformer)))
18419    (let ((struct:set!-transformer_0
18420           (make-record-type-descriptor* 'set!-transformer #f #f #f #f 1 0)))
18421      (let ((effect733 (finish732 struct:set!-transformer_0)))
18422        (let ((set!-transformer1_0
18423               (|#%name|
18424                set!-transformer
18425                (record-constructor
18426                 (make-record-constructor-descriptor
18427                  struct:set!-transformer_0
18428                  #f
18429                  #f)))))
18430          (let ((set!-transformer?_0
18431                 (|#%name|
18432                  set!-transformer?
18433                  (record-predicate struct:set!-transformer_0))))
18434            (let ((set!-transformer?_1
18435                   (|#%name|
18436                    set!-transformer?
18437                    (lambda (v)
18438                      (if (set!-transformer?_0 v)
18439                        #t
18440                        ($value
18441                         (if (impersonator? v)
18442                           (set!-transformer?_0 (impersonator-val v))
18443                           #f)))))))
18444              (let ((set!-transformer-proc_0
18445                     (|#%name|
18446                      set!-transformer-proc
18447                      (record-accessor struct:set!-transformer_0 0))))
18448                (let ((set!-transformer-proc_1
18449                       (|#%name|
18450                        set!-transformer-proc
18451                        (lambda (s)
18452                          (if (set!-transformer?_0 s)
18453                            (set!-transformer-proc_0 s)
18454                            ($value
18455                             (impersonate-ref
18456                              set!-transformer-proc_0
18457                              struct:set!-transformer_0
18458                              0
18459                              s
18460                              'set!-transformer
18461                              'proc)))))))
18462                  (|#%name|
18463                   make-set!-transformer
18464                   (lambda (proc_0)
18465                     (begin
18466                       (begin
18467                         (if (if (procedure? proc_0)
18468                               (procedure-arity-includes? proc_0 1)
18469                               #f)
18470                           (void)
18471                           (raise-argument-error
18472                            'make-set!-transformer
18473                            "(procedure-arity-includes/c 1)"
18474                            proc_0))
18475                         (set!-transformer1_0 proc_0))))))))))))))
18476(define 1/set!-transformer-procedure
18477  (|#%name|
18478   set!-transformer-procedure
18479   (lambda (t_0)
18480     (begin
18481       (let ((v_0 (|#%app| (set!-transformer-value t_0) t_0)))
18482         (if (procedure-arity-includes? v_0 1)
18483           v_0
18484           (lambda (s_0) (|#%app| v_0 t_0 s_0))))))))
18485(define empty-env hash2610)
18486(define env-extend (lambda (env_0 key_0 val_0) (hash-set env_0 key_0 val_0)))
18487(define lookup
18488  (lambda (env_0 key_0 default_0) (hash-ref env_0 key_0 default_0)))
18489(define variable (gensym 'variable))
18490(define variable?
18491  (lambda (t_0)
18492    (let ((or-part_0 (eq? t_0 variable)))
18493      (if or-part_0 or-part_0 (local-variable? t_0)))))
18494(define finish_2125
18495  (make-struct-type-install-properties
18496   '(local-variable)
18497   1
18498   0
18499   #f
18500   (list (cons prop:authentic #t))
18501   (current-inspector)
18502   #f
18503   '(0)
18504   #f
18505   'local-variable))
18506(define struct:local-variable
18507  (make-record-type-descriptor*
18508   'local-variable
18509   #f
18510   (|#%nongenerative-uid| local-variable)
18511   #f
18512   #f
18513   1
18514   0))
18515(define effect_2625 (finish_2125 struct:local-variable))
18516(define local-variable1.1
18517  (|#%name|
18518   local-variable
18519   (record-constructor
18520    (make-record-constructor-descriptor struct:local-variable #f #f))))
18521(define local-variable?
18522  (|#%name| local-variable? (record-predicate struct:local-variable)))
18523(define local-variable-id
18524  (|#%name| local-variable-id (record-accessor struct:local-variable 0)))
18525(define substitute-variable.1
18526  (|#%name|
18527   substitute-variable
18528   (lambda (no-stops?2_0 id4_0 t5_0)
18529     (begin
18530       (if (if no-stops?2_0 (local-variable? t5_0) #f)
18531         (let ((bind-id_0 (local-variable-id t5_0)))
18532           (let ((pruned-id_0
18533                  (datum->syntax$1
18534                   bind-id_0
18535                   (syntax-e$1 bind-id_0)
18536                   id4_0
18537                   id4_0)))
18538             (if (syntax-any-macro-scopes? id4_0)
18539               (1/syntax-property-remove pruned-id_0 original-property-sym)
18540               pruned-id_0)))
18541         id4_0)))))
18542(define missing (gensym 'missing))
18543(define transformer?
18544  (lambda (t_0)
18545    (let ((or-part_0 (procedure? t_0)))
18546      (if or-part_0
18547        or-part_0
18548        (let ((or-part_1 (1/set!-transformer? t_0)))
18549          (if or-part_1 or-part_1 (1/rename-transformer? t_0)))))))
18550(define transformer->procedure
18551  (lambda (t_0)
18552    (if (1/set!-transformer? t_0)
18553      (1/set!-transformer-procedure t_0)
18554      (if (1/rename-transformer? t_0) (lambda (s_0) s_0) t_0))))
18555(define finish_2414
18556  (make-struct-type-install-properties
18557   '(core-form)
18558   2
18559   0
18560   #f
18561   (list (cons prop:authentic #t))
18562   #f
18563   #f
18564   '(0 1)
18565   #f
18566   'core-form))
18567(define struct:core-form
18568  (make-record-type-descriptor*
18569   'core-form
18570   #f
18571   (|#%nongenerative-uid| core-form)
18572   #f
18573   #f
18574   2
18575   0))
18576(define effect_2077 (finish_2414 struct:core-form))
18577(define core-form7.1
18578  (|#%name|
18579   core-form
18580   (record-constructor
18581    (make-record-constructor-descriptor struct:core-form #f #f))))
18582(define core-form? (|#%name| core-form? (record-predicate struct:core-form)))
18583(define core-form-expander
18584  (|#%name| core-form-expander (record-accessor struct:core-form 0)))
18585(define core-form-name
18586  (|#%name| core-form-name (record-accessor struct:core-form 1)))
18587(define add-binding!.1
18588  (|#%name|
18589   add-binding!
18590   (lambda (in8_0 just-for-nominal?9_0 id12_0 binding13_0 phase14_0)
18591     (begin
18592       (begin
18593         (check-id-taint id12_0 in8_0)
18594         (let ((temp47_0 (syntax-scope-set id12_0 phase14_0)))
18595           (let ((temp48_0 (syntax-e$1 id12_0)))
18596             (let ((temp47_1 temp47_0))
18597               (add-binding-in-scopes!.1
18598                just-for-nominal?9_0
18599                temp47_1
18600                temp48_0
18601                binding13_0)))))))))
18602(define add-bulk-binding!.1
18603  (|#%name|
18604   add-bulk-binding!
18605   (lambda (in16_0 shadow-except17_0 s20_0 binding21_0 phase22_0)
18606     (begin
18607       (begin
18608         (if (syntax-tainted?$1 s20_0)
18609           (raise-syntax-error$1
18610            #f
18611            "cannot bind from tainted syntax"
18612            in16_0
18613            s20_0)
18614           (void))
18615         (let ((temp51_0 (syntax-scope-set s20_0 phase22_0)))
18616           (add-bulk-binding-in-scopes!.1
18617            shadow-except17_0
18618            temp51_0
18619            binding21_0)))))))
18620(define add-local-binding!.1
18621  (|#%name|
18622   add-local-binding!
18623   (lambda (frame-id25_0 in26_0 local-sym24_0 id30_0 phase31_0 counter32_0)
18624     (begin
18625       (begin
18626         (check-id-taint id30_0 in26_0)
18627         (let ((c_0 (add1 (unbox counter32_0))))
18628           (begin
18629             (set-box! counter32_0 c_0)
18630             (let ((sym_0 (syntax-content id30_0)))
18631               (let ((key_0
18632                      (string->uninterned-symbol
18633                       (let ((app_0
18634                              (symbol->immutable-string
18635                               (if local-sym24_0 local-sym24_0 sym_0))))
18636                         (string-append-immutable
18637                          app_0
18638                          "_"
18639                          (number->string c_0))))))
18640                 (begin
18641                   (let ((temp54_0 (syntax-scope-set id30_0 phase31_0)))
18642                     (let ((temp56_0
18643                            (make-local-binding.1 frame-id25_0 #f key_0)))
18644                       (let ((temp54_1 temp54_0))
18645                         (add-binding-in-scopes!.1
18646                          #f
18647                          temp54_1
18648                          sym_0
18649                          temp56_0))))
18650                   key_0))))))))))
18651(define check-id-taint
18652  (lambda (id_0 in-s_0)
18653    (if (syntax-tainted?$1 id_0)
18654      (raise-syntax-error$1 #f "cannot bind tainted identifier" in-s_0 id_0)
18655      (void))))
18656(define binding-lookup.1
18657  (|#%name|
18658   binding-lookup
18659   (lambda (in34_0
18660            out-of-context-as-variable?35_0
18661            b38_0
18662            env39_0
18663            lift-envs40_0
18664            ns41_0
18665            phase42_0
18666            id43_0)
18667     (begin
18668       (if (module-binding? b38_0)
18669         (let ((top-level?_0
18670                (let ((mpi_0 (module-binding-module b38_0)))
18671                  (begin-unsafe (eq? top-level-module-path-index mpi_0)))))
18672           (let ((mi_0
18673                  (if (not top-level?_0)
18674                    (binding->module-instance b38_0 ns41_0 phase42_0 id43_0)
18675                    #f)))
18676             (let ((m_0 (if mi_0 (module-instance-module mi_0) #f)))
18677               (let ((primitive?_0 (if m_0 (module-primitive? m_0) #f)))
18678                 (let ((m-ns_0
18679                        (if top-level?_0
18680                          ns41_0
18681                          (if mi_0 (module-instance-namespace mi_0) #f))))
18682                   (begin
18683                     (check-taint id43_0)
18684                     (let ((t_0
18685                            (let ((app_0 (module-binding-phase b38_0)))
18686                              (namespace-get-transformer
18687                               m-ns_0
18688                               app_0
18689                               (module-binding-sym b38_0)
18690                               variable))))
18691                       (let ((protected?_0
18692                              (if mi_0
18693                                (check-access
18694                                 b38_0
18695                                 mi_0
18696                                 id43_0
18697                                 in34_0
18698                                 (if (variable? t_0) "variable" "transformer"))
18699                                #f)))
18700                         (let ((insp_0
18701                                (if mi_0
18702                                  (if (module-instance-module mi_0)
18703                                    (module-inspector
18704                                     (module-instance-module mi_0))
18705                                    #f)
18706                                  #f)))
18707                           (values
18708                            t_0
18709                            primitive?_0
18710                            insp_0
18711                            protected?_0))))))))))
18712         (if (local-binding? b38_0)
18713           (let ((t_0
18714                  (let ((key_0 (local-binding-key b38_0)))
18715                    (begin-unsafe (hash-ref env39_0 key_0 missing)))))
18716             (if (eq? t_0 missing)
18717               (values
18718                (let ((or-part_0
18719                       (begin
18720                         (letrec*
18721                          ((for-loop_0
18722                            (|#%name|
18723                             for-loop
18724                             (lambda (result_0 lst_0)
18725                               (begin
18726                                 (if (pair? lst_0)
18727                                   (let ((lift-env_0 (unsafe-car lst_0)))
18728                                     (let ((rest_0 (unsafe-cdr lst_0)))
18729                                       (let ((result_1
18730                                              (let ((result_1
18731                                                     (let ((env_0
18732                                                            (unbox
18733                                                             lift-env_0)))
18734                                                       (let ((key_0
18735                                                              (local-binding-key
18736                                                               b38_0)))
18737                                                         (let ((env_1 env_0))
18738                                                           (begin-unsafe
18739                                                            (hash-ref
18740                                                             env_1
18741                                                             key_0
18742                                                             #f)))))))
18743                                                (values result_1))))
18744                                         (if (if (not
18745                                                  (let ((x_0
18746                                                         (list lift-env_0)))
18747                                                    result_1))
18748                                               #t
18749                                               #f)
18750                                           (for-loop_0 result_1 rest_0)
18751                                           result_1))))
18752                                   result_0))))))
18753                          (for-loop_0 #f lift-envs40_0)))))
18754                  (if or-part_0
18755                    or-part_0
18756                    (if out-of-context-as-variable?35_0
18757                      variable
18758                      (error "identifier used out of context:" id43_0))))
18759                #f
18760                #f
18761                #f)
18762               (begin (check-taint id43_0) (values t_0 #f #f #f))))
18763           (error "internal error: unknown binding for lookup:" b38_0)))))))
18764(define check-taint
18765  (lambda (id_0)
18766    (if (syntax-tainted?$1 id_0)
18767      (raise-syntax-error$1
18768       #f
18769       "cannot use identifier tainted by macro transformation"
18770       id_0)
18771      (void))))
18772(define existing-binding-key
18773  (lambda (id_0 phase_0)
18774    (let ((b_0 (resolve+shift.1 #f #f null #t #f id_0 phase_0)))
18775      (begin
18776        (if (local-binding? b_0)
18777          (void)
18778          (raise-syntax-error$1
18779           #f
18780           "expected an existing local binding for an already-expanded identifier"
18781           id_0))
18782        (local-binding-key b_0)))))
18783(define cons-ish (lambda (a_0 b_0) (if (null? b_0) a_0 (cons a_0 b_0))))
18784(define free-id-set
18785  (lambda (phase_0 ids_0)
18786    (begin
18787      (letrec*
18788       ((for-loop_0
18789         (|#%name|
18790          for-loop
18791          (lambda (ht_0 lst_0)
18792            (begin
18793              (if (pair? lst_0)
18794                (let ((id_0 (unsafe-car lst_0)))
18795                  (let ((rest_0 (unsafe-cdr lst_0)))
18796                    (let ((ht_1
18797                           (let ((ht_1
18798                                  (let ((sym_0
18799                                         (identifier-binding-symbol$1
18800                                          id_0
18801                                          phase_0)))
18802                                    (hash-set
18803                                     ht_0
18804                                     sym_0
18805                                     (cons-ish
18806                                      id_0
18807                                      (hash-ref ht_0 sym_0 null))))))
18808                             (values ht_1))))
18809                      (for-loop_0 ht_1 rest_0))))
18810                ht_0))))))
18811       (for-loop_0 hash2610 ids_0)))))
18812(define empty-free-id-set (free-id-set 0 null))
18813(define free-id-set-empty? (lambda (fs_0) (eq? fs_0 empty-free-id-set)))
18814(define free-id-set-member?
18815  (lambda (fs_0 phase_0 given-id_0)
18816    (if (begin-unsafe (eq? fs_0 empty-free-id-set))
18817      #f
18818      (let ((lst_0
18819             (hash-ref
18820              fs_0
18821              (identifier-binding-symbol$1 given-id_0 phase_0)
18822              null)))
18823        (begin
18824          (letrec*
18825           ((for-loop_0
18826             (|#%name|
18827              for-loop
18828              (lambda (result_0 lst_1)
18829                (begin
18830                  (if (not (null? lst_1))
18831                    (let ((id_0 (if (pair? lst_1) (car lst_1) lst_1)))
18832                      (let ((rest_0 (if (pair? lst_1) (cdr lst_1) null)))
18833                        (let ((id_1 id_0))
18834                          (let ((result_1
18835                                 (let ((result_1
18836                                        (free-identifier=?$1
18837                                         id_1
18838                                         given-id_0
18839                                         phase_0
18840                                         phase_0)))
18841                                   (values result_1))))
18842                            (if (if (not (let ((x_0 (list id_1))) result_1))
18843                                  #t
18844                                  #f)
18845                              (for-loop_0 result_1 rest_0)
18846                              result_1)))))
18847                    result_0))))))
18848           (for-loop_0 #f lst_0)))))))
18849(define free-id-set-empty-or-just-module*?
18850  (lambda (fs_0) (let ((c_0 (hash-count fs_0))) (<= c_0 1))))
18851(define finish_2652
18852  (make-struct-type-install-properties
18853   '(expand-context)
18854   11
18855   0
18856   struct:root-expand-context/outer
18857   (list (cons prop:authentic #t))
18858   (current-inspector)
18859   #f
18860   '(0 1 2 3 4 5 6 7 8 9 10)
18861   #f
18862   'expand-context/outer))
18863(define struct:expand-context/outer
18864  (make-record-type-descriptor*
18865   'expand-context
18866   struct:root-expand-context/outer
18867   (|#%nongenerative-uid| expand-context)
18868   #f
18869   #f
18870   11
18871   0))
18872(define effect_2851 (finish_2652 struct:expand-context/outer))
18873(define expand-context/outer1.1
18874  (|#%name|
18875   expand-context/outer
18876   (record-constructor
18877    (make-record-constructor-descriptor struct:expand-context/outer #f #f))))
18878(define expand-context/outer?
18879  (|#%name| expand-context? (record-predicate struct:expand-context/outer)))
18880(define expand-context/outer-context
18881  (|#%name|
18882   expand-context-context
18883   (record-accessor struct:expand-context/outer 0)))
18884(define expand-context/outer-env
18885  (|#%name|
18886   expand-context-env
18887   (record-accessor struct:expand-context/outer 1)))
18888(define expand-context/outer-scopes
18889  (|#%name|
18890   expand-context-scopes
18891   (record-accessor struct:expand-context/outer 2)))
18892(define expand-context/outer-def-ctx-scopes
18893  (|#%name|
18894   expand-context-def-ctx-scopes
18895   (record-accessor struct:expand-context/outer 3)))
18896(define expand-context/outer-binding-layer
18897  (|#%name|
18898   expand-context-binding-layer
18899   (record-accessor struct:expand-context/outer 4)))
18900(define expand-context/outer-reference-records
18901  (|#%name|
18902   expand-context-reference-records
18903   (record-accessor struct:expand-context/outer 5)))
18904(define expand-context/outer-only-immediate?
18905  (|#%name|
18906   expand-context-only-immediate?
18907   (record-accessor struct:expand-context/outer 6)))
18908(define expand-context/outer-need-eventually-defined
18909  (|#%name|
18910   expand-context-need-eventually-defined
18911   (record-accessor struct:expand-context/outer 7)))
18912(define expand-context/outer-current-introduction-scopes
18913  (|#%name|
18914   expand-context-current-introduction-scopes
18915   (record-accessor struct:expand-context/outer 8)))
18916(define expand-context/outer-current-use-scopes
18917  (|#%name|
18918   expand-context-current-use-scopes
18919   (record-accessor struct:expand-context/outer 9)))
18920(define expand-context/outer-name
18921  (|#%name|
18922   expand-context-name
18923   (record-accessor struct:expand-context/outer 10)))
18924(define finish_2648
18925  (make-struct-type-install-properties
18926   '(expand-context/inner)
18927   22
18928   0
18929   struct:root-expand-context/inner
18930   (list (cons prop:authentic #t))
18931   (current-inspector)
18932   #f
18933   '(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21)
18934   #f
18935   'expand-context/inner))
18936(define struct:expand-context/inner
18937  (make-record-type-descriptor*
18938   'expand-context/inner
18939   struct:root-expand-context/inner
18940   (|#%nongenerative-uid| expand-context/inner)
18941   #f
18942   #f
18943   22
18944   0))
18945(define effect_3326 (finish_2648 struct:expand-context/inner))
18946(define expand-context/inner2.1
18947  (|#%name|
18948   expand-context/inner
18949   (record-constructor
18950    (make-record-constructor-descriptor struct:expand-context/inner #f #f))))
18951(define expand-context/inner?
18952  (|#%name|
18953   expand-context/inner?
18954   (record-predicate struct:expand-context/inner)))
18955(define expand-context/inner-to-parsed?
18956  (|#%name|
18957   expand-context/inner-to-parsed?
18958   (record-accessor struct:expand-context/inner 0)))
18959(define expand-context/inner-phase
18960  (|#%name|
18961   expand-context/inner-phase
18962   (record-accessor struct:expand-context/inner 1)))
18963(define expand-context/inner-namespace
18964  (|#%name|
18965   expand-context/inner-namespace
18966   (record-accessor struct:expand-context/inner 2)))
18967(define expand-context/inner-just-once?
18968  (|#%name|
18969   expand-context/inner-just-once?
18970   (record-accessor struct:expand-context/inner 3)))
18971(define expand-context/inner-module-begin-k
18972  (|#%name|
18973   expand-context/inner-module-begin-k
18974   (record-accessor struct:expand-context/inner 4)))
18975(define expand-context/inner-allow-unbound?
18976  (|#%name|
18977   expand-context/inner-allow-unbound?
18978   (record-accessor struct:expand-context/inner 5)))
18979(define expand-context/inner-in-local-expand?
18980  (|#%name|
18981   expand-context/inner-in-local-expand?
18982   (record-accessor struct:expand-context/inner 6)))
18983(define |expand-context/inner-keep-#%expression?|
18984  (|#%name|
18985   |expand-context/inner-keep-#%expression?|
18986   (record-accessor struct:expand-context/inner 7)))
18987(define expand-context/inner-stops
18988  (|#%name|
18989   expand-context/inner-stops
18990   (record-accessor struct:expand-context/inner 8)))
18991(define expand-context/inner-declared-submodule-names
18992  (|#%name|
18993   expand-context/inner-declared-submodule-names
18994   (record-accessor struct:expand-context/inner 9)))
18995(define expand-context/inner-lifts
18996  (|#%name|
18997   expand-context/inner-lifts
18998   (record-accessor struct:expand-context/inner 10)))
18999(define expand-context/inner-lift-envs
19000  (|#%name|
19001   expand-context/inner-lift-envs
19002   (record-accessor struct:expand-context/inner 11)))
19003(define expand-context/inner-module-lifts
19004  (|#%name|
19005   expand-context/inner-module-lifts
19006   (record-accessor struct:expand-context/inner 12)))
19007(define expand-context/inner-require-lifts
19008  (|#%name|
19009   expand-context/inner-require-lifts
19010   (record-accessor struct:expand-context/inner 13)))
19011(define expand-context/inner-to-module-lifts
19012  (|#%name|
19013   expand-context/inner-to-module-lifts
19014   (record-accessor struct:expand-context/inner 14)))
19015(define expand-context/inner-requires+provides
19016  (|#%name|
19017   expand-context/inner-requires+provides
19018   (record-accessor struct:expand-context/inner 15)))
19019(define expand-context/inner-observer
19020  (|#%name|
19021   expand-context/inner-observer
19022   (record-accessor struct:expand-context/inner 16)))
19023(define expand-context/inner-for-serializable?
19024  (|#%name|
19025   expand-context/inner-for-serializable?
19026   (record-accessor struct:expand-context/inner 17)))
19027(define expand-context/inner-to-correlated-linklet?
19028  (|#%name|
19029   expand-context/inner-to-correlated-linklet?
19030   (record-accessor struct:expand-context/inner 18)))
19031(define expand-context/inner-normalize-locals?
19032  (|#%name|
19033   expand-context/inner-normalize-locals?
19034   (record-accessor struct:expand-context/inner 19)))
19035(define expand-context/inner-parsing-expanded?
19036  (|#%name|
19037   expand-context/inner-parsing-expanded?
19038   (record-accessor struct:expand-context/inner 20)))
19039(define expand-context/inner-skip-visit-available?
19040  (|#%name|
19041   expand-context/inner-skip-visit-available?
19042   (record-accessor struct:expand-context/inner 21)))
19043(define expand-context/make
19044  (lambda (self-mpi_0
19045           module-scopes_0
19046           post-expansion_0
19047           top-level-bind-scope_0
19048           all-scopes-stx_0
19049           use-site-scopes_0
19050           defined-syms_0
19051           frame-id_0
19052           counter_0
19053           lift-key_0
19054           to-parsed?_0
19055           context_0
19056           phase_0
19057           namespace_0
19058           env_0
19059           scopes_0
19060           def-ctx-scopes_0
19061           binding-layer_0
19062           reference-records_0
19063           only-immediate?_0
19064           just-once?_0
19065           module-begin-k_0
19066           need-eventually-defined_0
19067           allow-unbound?_0
19068           in-local-expand?_0
19069           |keep-#%expression?_0|
19070           stops_0
19071           current-introduction-scopes_0
19072           current-use-scopes_0
19073           declared-submodule-names_0
19074           lifts_0
19075           lift-envs_0
19076           module-lifts_0
19077           require-lifts_0
19078           to-module-lifts_0
19079           requires+provides_0
19080           name_0
19081           observer_0
19082           for-serializable?_0
19083           to-correlated-linklet?_0
19084           normalize-locals?_0
19085           parsing-expanded?_0
19086           skip-visit-available?_0)
19087    (expand-context/outer1.1
19088     (expand-context/inner2.1
19089      self-mpi_0
19090      module-scopes_0
19091      top-level-bind-scope_0
19092      all-scopes-stx_0
19093      defined-syms_0
19094      counter_0
19095      lift-key_0
19096      to-parsed?_0
19097      phase_0
19098      namespace_0
19099      just-once?_0
19100      module-begin-k_0
19101      allow-unbound?_0
19102      in-local-expand?_0
19103      |keep-#%expression?_0|
19104      stops_0
19105      declared-submodule-names_0
19106      lifts_0
19107      lift-envs_0
19108      module-lifts_0
19109      require-lifts_0
19110      to-module-lifts_0
19111      requires+provides_0
19112      observer_0
19113      for-serializable?_0
19114      to-correlated-linklet?_0
19115      normalize-locals?_0
19116      parsing-expanded?_0
19117      skip-visit-available?_0)
19118     post-expansion_0
19119     use-site-scopes_0
19120     frame-id_0
19121     context_0
19122     env_0
19123     scopes_0
19124     def-ctx-scopes_0
19125     binding-layer_0
19126     reference-records_0
19127     only-immediate?_0
19128     need-eventually-defined_0
19129     current-introduction-scopes_0
19130     current-use-scopes_0
19131     name_0)))
19132(define expand-context-context
19133  (lambda (v_0) (expand-context/outer-context v_0)))
19134(define expand-context-env (lambda (v_0) (expand-context/outer-env v_0)))
19135(define expand-context-scopes (lambda (v_0) (expand-context/outer-scopes v_0)))
19136(define expand-context-def-ctx-scopes
19137  (lambda (v_0) (expand-context/outer-def-ctx-scopes v_0)))
19138(define expand-context-binding-layer
19139  (lambda (v_0) (expand-context/outer-binding-layer v_0)))
19140(define expand-context-reference-records
19141  (lambda (v_0) (expand-context/outer-reference-records v_0)))
19142(define expand-context-only-immediate?
19143  (lambda (v_0) (expand-context/outer-only-immediate? v_0)))
19144(define expand-context-need-eventually-defined
19145  (lambda (v_0) (expand-context/outer-need-eventually-defined v_0)))
19146(define expand-context-current-introduction-scopes
19147  (lambda (v_0) (expand-context/outer-current-introduction-scopes v_0)))
19148(define expand-context-current-use-scopes
19149  (lambda (v_0) (expand-context/outer-current-use-scopes v_0)))
19150(define expand-context-name (lambda (v_0) (expand-context/outer-name v_0)))
19151(define expand-context-to-parsed?
19152  (lambda (v_0)
19153    (expand-context/inner-to-parsed? (root-expand-context/outer-inner v_0))))
19154(define expand-context-phase
19155  (lambda (v_0)
19156    (expand-context/inner-phase (root-expand-context/outer-inner v_0))))
19157(define expand-context-namespace
19158  (lambda (v_0)
19159    (expand-context/inner-namespace (root-expand-context/outer-inner v_0))))
19160(define expand-context-just-once?
19161  (lambda (v_0)
19162    (expand-context/inner-just-once? (root-expand-context/outer-inner v_0))))
19163(define expand-context-module-begin-k
19164  (lambda (v_0)
19165    (expand-context/inner-module-begin-k
19166     (root-expand-context/outer-inner v_0))))
19167(define expand-context-allow-unbound?
19168  (lambda (v_0)
19169    (expand-context/inner-allow-unbound?
19170     (root-expand-context/outer-inner v_0))))
19171(define expand-context-in-local-expand?
19172  (lambda (v_0)
19173    (expand-context/inner-in-local-expand?
19174     (root-expand-context/outer-inner v_0))))
19175(define |expand-context-keep-#%expression?|
19176  (lambda (v_0)
19177    (|expand-context/inner-keep-#%expression?|
19178     (root-expand-context/outer-inner v_0))))
19179(define expand-context-stops
19180  (lambda (v_0)
19181    (expand-context/inner-stops (root-expand-context/outer-inner v_0))))
19182(define expand-context-declared-submodule-names
19183  (lambda (v_0)
19184    (expand-context/inner-declared-submodule-names
19185     (root-expand-context/outer-inner v_0))))
19186(define expand-context-lifts
19187  (lambda (v_0)
19188    (expand-context/inner-lifts (root-expand-context/outer-inner v_0))))
19189(define expand-context-lift-envs
19190  (lambda (v_0)
19191    (expand-context/inner-lift-envs (root-expand-context/outer-inner v_0))))
19192(define expand-context-module-lifts
19193  (lambda (v_0)
19194    (expand-context/inner-module-lifts (root-expand-context/outer-inner v_0))))
19195(define expand-context-require-lifts
19196  (lambda (v_0)
19197    (expand-context/inner-require-lifts
19198     (root-expand-context/outer-inner v_0))))
19199(define expand-context-to-module-lifts
19200  (lambda (v_0)
19201    (expand-context/inner-to-module-lifts
19202     (root-expand-context/outer-inner v_0))))
19203(define expand-context-requires+provides
19204  (lambda (v_0)
19205    (expand-context/inner-requires+provides
19206     (root-expand-context/outer-inner v_0))))
19207(define expand-context-observer
19208  (lambda (v_0)
19209    (expand-context/inner-observer (root-expand-context/outer-inner v_0))))
19210(define expand-context-for-serializable?
19211  (lambda (v_0)
19212    (expand-context/inner-for-serializable?
19213     (root-expand-context/outer-inner v_0))))
19214(define expand-context-to-correlated-linklet?
19215  (lambda (v_0)
19216    (expand-context/inner-to-correlated-linklet?
19217     (root-expand-context/outer-inner v_0))))
19218(define expand-context-normalize-locals?
19219  (lambda (v_0)
19220    (expand-context/inner-normalize-locals?
19221     (root-expand-context/outer-inner v_0))))
19222(define expand-context-parsing-expanded?
19223  (lambda (v_0)
19224    (expand-context/inner-parsing-expanded?
19225     (root-expand-context/outer-inner v_0))))
19226(define expand-context-skip-visit-available?
19227  (lambda (v_0)
19228    (expand-context/inner-skip-visit-available?
19229     (root-expand-context/outer-inner v_0))))
19230(define make-expand-context.1
19231  (|#%name|
19232   make-expand-context
19233   (lambda (for-serializable?4_0
19234            observer6_0
19235            skip-visit-available?7_0
19236            to-correlated-linklet?5_0
19237            to-parsed?3_0
19238            ns13_0)
19239     (begin
19240       (let ((root-ctx_0 (namespace-get-root-expand-ctx ns13_0)))
19241         (let ((self-mpi_0
19242                (begin-unsafe
19243                 (root-expand-context/inner-self-mpi
19244                  (root-expand-context/outer-inner root-ctx_0)))))
19245           (let ((module-scopes_0
19246                  (begin-unsafe
19247                   (root-expand-context/inner-module-scopes
19248                    (root-expand-context/outer-inner root-ctx_0)))))
19249             (let ((post-expansion_0
19250                    (begin-unsafe
19251                     (root-expand-context/outer-post-expansion root-ctx_0))))
19252               (let ((top-level-bind-scope_0
19253                      (begin-unsafe
19254                       (root-expand-context/inner-top-level-bind-scope
19255                        (root-expand-context/outer-inner root-ctx_0)))))
19256                 (let ((all-scopes-stx_0
19257                        (begin-unsafe
19258                         (root-expand-context/inner-all-scopes-stx
19259                          (root-expand-context/outer-inner root-ctx_0)))))
19260                   (let ((use-site-scopes_0
19261                          (begin-unsafe
19262                           (root-expand-context/outer-use-site-scopes
19263                            root-ctx_0))))
19264                     (let ((defined-syms_0
19265                            (begin-unsafe
19266                             (root-expand-context/inner-defined-syms
19267                              (root-expand-context/outer-inner root-ctx_0)))))
19268                       (let ((frame-id_0
19269                              (begin-unsafe
19270                               (root-expand-context/outer-frame-id
19271                                root-ctx_0))))
19272                         (let ((counter_0
19273                                (begin-unsafe
19274                                 (root-expand-context/inner-counter
19275                                  (root-expand-context/outer-inner
19276                                   root-ctx_0)))))
19277                           (let ((lift-key_0
19278                                  (begin-unsafe
19279                                   (root-expand-context/inner-lift-key
19280                                    (root-expand-context/outer-inner
19281                                     root-ctx_0)))))
19282                             (let ((phase_0 (namespace-phase ns13_0)))
19283                               (let ((binding-layer_0
19284                                      (begin-unsafe
19285                                       (root-expand-context/outer-frame-id
19286                                        root-ctx_0))))
19287                                 (let ((declared-submodule-names_0 hash2610))
19288                                   (begin-unsafe
19289                                    (expand-context/outer1.1
19290                                     (expand-context/inner2.1
19291                                      self-mpi_0
19292                                      module-scopes_0
19293                                      top-level-bind-scope_0
19294                                      all-scopes-stx_0
19295                                      defined-syms_0
19296                                      counter_0
19297                                      lift-key_0
19298                                      to-parsed?3_0
19299                                      phase_0
19300                                      ns13_0
19301                                      #f
19302                                      #f
19303                                      #t
19304                                      #f
19305                                      #f
19306                                      empty-free-id-set
19307                                      declared-submodule-names_0
19308                                      #f
19309                                      '()
19310                                      #f
19311                                      #f
19312                                      #f
19313                                      #f
19314                                      observer6_0
19315                                      for-serializable?4_0
19316                                      to-correlated-linklet?5_0
19317                                      to-correlated-linklet?5_0
19318                                      #f
19319                                      skip-visit-available?7_0)
19320                                     post-expansion_0
19321                                     use-site-scopes_0
19322                                     frame-id_0
19323                                     'top-level
19324                                     empty-env
19325                                     null
19326                                     #f
19327                                     binding-layer_0
19328                                     null
19329                                     #f
19330                                     #f
19331                                     null
19332                                     null
19333                                     #f))))))))))))))))))))
19334(define copy-root-expand-context
19335  (lambda (ctx_0 root-ctx_0)
19336    (if (expand-context/outer? ctx_0)
19337      (let ((post-expansion25_0
19338             (begin-unsafe
19339              (root-expand-context/outer-post-expansion root-ctx_0))))
19340        (let ((use-site-scopes26_0
19341               (begin-unsafe
19342                (root-expand-context/outer-use-site-scopes root-ctx_0))))
19343          (let ((frame-id27_0
19344                 (begin-unsafe
19345                  (root-expand-context/outer-frame-id root-ctx_0))))
19346            (let ((binding-layer28_0
19347                   (begin-unsafe
19348                    (root-expand-context/outer-frame-id root-ctx_0))))
19349              (let ((inner29_0
19350                     (let ((the-struct_0
19351                            (root-expand-context/outer-inner ctx_0)))
19352                       (if (expand-context/inner? the-struct_0)
19353                         (let ((self-mpi30_0
19354                                (begin-unsafe
19355                                 (root-expand-context/inner-self-mpi
19356                                  (root-expand-context/outer-inner
19357                                   root-ctx_0)))))
19358                           (let ((module-scopes31_0
19359                                  (begin-unsafe
19360                                   (root-expand-context/inner-module-scopes
19361                                    (root-expand-context/outer-inner
19362                                     root-ctx_0)))))
19363                             (let ((top-level-bind-scope32_0
19364                                    (begin-unsafe
19365                                     (root-expand-context/inner-top-level-bind-scope
19366                                      (root-expand-context/outer-inner
19367                                       root-ctx_0)))))
19368                               (let ((all-scopes-stx33_0
19369                                      (begin-unsafe
19370                                       (root-expand-context/inner-all-scopes-stx
19371                                        (root-expand-context/outer-inner
19372                                         root-ctx_0)))))
19373                                 (let ((defined-syms34_0
19374                                        (begin-unsafe
19375                                         (root-expand-context/inner-defined-syms
19376                                          (root-expand-context/outer-inner
19377                                           root-ctx_0)))))
19378                                   (let ((counter35_0
19379                                          (begin-unsafe
19380                                           (root-expand-context/inner-counter
19381                                            (root-expand-context/outer-inner
19382                                             root-ctx_0)))))
19383                                     (let ((lift-key36_0
19384                                            (begin-unsafe
19385                                             (root-expand-context/inner-lift-key
19386                                              (root-expand-context/outer-inner
19387                                               root-ctx_0)))))
19388                                       (expand-context/inner2.1
19389                                        self-mpi30_0
19390                                        module-scopes31_0
19391                                        top-level-bind-scope32_0
19392                                        all-scopes-stx33_0
19393                                        defined-syms34_0
19394                                        counter35_0
19395                                        lift-key36_0
19396                                        (expand-context/inner-to-parsed?
19397                                         the-struct_0)
19398                                        (expand-context/inner-phase
19399                                         the-struct_0)
19400                                        (expand-context/inner-namespace
19401                                         the-struct_0)
19402                                        (expand-context/inner-just-once?
19403                                         the-struct_0)
19404                                        (expand-context/inner-module-begin-k
19405                                         the-struct_0)
19406                                        (expand-context/inner-allow-unbound?
19407                                         the-struct_0)
19408                                        (expand-context/inner-in-local-expand?
19409                                         the-struct_0)
19410                                        (|expand-context/inner-keep-#%expression?|
19411                                         the-struct_0)
19412                                        (expand-context/inner-stops
19413                                         the-struct_0)
19414                                        (expand-context/inner-declared-submodule-names
19415                                         the-struct_0)
19416                                        (expand-context/inner-lifts
19417                                         the-struct_0)
19418                                        (expand-context/inner-lift-envs
19419                                         the-struct_0)
19420                                        (expand-context/inner-module-lifts
19421                                         the-struct_0)
19422                                        (expand-context/inner-require-lifts
19423                                         the-struct_0)
19424                                        (expand-context/inner-to-module-lifts
19425                                         the-struct_0)
19426                                        (expand-context/inner-requires+provides
19427                                         the-struct_0)
19428                                        (expand-context/inner-observer
19429                                         the-struct_0)
19430                                        (expand-context/inner-for-serializable?
19431                                         the-struct_0)
19432                                        (expand-context/inner-to-correlated-linklet?
19433                                         the-struct_0)
19434                                        (expand-context/inner-normalize-locals?
19435                                         the-struct_0)
19436                                        (expand-context/inner-parsing-expanded?
19437                                         the-struct_0)
19438                                        (expand-context/inner-skip-visit-available?
19439                                         the-struct_0)))))))))
19440                         (raise-argument-error
19441                          'struct-copy
19442                          "expand-context/inner?"
19443                          the-struct_0)))))
19444                (let ((binding-layer28_1 binding-layer28_0)
19445                      (frame-id27_1 frame-id27_0)
19446                      (use-site-scopes26_1 use-site-scopes26_0)
19447                      (post-expansion25_1 post-expansion25_0))
19448                  (expand-context/outer1.1
19449                   inner29_0
19450                   post-expansion25_1
19451                   use-site-scopes26_1
19452                   frame-id27_1
19453                   (expand-context/outer-context ctx_0)
19454                   (expand-context/outer-env ctx_0)
19455                   (expand-context/outer-scopes ctx_0)
19456                   (expand-context/outer-def-ctx-scopes ctx_0)
19457                   binding-layer28_1
19458                   (expand-context/outer-reference-records ctx_0)
19459                   (expand-context/outer-only-immediate? ctx_0)
19460                   (expand-context/outer-need-eventually-defined ctx_0)
19461                   (expand-context/outer-current-introduction-scopes ctx_0)
19462                   (expand-context/outer-current-use-scopes ctx_0)
19463                   (expand-context/outer-name ctx_0))))))))
19464      (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0))))
19465(define default-val.1$1 #f)
19466(define current-expand-context
19467  (lambda ()
19468    (continuation-mark-set-first #f current-expand-context #f root-tag)))
19469(define get-current-expand-context.1
19470  (|#%name|
19471   get-current-expand-context
19472   (lambda (fail-ok?15_0 who17_0)
19473     (begin
19474       (let ((or-part_0 (force (current-expand-context))))
19475         (if or-part_0
19476           or-part_0
19477           (if fail-ok?15_0
19478             #f
19479             (raise-arguments-error who17_0 "not currently expanding"))))))))
19480(define current-expand-observe
19481  (make-parameter
19482   #f
19483   (lambda (v_0)
19484     (begin
19485       (if (let ((or-part_0 (not v_0)))
19486             (if or-part_0
19487               or-part_0
19488               (if (procedure? v_0) (procedure-arity-includes? v_0 2) #f)))
19489         (void)
19490         (raise-argument-error
19491          'current-expand-observe
19492          "(or/c (procedure-arity-includes/c 2) #f)"
19493          v_0))
19494       v_0))
19495   'current-expand-observe))
19496(define as-expression-context
19497  (lambda (ctx_0)
19498    (if (if (eq?
19499             'expression
19500             (begin-unsafe (expand-context/outer-context ctx_0)))
19501          (not (begin-unsafe (expand-context/outer-name ctx_0)))
19502          #f)
19503      ctx_0
19504      (if (expand-context/outer? ctx_0)
19505        (let ((inner40_0 (root-expand-context/outer-inner ctx_0)))
19506          (expand-context/outer1.1
19507           inner40_0
19508           #f
19509           (root-expand-context/outer-use-site-scopes ctx_0)
19510           (root-expand-context/outer-frame-id ctx_0)
19511           'expression
19512           (expand-context/outer-env ctx_0)
19513           (expand-context/outer-scopes ctx_0)
19514           (expand-context/outer-def-ctx-scopes ctx_0)
19515           (expand-context/outer-binding-layer ctx_0)
19516           (expand-context/outer-reference-records ctx_0)
19517           (expand-context/outer-only-immediate? ctx_0)
19518           (expand-context/outer-need-eventually-defined ctx_0)
19519           (expand-context/outer-current-introduction-scopes ctx_0)
19520           (expand-context/outer-current-use-scopes ctx_0)
19521           #f))
19522        (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0)))))
19523(define as-begin-expression-context
19524  (lambda (ctx_0)
19525    (if (not (begin-unsafe (expand-context/outer-name ctx_0)))
19526      ctx_0
19527      (if (expand-context/outer? ctx_0)
19528        (let ((inner42_0 (root-expand-context/outer-inner ctx_0)))
19529          (expand-context/outer1.1
19530           inner42_0
19531           (root-expand-context/outer-post-expansion ctx_0)
19532           (root-expand-context/outer-use-site-scopes ctx_0)
19533           (root-expand-context/outer-frame-id ctx_0)
19534           (expand-context/outer-context ctx_0)
19535           (expand-context/outer-env ctx_0)
19536           (expand-context/outer-scopes ctx_0)
19537           (expand-context/outer-def-ctx-scopes ctx_0)
19538           (expand-context/outer-binding-layer ctx_0)
19539           (expand-context/outer-reference-records ctx_0)
19540           (expand-context/outer-only-immediate? ctx_0)
19541           (expand-context/outer-need-eventually-defined ctx_0)
19542           (expand-context/outer-current-introduction-scopes ctx_0)
19543           (expand-context/outer-current-use-scopes ctx_0)
19544           #f))
19545        (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0)))))
19546(define as-tail-context.1
19547  (|#%name|
19548   as-tail-context
19549   (lambda (wrt19_0 ctx21_0)
19550     (begin
19551       (if (begin-unsafe (expand-context/outer-name wrt19_0))
19552         (if (expand-context/outer? ctx21_0)
19553           (let ((name43_0 (begin-unsafe (expand-context/outer-name wrt19_0))))
19554             (let ((inner44_0 (root-expand-context/outer-inner ctx21_0)))
19555               (expand-context/outer1.1
19556                inner44_0
19557                (root-expand-context/outer-post-expansion ctx21_0)
19558                (root-expand-context/outer-use-site-scopes ctx21_0)
19559                (root-expand-context/outer-frame-id ctx21_0)
19560                (expand-context/outer-context ctx21_0)
19561                (expand-context/outer-env ctx21_0)
19562                (expand-context/outer-scopes ctx21_0)
19563                (expand-context/outer-def-ctx-scopes ctx21_0)
19564                (expand-context/outer-binding-layer ctx21_0)
19565                (expand-context/outer-reference-records ctx21_0)
19566                (expand-context/outer-only-immediate? ctx21_0)
19567                (expand-context/outer-need-eventually-defined ctx21_0)
19568                (expand-context/outer-current-introduction-scopes ctx21_0)
19569                (expand-context/outer-current-use-scopes ctx21_0)
19570                name43_0)))
19571           (raise-argument-error 'struct-copy "expand-context/outer?" ctx21_0))
19572         ctx21_0)))))
19573(define as-named-context
19574  (lambda (ctx_0 ids_0)
19575    (if (if (pair? ids_0) (null? (cdr ids_0)) #f)
19576      (if (expand-context/outer? ctx_0)
19577        (let ((name45_0 (car ids_0)))
19578          (let ((inner46_0 (root-expand-context/outer-inner ctx_0)))
19579            (let ((name45_1 name45_0))
19580              (expand-context/outer1.1
19581               inner46_0
19582               (root-expand-context/outer-post-expansion ctx_0)
19583               (root-expand-context/outer-use-site-scopes ctx_0)
19584               (root-expand-context/outer-frame-id ctx_0)
19585               (expand-context/outer-context ctx_0)
19586               (expand-context/outer-env ctx_0)
19587               (expand-context/outer-scopes ctx_0)
19588               (expand-context/outer-def-ctx-scopes ctx_0)
19589               (expand-context/outer-binding-layer ctx_0)
19590               (expand-context/outer-reference-records ctx_0)
19591               (expand-context/outer-only-immediate? ctx_0)
19592               (expand-context/outer-need-eventually-defined ctx_0)
19593               (expand-context/outer-current-introduction-scopes ctx_0)
19594               (expand-context/outer-current-use-scopes ctx_0)
19595               name45_1))))
19596        (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0))
19597      ctx_0)))
19598(define as-to-parsed-context
19599  (lambda (ctx_0)
19600    (if (expand-context/outer? ctx_0)
19601      (let ((the-struct_0 (root-expand-context/outer-inner ctx_0)))
19602        (let ((inner47_0
19603               (if (expand-context/inner? the-struct_0)
19604                 (expand-context/inner2.1
19605                  (root-expand-context/inner-self-mpi the-struct_0)
19606                  (root-expand-context/inner-module-scopes the-struct_0)
19607                  (root-expand-context/inner-top-level-bind-scope the-struct_0)
19608                  (root-expand-context/inner-all-scopes-stx the-struct_0)
19609                  (root-expand-context/inner-defined-syms the-struct_0)
19610                  (root-expand-context/inner-counter the-struct_0)
19611                  (root-expand-context/inner-lift-key the-struct_0)
19612                  #t
19613                  (expand-context/inner-phase the-struct_0)
19614                  (expand-context/inner-namespace the-struct_0)
19615                  (expand-context/inner-just-once? the-struct_0)
19616                  (expand-context/inner-module-begin-k the-struct_0)
19617                  (expand-context/inner-allow-unbound? the-struct_0)
19618                  (expand-context/inner-in-local-expand? the-struct_0)
19619                  (|expand-context/inner-keep-#%expression?| the-struct_0)
19620                  (expand-context/inner-stops the-struct_0)
19621                  (expand-context/inner-declared-submodule-names the-struct_0)
19622                  (expand-context/inner-lifts the-struct_0)
19623                  (expand-context/inner-lift-envs the-struct_0)
19624                  (expand-context/inner-module-lifts the-struct_0)
19625                  (expand-context/inner-require-lifts the-struct_0)
19626                  (expand-context/inner-to-module-lifts the-struct_0)
19627                  (expand-context/inner-requires+provides the-struct_0)
19628                  #f
19629                  (expand-context/inner-for-serializable? the-struct_0)
19630                  (expand-context/inner-to-correlated-linklet? the-struct_0)
19631                  (expand-context/inner-normalize-locals? the-struct_0)
19632                  #t
19633                  (expand-context/inner-skip-visit-available? the-struct_0))
19634                 (raise-argument-error
19635                  'struct-copy
19636                  "expand-context/inner?"
19637                  the-struct_0))))
19638          (expand-context/outer1.1
19639           inner47_0
19640           (root-expand-context/outer-post-expansion ctx_0)
19641           (root-expand-context/outer-use-site-scopes ctx_0)
19642           (root-expand-context/outer-frame-id ctx_0)
19643           (expand-context/outer-context ctx_0)
19644           (expand-context/outer-env ctx_0)
19645           (expand-context/outer-scopes ctx_0)
19646           (expand-context/outer-def-ctx-scopes ctx_0)
19647           (expand-context/outer-binding-layer ctx_0)
19648           (expand-context/outer-reference-records ctx_0)
19649           (expand-context/outer-only-immediate? ctx_0)
19650           (expand-context/outer-need-eventually-defined ctx_0)
19651           (expand-context/outer-current-introduction-scopes ctx_0)
19652           (expand-context/outer-current-use-scopes ctx_0)
19653           (expand-context/outer-name ctx_0))))
19654      (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0))))
19655(define effect_2553
19656  (begin
19657    (|#%call-with-values|
19658     (lambda ()
19659       (let ((proc_0
19660              (lambda ()
19661                (let ((ctx_0 (force (current-expand-context))))
19662                  (let ((phase-to-ids_0
19663                         (if ctx_0
19664                           (begin-unsafe
19665                            (expand-context/outer-need-eventually-defined
19666                             ctx_0))
19667                           #f)))
19668                    (if phase-to-ids_0
19669                      (hash-ref
19670                       phase-to-ids_0
19671                       (begin-unsafe
19672                        (expand-context/inner-phase
19673                         (root-expand-context/outer-inner ctx_0)))
19674                       null)
19675                      #f))))))
19676         (begin-unsafe (set! current-previously-unbound proc_0))))
19677     print-values)
19678    (void)))
19679(define to-syntax-list.1
19680  (|#%name|
19681   to-syntax-list
19682   (lambda (s_0)
19683     (begin
19684       (if (list? s_0)
19685         s_0
19686         (if (pair? s_0)
19687           (let ((r_0 (to-syntax-list.1 (cdr s_0))))
19688             (if r_0 (cons (car s_0) r_0) #f))
19689           (if (syntax?$1 s_0) (to-syntax-list.1 (syntax-e$1 s_0)) #f)))))))
19690(define syntax-debug-info$1
19691  (|#%name|
19692   syntax-debug-info
19693   (lambda (s_0 phase_0 all-bindings?_0)
19694     (begin
19695       (let ((hts_0
19696              (reverse$1
19697               (let ((lst_0
19698                      (fallback->list (syntax-shifted-multi-scopes s_0))))
19699                 (begin
19700                   (letrec*
19701                    ((for-loop_0
19702                      (|#%name|
19703                       for-loop
19704                       (lambda (fold-var_0 lst_1)
19705                         (begin
19706                           (if (pair? lst_1)
19707                             (let ((smss_0 (unsafe-car lst_1)))
19708                               (let ((rest_0 (unsafe-cdr lst_1)))
19709                                 (let ((fold-var_1
19710                                        (let ((fold-var_1
19711                                               (cons
19712                                                (let ((init-ht_0
19713                                                       (if (identifier? s_0)
19714                                                         (hasheq
19715                                                          'name
19716                                                          (syntax-e$1 s_0))
19717                                                         hash2610)))
19718                                                  (let ((s-scs_0
19719                                                         (scope-set-at-fallback
19720                                                          s_0
19721                                                          smss_0
19722                                                          phase_0)))
19723                                                    (let ((context_0
19724                                                           (scope-set->context
19725                                                            s-scs_0)))
19726                                                      (let ((context-ht_0
19727                                                             (hash-set
19728                                                              init-ht_0
19729                                                              'context
19730                                                              context_0)))
19731                                                        (let ((sym_0
19732                                                               (syntax-e$1
19733                                                                s_0)))
19734                                                          (let ((classify-binding_0
19735                                                                 (|#%name|
19736                                                                  classify-binding
19737                                                                  (lambda (b_0)
19738                                                                    (begin
19739                                                                      (if (local-binding?
19740                                                                           b_0)
19741                                                                        'local
19742                                                                        (if (like-ambiguous-binding?
19743                                                                             b_0)
19744                                                                          'ambiguous
19745                                                                          'module)))))))
19746                                                            (let ((extract-binding_0
19747                                                                   (|#%name|
19748                                                                    extract-binding
19749                                                                    (lambda (b_0)
19750                                                                      (begin
19751                                                                        (if (local-binding?
19752                                                                             b_0)
19753                                                                          (local-binding-key
19754                                                                           b_0)
19755                                                                          (if (like-ambiguous-binding?
19756                                                                               b_0)
19757                                                                            #t
19758                                                                            (let ((app_0
19759                                                                                   (module-binding-sym
19760                                                                                    b_0)))
19761                                                                              (let ((app_1
19762                                                                                     (module-binding-module
19763                                                                                      b_0)))
19764                                                                                (vector
19765                                                                                 app_0
19766                                                                                 app_1
19767                                                                                 (module-binding-phase
19768                                                                                  b_0)))))))))))
19769                                                              (let ((bindings_0
19770                                                                     (let ((app_0
19771                                                                            (if (identifier?
19772                                                                                 s_0)
19773                                                                              (call-with-values
19774                                                                               (lambda ()
19775                                                                                 (begin
19776                                                                                   (letrec*
19777                                                                                    ((for-loop_1
19778                                                                                      (|#%name|
19779                                                                                       for-loop
19780                                                                                       (lambda (bindings_0
19781                                                                                                covered-scope-sets_0
19782                                                                                                i_0)
19783                                                                                         (begin
19784                                                                                           (if i_0
19785                                                                                             (let ((sc_0
19786                                                                                                    (unsafe-immutable-hash-iterate-key
19787                                                                                                     s-scs_0
19788                                                                                                     i_0)))
19789                                                                                               (call-with-values
19790                                                                                                (lambda ()
19791                                                                                                  (call-with-values
19792                                                                                                   (lambda ()
19793                                                                                                     (let ((table_0
19794                                                                                                            (scope-binding-table
19795                                                                                                             sc_0)))
19796                                                                                                       (if (hash?
19797                                                                                                            table_0)
19798                                                                                                         (values
19799                                                                                                          (hash-ref
19800                                                                                                           table_0
19801                                                                                                           sym_0
19802                                                                                                           hash2725)
19803                                                                                                          null)
19804                                                                                                         (values
19805                                                                                                          (hash-ref
19806                                                                                                           (table-with-bulk-bindings-syms
19807                                                                                                            table_0)
19808                                                                                                           sym_0
19809                                                                                                           hash2725)
19810                                                                                                          (table-with-bulk-bindings-bulk-bindings
19811                                                                                                           table_0)))))
19812                                                                                                   (case-lambda
19813                                                                                                    ((ht_0
19814                                                                                                      bulk-bindings_0)
19815                                                                                                     (let ((s_1
19816                                                                                                            s_0))
19817                                                                                                       (let ((extra-shifts_0
19818                                                                                                              null))
19819                                                                                                         (let ((s_2
19820                                                                                                                s_1)
19821                                                                                                               (ht_1
19822                                                                                                                ht_0)
19823                                                                                                               (bulk-bindings_1
19824                                                                                                                bulk-bindings_0))
19825                                                                                                           (begin
19826                                                                                                             #t
19827                                                                                                             (letrec*
19828                                                                                                              ((for-loop_2
19829                                                                                                                (|#%name|
19830                                                                                                                 for-loop
19831                                                                                                                 (lambda (bindings_1
19832                                                                                                                          covered-scope-sets_1
19833                                                                                                                          i_1)
19834                                                                                                                   (begin
19835                                                                                                                     (if (not
19836                                                                                                                          (null?
19837                                                                                                                           i_1))
19838                                                                                                                       (let ((scs_0
19839                                                                                                                              (if (pair?
19840                                                                                                                                   i_1)
19841                                                                                                                                (bulk-binding-at-scopes
19842                                                                                                                                 (car
19843                                                                                                                                  i_1))
19844                                                                                                                                (hash-iterate-key
19845                                                                                                                                 ht_1
19846                                                                                                                                 i_1))))
19847                                                                                                                         (let ((b_0
19848                                                                                                                                (if (pair?
19849                                                                                                                                     i_1)
19850                                                                                                                                  (let ((bulk_0
19851                                                                                                                                         (bulk-binding-at-bulk
19852                                                                                                                                          (car
19853                                                                                                                                           i_1))))
19854                                                                                                                                    (let ((b-info_0
19855                                                                                                                                           (if (symbol-interned?
19856                                                                                                                                                sym_0)
19857                                                                                                                                             (hash-ref
19858                                                                                                                                              (bulk-binding-symbols
19859                                                                                                                                               bulk_0
19860                                                                                                                                               s_2
19861                                                                                                                                               extra-shifts_0)
19862                                                                                                                                              sym_0
19863                                                                                                                                              #f)
19864                                                                                                                                             #f)))
19865                                                                                                                                      (if b-info_0
19866                                                                                                                                        (|#%app|
19867                                                                                                                                         (begin-unsafe
19868                                                                                                                                          (bulk-binding-class-create
19869                                                                                                                                           (bulk-binding-ref
19870                                                                                                                                            bulk_0)))
19871                                                                                                                                         bulk_0
19872                                                                                                                                         b-info_0
19873                                                                                                                                         sym_0)
19874                                                                                                                                        #f)))
19875                                                                                                                                  (hash-iterate-value
19876                                                                                                                                   ht_1
19877                                                                                                                                   i_1))))
19878                                                                                                                           (let ((scs_1
19879                                                                                                                                  scs_0))
19880                                                                                                                             (call-with-values
19881                                                                                                                              (lambda ()
19882                                                                                                                                (if (if scs_1
19883                                                                                                                                      (if b_0
19884                                                                                                                                        (not
19885                                                                                                                                         (begin-unsafe
19886                                                                                                                                          (hash-ref
19887                                                                                                                                           covered-scope-sets_1
19888                                                                                                                                           scs_1
19889                                                                                                                                           #f)))
19890                                                                                                                                        #f)
19891                                                                                                                                      #f)
19892                                                                                                                                  (call-with-values
19893                                                                                                                                   (lambda ()
19894                                                                                                                                     (let ((app_0
19895                                                                                                                                            (cons
19896                                                                                                                                             (let ((app_0
19897                                                                                                                                                    (syntax-e$1
19898                                                                                                                                                     s_0)))
19899                                                                                                                                               (let ((app_1
19900                                                                                                                                                      (scope-set->context
19901                                                                                                                                                       scs_1)))
19902                                                                                                                                                 (let ((app_2
19903                                                                                                                                                        (begin-unsafe
19904                                                                                                                                                         (hash-keys-subset?
19905                                                                                                                                                          scs_1
19906                                                                                                                                                          s-scs_0))))
19907                                                                                                                                                   (let ((app_3
19908                                                                                                                                                          (classify-binding_0
19909                                                                                                                                                           b_0)))
19910                                                                                                                                                     (hasheq
19911                                                                                                                                                      'name
19912                                                                                                                                                      app_0
19913                                                                                                                                                      'context
19914                                                                                                                                                      app_1
19915                                                                                                                                                      'match?
19916                                                                                                                                                      app_2
19917                                                                                                                                                      app_3
19918                                                                                                                                                      (extract-binding_0
19919                                                                                                                                                       b_0))))))
19920                                                                                                                                             bindings_1)))
19921                                                                                                                                       (values
19922                                                                                                                                        app_0
19923                                                                                                                                        (begin-unsafe
19924                                                                                                                                         (hash-set
19925                                                                                                                                          covered-scope-sets_1
19926                                                                                                                                          scs_1
19927                                                                                                                                          #t)))))
19928                                                                                                                                   (case-lambda
19929                                                                                                                                    ((bindings_2
19930                                                                                                                                      covered-scope-sets_2)
19931                                                                                                                                     (values
19932                                                                                                                                      bindings_2
19933                                                                                                                                      covered-scope-sets_2))
19934                                                                                                                                    (args
19935                                                                                                                                     (raise-binding-result-arity-error
19936                                                                                                                                      2
19937                                                                                                                                      args))))
19938                                                                                                                                  (values
19939                                                                                                                                   bindings_1
19940                                                                                                                                   covered-scope-sets_1)))
19941                                                                                                                              (case-lambda
19942                                                                                                                               ((bindings_2
19943                                                                                                                                 covered-scope-sets_2)
19944                                                                                                                                (for-loop_2
19945                                                                                                                                 bindings_2
19946                                                                                                                                 covered-scope-sets_2
19947                                                                                                                                 (if (pair?
19948                                                                                                                                      i_1)
19949                                                                                                                                   (cdr
19950                                                                                                                                    i_1)
19951                                                                                                                                   (let ((or-part_0
19952                                                                                                                                          (hash-iterate-next
19953                                                                                                                                           ht_1
19954                                                                                                                                           i_1)))
19955                                                                                                                                     (if or-part_0
19956                                                                                                                                       or-part_0
19957                                                                                                                                       bulk-bindings_1)))))
19958                                                                                                                               (args
19959                                                                                                                                (raise-binding-result-arity-error
19960                                                                                                                                 2
19961                                                                                                                                 args)))))))
19962                                                                                                                       (values
19963                                                                                                                        bindings_1
19964                                                                                                                        covered-scope-sets_1)))))))
19965                                                                                                              (for-loop_2
19966                                                                                                               bindings_0
19967                                                                                                               covered-scope-sets_0
19968                                                                                                               (let ((or-part_0
19969                                                                                                                      (hash-iterate-first
19970                                                                                                                       ht_1)))
19971                                                                                                                 (if or-part_0
19972                                                                                                                   or-part_0
19973                                                                                                                   bulk-bindings_1)))))))))
19974                                                                                                    (args
19975                                                                                                     (raise-binding-result-arity-error
19976                                                                                                      2
19977                                                                                                      args)))))
19978                                                                                                (case-lambda
19979                                                                                                 ((bindings_1
19980                                                                                                   covered-scope-sets_1)
19981                                                                                                  (for-loop_1
19982                                                                                                   bindings_1
19983                                                                                                   covered-scope-sets_1
19984                                                                                                   (unsafe-immutable-hash-iterate-next
19985                                                                                                    s-scs_0
19986                                                                                                    i_0)))
19987                                                                                                 (args
19988                                                                                                  (raise-binding-result-arity-error
19989                                                                                                   2
19990                                                                                                   args)))))
19991                                                                                             (values
19992                                                                                              bindings_0
19993                                                                                              covered-scope-sets_0)))))))
19994                                                                                    (for-loop_1
19995                                                                                     null
19996                                                                                     (set)
19997                                                                                     (unsafe-immutable-hash-iterate-first
19998                                                                                      s-scs_0)))))
19999                                                                               (case-lambda
20000                                                                                ((bindings_0
20001                                                                                  covered-scopess_0)
20002                                                                                 bindings_0)
20003                                                                                (args
20004                                                                                 (raise-binding-result-arity-error
20005                                                                                  2
20006                                                                                  args))))
20007                                                                              null)))
20008                                                                       (append
20009                                                                        app_0
20010                                                                        (if all-bindings?_0
20011                                                                          (reverse$1
20012                                                                           (begin
20013                                                                             (letrec*
20014                                                                              ((for-loop_1
20015                                                                                (|#%name|
20016                                                                                 for-loop
20017                                                                                 (lambda (fold-var_1
20018                                                                                          i_0)
20019                                                                                   (begin
20020                                                                                     (if i_0
20021                                                                                       (let ((sc_0
20022                                                                                              (unsafe-immutable-hash-iterate-key
20023                                                                                               s-scs_0
20024                                                                                               i_0)))
20025                                                                                         (let ((fold-var_2
20026                                                                                                (let ((sym-ht_0
20027                                                                                                       (let ((table_0
20028                                                                                                              (scope-binding-table
20029                                                                                                               sc_0)))
20030                                                                                                         (if (hash?
20031                                                                                                              table_0)
20032                                                                                                           table_0
20033                                                                                                           (table-with-bulk-bindings-syms
20034                                                                                                            table_0)))))
20035                                                                                                  (begin
20036                                                                                                    #t
20037                                                                                                    (letrec*
20038                                                                                                     ((for-loop_2
20039                                                                                                       (|#%name|
20040                                                                                                        for-loop
20041                                                                                                        (lambda (fold-var_2
20042                                                                                                                 state_0)
20043                                                                                                          (begin
20044                                                                                                            (if (car
20045                                                                                                                 state_0)
20046                                                                                                              (let ((o-sym_0
20047                                                                                                                     (vector-ref
20048                                                                                                                      (car
20049                                                                                                                       state_0)
20050                                                                                                                      1)))
20051                                                                                                                (let ((scs_0
20052                                                                                                                       (let ((app_1
20053                                                                                                                              (vector-ref
20054                                                                                                                               (car
20055                                                                                                                                state_0)
20056                                                                                                                               2)))
20057                                                                                                                         (hash-iterate-key
20058                                                                                                                          app_1
20059                                                                                                                          (cdr
20060                                                                                                                           state_0)))))
20061                                                                                                                  (let ((b_0
20062                                                                                                                         (let ((app_1
20063                                                                                                                                (vector-ref
20064                                                                                                                                 (car
20065                                                                                                                                  state_0)
20066                                                                                                                                 2)))
20067                                                                                                                           (hash-iterate-value
20068                                                                                                                            app_1
20069                                                                                                                            (cdr
20070                                                                                                                             state_0)))))
20071                                                                                                                    (let ((scs_1
20072                                                                                                                           scs_0)
20073                                                                                                                          (o-sym_1
20074                                                                                                                           o-sym_0))
20075                                                                                                                      (let ((fold-var_3
20076                                                                                                                             (if (eq?
20077                                                                                                                                  o-sym_1
20078                                                                                                                                  sym_0)
20079                                                                                                                               fold-var_2
20080                                                                                                                               (let ((fold-var_3
20081                                                                                                                                      (cons
20082                                                                                                                                       (let ((app_1
20083                                                                                                                                              (scope-set->context
20084                                                                                                                                               scs_1)))
20085                                                                                                                                         (let ((app_2
20086                                                                                                                                                (classify-binding_0
20087                                                                                                                                                 b_0)))
20088                                                                                                                                           (hasheq
20089                                                                                                                                            'name
20090                                                                                                                                            o-sym_1
20091                                                                                                                                            'context
20092                                                                                                                                            app_1
20093                                                                                                                                            'match?
20094                                                                                                                                            #f
20095                                                                                                                                            app_2
20096                                                                                                                                            (extract-binding_0
20097                                                                                                                                             b_0))))
20098                                                                                                                                       fold-var_2)))
20099                                                                                                                                 (values
20100                                                                                                                                  fold-var_3)))))
20101                                                                                                                        (for-loop_2
20102                                                                                                                         fold-var_3
20103                                                                                                                         (let ((ht_0
20104                                                                                                                                (vector-ref
20105                                                                                                                                 (car
20106                                                                                                                                  state_0)
20107                                                                                                                                 2)))
20108                                                                                                                           (let ((i_1
20109                                                                                                                                  (hash-iterate-next
20110                                                                                                                                   ht_0
20111                                                                                                                                   (cdr
20112                                                                                                                                    state_0))))
20113                                                                                                                             (if i_1
20114                                                                                                                               (cons
20115                                                                                                                                (car
20116                                                                                                                                 state_0)
20117                                                                                                                                i_1)
20118                                                                                                                               (next-state-in-full-binding-table
20119                                                                                                                                sym-ht_0
20120                                                                                                                                (hash-iterate-next
20121                                                                                                                                 sym-ht_0
20122                                                                                                                                 (vector-ref
20123                                                                                                                                  (car
20124                                                                                                                                   state_0)
20125                                                                                                                                  0))))))))))))
20126                                                                                                              fold-var_2))))))
20127                                                                                                     (for-loop_2
20128                                                                                                      fold-var_1
20129                                                                                                      (letrec*
20130                                                                                                       ((loop_0
20131                                                                                                         (|#%name|
20132                                                                                                          loop
20133                                                                                                          (lambda (sym-i_0)
20134                                                                                                            (begin
20135                                                                                                              (if sym-i_0
20136                                                                                                                (next-state-in-full-binding-table
20137                                                                                                                 sym-ht_0
20138                                                                                                                 sym-i_0)
20139                                                                                                                '(#f
20140                                                                                                                  .
20141                                                                                                                  #f)))))))
20142                                                                                                       (loop_0
20143                                                                                                        (hash-iterate-first
20144                                                                                                         sym-ht_0)))))))))
20145                                                                                           (for-loop_1
20146                                                                                            fold-var_2
20147                                                                                            (unsafe-immutable-hash-iterate-next
20148                                                                                             s-scs_0
20149                                                                                             i_0))))
20150                                                                                       fold-var_1))))))
20151                                                                              (for-loop_1
20152                                                                               null
20153                                                                               (unsafe-immutable-hash-iterate-first
20154                                                                                s-scs_0)))))
20155                                                                          null)))))
20156                                                                (if (null?
20157                                                                     bindings_0)
20158                                                                  context-ht_0
20159                                                                  (hash-set
20160                                                                   context-ht_0
20161                                                                   'bindings
20162                                                                   bindings_0))))))))))
20163                                                fold-var_0)))
20164                                          (values fold-var_1))))
20165                                   (for-loop_0 fold-var_1 rest_0))))
20166                             fold-var_0))))))
20167                    (for-loop_0 null lst_0)))))))
20168         (let ((ht_0 (car hts_0)))
20169           (if (null? (cdr hts_0))
20170             ht_0
20171             (hash-set ht_0 'fallbacks (cdr hts_0)))))))))
20172(define scope-set->context
20173  (lambda (scs_0)
20174    (let ((temp1_0
20175           (reverse$1
20176            (begin
20177              (letrec*
20178               ((for-loop_0
20179                 (|#%name|
20180                  for-loop
20181                  (lambda (fold-var_0 i_0)
20182                    (begin
20183                      (if i_0
20184                        (let ((sc_0
20185                               (unsafe-immutable-hash-iterate-key scs_0 i_0)))
20186                          (let ((fold-var_1
20187                                 (let ((fold-var_1
20188                                        (cons
20189                                         (if (interned-scope? sc_0)
20190                                           (vector
20191                                            (scope-id sc_0)
20192                                            (scope-kind sc_0)
20193                                            (interned-scope-key sc_0))
20194                                           (if (representative-scope? sc_0)
20195                                             (vector
20196                                              (scope-id sc_0)
20197                                              (scope-kind sc_0)
20198                                              (multi-scope-name
20199                                               (representative-scope-owner
20200                                                sc_0)))
20201                                             (vector
20202                                              (scope-id sc_0)
20203                                              (scope-kind sc_0))))
20204                                         fold-var_0)))
20205                                   (values fold-var_1))))
20206                            (for-loop_0
20207                             fold-var_1
20208                             (unsafe-immutable-hash-iterate-next scs_0 i_0))))
20209                        fold-var_0))))))
20210               (for-loop_0
20211                null
20212                (unsafe-immutable-hash-iterate-first scs_0)))))))
20213      (let ((temp3_0 (lambda (v_0) (vector-ref v_0 0))))
20214        (let ((temp1_1 temp1_0)) (sort.1 #f temp3_0 temp1_1 <))))))
20215(define raise-ambiguous-error
20216  (lambda (id_0 ctx_0)
20217    (raise-syntax-error$1
20218     #f
20219     "identifier's binding is ambiguous"
20220     id_0
20221     #f
20222     null
20223     (syntax-debug-info-string id_0 ctx_0))))
20224(define syntax-debug-info-string
20225  (lambda (s_0 ctx_0)
20226    (let ((info_0
20227           (syntax-debug-info$1
20228            s_0
20229            (begin-unsafe
20230             (expand-context/inner-phase
20231              (root-expand-context/outer-inner ctx_0)))
20232            #f)))
20233      (if (not
20234           (let ((or-part_0 (pair? (hash-ref info_0 'bindings null))))
20235             (if or-part_0
20236               or-part_0
20237               (let ((lst_0 (hash-ref info_0 'fallbacks null)))
20238                 (begin
20239                   (letrec*
20240                    ((for-loop_0
20241                      (|#%name|
20242                       for-loop
20243                       (lambda (result_0 lst_1)
20244                         (begin
20245                           (if (pair? lst_1)
20246                             (let ((fb-info_0 (unsafe-car lst_1)))
20247                               (let ((rest_0 (unsafe-cdr lst_1)))
20248                                 (let ((result_1
20249                                        (let ((result_1
20250                                               (pair?
20251                                                (hash-ref
20252                                                 fb-info_0
20253                                                 'bindings
20254                                                 null))))
20255                                          (values result_1))))
20256                                   (if (if (not
20257                                            (let ((x_0 (list fb-info_0)))
20258                                              result_1))
20259                                         #t
20260                                         #f)
20261                                     (for-loop_0 result_1 rest_0)
20262                                     result_1))))
20263                             result_0))))))
20264                    (for-loop_0 #f lst_0)))))))
20265        ""
20266        (let ((relevant-scope-sets_0
20267               (letrec*
20268                ((loop_0
20269                  (|#%name|
20270                   loop
20271                   (lambda (info_1 layer_0)
20272                     (begin
20273                       (let ((app_0
20274                              (let ((app_0 (hash-ref info_1 'context)))
20275                                (cons
20276                                 app_0
20277                                 (reverse$1
20278                                  (let ((lst_0
20279                                         (hash-ref info_1 'bindings null)))
20280                                    (begin
20281                                      (letrec*
20282                                       ((for-loop_0
20283                                         (|#%name|
20284                                          for-loop
20285                                          (lambda (fold-var_0 lst_1)
20286                                            (begin
20287                                              (if (pair? lst_1)
20288                                                (let ((b_0 (unsafe-car lst_1)))
20289                                                  (let ((rest_0
20290                                                         (unsafe-cdr lst_1)))
20291                                                    (let ((fold-var_1
20292                                                           (let ((fold-var_1
20293                                                                  (cons
20294                                                                   (hash-ref
20295                                                                    b_0
20296                                                                    'context)
20297                                                                   fold-var_0)))
20298                                                             (values
20299                                                              fold-var_1))))
20300                                                      (for-loop_0
20301                                                       fold-var_1
20302                                                       rest_0))))
20303                                                fold-var_0))))))
20304                                       (for-loop_0 null lst_0)))))))))
20305                         (apply
20306                          append
20307                          app_0
20308                          (let ((fallbacks_0
20309                                 (hash-ref info_1 'fallbacks null)))
20310                            (reverse$1
20311                             (let ((start_0 (add1 layer_0)))
20312                               (begin
20313                                 (letrec*
20314                                  ((for-loop_0
20315                                    (|#%name|
20316                                     for-loop
20317                                     (lambda (fold-var_0 lst_0 pos_0)
20318                                       (begin
20319                                         (if (if (pair? lst_0) #t #f)
20320                                           (let ((fallback_0
20321                                                  (unsafe-car lst_0)))
20322                                             (let ((rest_0 (unsafe-cdr lst_0)))
20323                                               (let ((fold-var_1
20324                                                      (let ((fold-var_1
20325                                                             (cons
20326                                                              (loop_0
20327                                                               fallback_0
20328                                                               pos_0)
20329                                                              fold-var_0)))
20330                                                        (values fold-var_1))))
20331                                                 (for-loop_0
20332                                                  fold-var_1
20333                                                  rest_0
20334                                                  (+ pos_0 1)))))
20335                                           fold-var_0))))))
20336                                  (for-loop_0
20337                                   null
20338                                   fallbacks_0
20339                                   start_0)))))))))))))
20340                (loop_0 info_0 0))))
20341          (let ((common-scopes_0
20342                 (if (null? relevant-scope-sets_0)
20343                   (set)
20344                   (begin
20345                     (letrec*
20346                      ((for-loop_0
20347                        (|#%name|
20348                         for-loop
20349                         (lambda (s_1 lst_0)
20350                           (begin
20351                             (if (pair? lst_0)
20352                               (let ((l_0 (unsafe-car lst_0)))
20353                                 (let ((rest_0 (unsafe-cdr lst_0)))
20354                                   (let ((s_2
20355                                          (let ((s_2
20356                                                 (set-intersect
20357                                                  s_1
20358                                                  (list->set l_0))))
20359                                            (values s_2))))
20360                                     (for-loop_0 s_2 rest_0))))
20361                               s_1))))))
20362                      (for-loop_0
20363                       (list->set (car relevant-scope-sets_0))
20364                       relevant-scope-sets_0))))))
20365            (let ((app_0
20366                   (letrec*
20367                    ((loop_0
20368                      (|#%name|
20369                       loop
20370                       (lambda (info_1 layer_0)
20371                         (begin
20372                           (let ((app_0 (layer->string layer_0)))
20373                             (let ((app_1
20374                                    (describe-context
20375                                     (hash-ref info_1 'context)
20376                                     common-scopes_0)))
20377                               (let ((app_2
20378                                      (apply
20379                                       string-append
20380                                       (reverse$1
20381                                        (let ((lst_0
20382                                               (let ((temp1_0
20383                                                      (hash-ref
20384                                                       info_1
20385                                                       'bindings
20386                                                       null)))
20387                                                 (let ((temp2_0
20388                                                        (lambda (a_0 b_0)
20389                                                          (if (hash-ref
20390                                                               a_0
20391                                                               'match?
20392                                                               #f)
20393                                                            (not
20394                                                             (hash-ref
20395                                                              b_0
20396                                                              'match?
20397                                                              #f))
20398                                                            #f))))
20399                                                   (let ((temp1_1 temp1_0))
20400                                                     (sort.1
20401                                                      #f
20402                                                      #f
20403                                                      temp1_1
20404                                                      temp2_0))))))
20405                                          (begin
20406                                            (letrec*
20407                                             ((for-loop_0
20408                                               (|#%name|
20409                                                for-loop
20410                                                (lambda (fold-var_0 lst_1)
20411                                                  (begin
20412                                                    (if (pair? lst_1)
20413                                                      (let ((b_0
20414                                                             (unsafe-car
20415                                                              lst_1)))
20416                                                        (let ((rest_0
20417                                                               (unsafe-cdr
20418                                                                lst_1)))
20419                                                          (let ((fold-var_1
20420                                                                 (let ((fold-var_1
20421                                                                        (cons
20422                                                                         (let ((app_2
20423                                                                                (if (hash-ref
20424                                                                                     b_0
20425                                                                                     'match?
20426                                                                                     #f)
20427                                                                                  "matching"
20428                                                                                  "other")))
20429                                                                           (let ((app_3
20430                                                                                  (layer->string
20431                                                                                   layer_0)))
20432                                                                             (let ((app_4
20433                                                                                    (if (hash-ref
20434                                                                                         b_0
20435                                                                                         'local
20436                                                                                         #f)
20437                                                                                      "local"
20438                                                                                      (format
20439                                                                                       "~a"
20440                                                                                       (hash-ref
20441                                                                                        b_0
20442                                                                                        'module
20443                                                                                        #f)))))
20444                                                                               (string-append
20445                                                                                "\n  "
20446                                                                                app_2
20447                                                                                " binding"
20448                                                                                app_3
20449                                                                                "...:"
20450                                                                                "\n   "
20451                                                                                app_4
20452                                                                                (describe-context
20453                                                                                 (hash-ref
20454                                                                                  b_0
20455                                                                                  'context)
20456                                                                                 common-scopes_0)))))
20457                                                                         fold-var_0)))
20458                                                                   (values
20459                                                                    fold-var_1))))
20460                                                            (for-loop_0
20461                                                             fold-var_1
20462                                                             rest_0))))
20463                                                      fold-var_0))))))
20464                                             (for-loop_0 null lst_0))))))))
20465                                 (string-append
20466                                  "\n  context"
20467                                  app_0
20468                                  "...:"
20469                                  app_1
20470                                  app_2
20471                                  (let ((fallbacks_0
20472                                         (hash-ref info_1 'fallbacks null)))
20473                                    (apply
20474                                     string-append
20475                                     (reverse$1
20476                                      (let ((start_0 (add1 layer_0)))
20477                                        (begin
20478                                          (letrec*
20479                                           ((for-loop_0
20480                                             (|#%name|
20481                                              for-loop
20482                                              (lambda (fold-var_0 lst_0 pos_0)
20483                                                (begin
20484                                                  (if (if (pair? lst_0) #t #f)
20485                                                    (let ((fallback_0
20486                                                           (unsafe-car lst_0)))
20487                                                      (let ((rest_0
20488                                                             (unsafe-cdr
20489                                                              lst_0)))
20490                                                        (let ((fold-var_1
20491                                                               (let ((fold-var_1
20492                                                                      (cons
20493                                                                       (loop_0
20494                                                                        fallback_0
20495                                                                        pos_0)
20496                                                                       fold-var_0)))
20497                                                                 (values
20498                                                                  fold-var_1))))
20499                                                          (for-loop_0
20500                                                           fold-var_1
20501                                                           rest_0
20502                                                           (+ pos_0 1)))))
20503                                                    fold-var_0))))))
20504                                           (for-loop_0
20505                                            null
20506                                            fallbacks_0
20507                                            start_0))))))))))))))))
20508                    (loop_0 info_0 0))))
20509              (string-append
20510               app_0
20511               (if (begin-unsafe (zero? (hash-count common-scopes_0)))
20512                 ""
20513                 (string-append
20514                  "\n  common scopes...:"
20515                  (let ((app_1
20516                         (reverse$1
20517                          (let ((lst_0 (hash-ref info_0 'context)))
20518                            (begin
20519                              (letrec*
20520                               ((for-loop_0
20521                                 (|#%name|
20522                                  for-loop
20523                                  (lambda (fold-var_0 lst_1)
20524                                    (begin
20525                                      (if (pair? lst_1)
20526                                        (let ((s_1 (unsafe-car lst_1)))
20527                                          (let ((rest_0 (unsafe-cdr lst_1)))
20528                                            (let ((fold-var_1
20529                                                   (if (begin-unsafe
20530                                                        (hash-ref
20531                                                         common-scopes_0
20532                                                         s_1
20533                                                         #f))
20534                                                     (let ((fold-var_1
20535                                                            (cons
20536                                                             s_1
20537                                                             fold-var_0)))
20538                                                       (values fold-var_1))
20539                                                     fold-var_0)))
20540                                              (for-loop_0 fold-var_1 rest_0))))
20541                                        fold-var_0))))))
20542                               (for-loop_0 null lst_0)))))))
20543                    (describe-context app_1 (set)))))))))))))
20544(define describe-context
20545  (lambda (scopes_0 common-scopes_0)
20546    (let ((strs_0
20547           (letrec*
20548            ((loop_0
20549              (|#%name|
20550               loop
20551               (lambda (strs_0 scopes_1)
20552                 (begin
20553                   (if (null? scopes_1)
20554                     (reverse$1 strs_0)
20555                     (let ((str_0 (format " ~a" (car scopes_1))))
20556                       (if (if (pair? strs_0)
20557                             (<
20558                              (let ((app_0 (string-length str_0)))
20559                                (+ app_0 (string-length (car strs_0))))
20560                              72)
20561                             #f)
20562                         (let ((app_0
20563                                (let ((app_0
20564                                       (string-append (car strs_0) str_0)))
20565                                  (cons app_0 (cdr strs_0)))))
20566                           (loop_0 app_0 (cdr scopes_1)))
20567                         (let ((app_0 (cons str_0 strs_0)))
20568                           (loop_0 app_0 (cdr scopes_1)))))))))))
20569            (loop_0
20570             null
20571             (if (begin-unsafe (zero? (hash-count common-scopes_0)))
20572               scopes_0
20573               (let ((app_0
20574                      (reverse$1
20575                       (begin
20576                         (letrec*
20577                          ((for-loop_0
20578                            (|#%name|
20579                             for-loop
20580                             (lambda (fold-var_0 lst_0)
20581                               (begin
20582                                 (if (pair? lst_0)
20583                                   (let ((s_0 (unsafe-car lst_0)))
20584                                     (let ((rest_0 (unsafe-cdr lst_0)))
20585                                       (let ((fold-var_1
20586                                              (if (not
20587                                                   (begin-unsafe
20588                                                    (hash-ref
20589                                                     common-scopes_0
20590                                                     s_0
20591                                                     #f)))
20592                                                (let ((fold-var_1
20593                                                       (cons s_0 fold-var_0)))
20594                                                  (values fold-var_1))
20595                                                fold-var_0)))
20596                                         (for-loop_0 fold-var_1 rest_0))))
20597                                   fold-var_0))))))
20598                          (for-loop_0 null scopes_0))))))
20599                 (append app_0 (list "[common scopes]"))))))))
20600      (if (null? strs_0)
20601        "\n   [empty]"
20602        (apply
20603         string-append
20604         (reverse$1
20605          (begin
20606            (letrec*
20607             ((for-loop_0
20608               (|#%name|
20609                for-loop
20610                (lambda (fold-var_0 lst_0)
20611                  (begin
20612                    (if (pair? lst_0)
20613                      (let ((str_0 (unsafe-car lst_0)))
20614                        (let ((rest_0 (unsafe-cdr lst_0)))
20615                          (let ((fold-var_1
20616                                 (let ((fold-var_1
20617                                        (cons
20618                                         (string-append "\n  " str_0)
20619                                         fold-var_0)))
20620                                   (values fold-var_1))))
20621                            (for-loop_0 fold-var_1 rest_0))))
20622                      fold-var_0))))))
20623             (for-loop_0 null strs_0)))))))))
20624(define layer->string
20625  (lambda (layer_0) (if (zero? layer_0) "" (format " at layer ~a" layer_0))))
20626(define raise-syntax-implicit-error
20627  (lambda (s_0 sym_0 trigger-id_0 ctx_0)
20628    (let ((phase_0
20629           (begin-unsafe
20630            (expand-context/inner-phase
20631             (root-expand-context/outer-inner ctx_0)))))
20632      (let ((what_0
20633             (if (eq? sym_0 '|#%app|)
20634               "function application"
20635               (if (eq? sym_0 '|#%datum|)
20636                 "literal data"
20637                 (if (eq? sym_0 '|#%top|)
20638                   (if (begin-unsafe
20639                        (expand-context/inner-allow-unbound?
20640                         (root-expand-context/outer-inner ctx_0)))
20641                     "reference to a top-level identifier"
20642                     "reference to an unbound identifier")
20643                   (void))))))
20644        (let ((unbound?_0
20645               (if trigger-id_0
20646                 (not (resolve.1 #f #f null #f trigger-id_0 phase_0))
20647                 #f)))
20648          (let ((unbound-form_0
20649                 (if unbound?_0
20650                   (if (not
20651                        (let ((app_0 (syntax-e$1 s_0)))
20652                          (eq? app_0 (syntax-e$1 trigger-id_0))))
20653                     s_0
20654                     #f)
20655                   #f)))
20656            (let ((app_0
20657                   (let ((app_0
20658                          (if unbound?_0
20659                            "unbound identifier;\n also, no ~a syntax transformer is bound~a"
20660                            (string-append
20661                             what_0
20662                             " is not allowed;\n no ~a syntax transformer is bound~a"))))
20663                     (format
20664                      app_0
20665                      sym_0
20666                      (if (eq? phase_0 0)
20667                        ""
20668                        (if (eq? phase_0 1)
20669                          " in the transformer phase"
20670                          (format " at phase ~a" phase_0)))))))
20671              (let ((app_1
20672                     (if unbound?_0
20673                       (if unbound-form_0 unbound-form_0 trigger-id_0)
20674                       #f)))
20675                (let ((app_2
20676                       (if unbound?_0
20677                         (if unbound-form_0 trigger-id_0 #f)
20678                         s_0)))
20679                  (raise-syntax-error$1
20680                   #f
20681                   app_0
20682                   app_1
20683                   app_2
20684                   null
20685                   (if unbound?_0
20686                     (syntax-debug-info-string trigger-id_0 ctx_0)
20687                     "")))))))))))
20688(define make-check-no-duplicate-table (lambda () hash2610))
20689(define check-no-duplicate-ids.1
20690  (|#%name|
20691   check-no-duplicate-ids
20692   (lambda (what1_0 ids4_0 phase5_0 s6_0 ht3_0)
20693     (begin
20694       (let ((ht_0
20695              (if (eq? ht3_0 unsafe-undefined)
20696                (make-check-no-duplicate-table)
20697                ht3_0)))
20698         (let ((what_0
20699                (if (eq? what1_0 unsafe-undefined) "binding name" what1_0)))
20700           (letrec*
20701            ((loop_0
20702              (|#%name|
20703               loop
20704               (lambda (v_0 ht_1)
20705                 (begin
20706                   (if (identifier? v_0)
20707                     (let ((l_0 (hash-ref ht_1 (syntax-e$1 v_0) null)))
20708                       (begin
20709                         (begin
20710                           (letrec*
20711                            ((for-loop_0
20712                              (|#%name|
20713                               for-loop
20714                               (lambda (lst_0)
20715                                 (begin
20716                                   (if (pair? lst_0)
20717                                     (let ((id_0 (unsafe-car lst_0)))
20718                                       (let ((rest_0 (unsafe-cdr lst_0)))
20719                                         (begin
20720                                           (if (bound-identifier=?$1
20721                                                id_0
20722                                                v_0
20723                                                phase5_0)
20724                                             (raise-syntax-error$1
20725                                              #f
20726                                              (string-append
20727                                               "duplicate "
20728                                               what_0)
20729                                              s6_0
20730                                              v_0)
20731                                             (void))
20732                                           (for-loop_0 rest_0))))
20733                                     (values)))))))
20734                            (for-loop_0 l_0)))
20735                         (void)
20736                         (let ((app_0 (syntax-e$1 v_0)))
20737                           (hash-set ht_1 app_0 (cons v_0 l_0)))))
20738                     (if (pair? v_0)
20739                       (let ((app_0 (cdr v_0)))
20740                         (loop_0 app_0 (loop_0 (car v_0) ht_1)))
20741                       ht_1)))))))
20742            (loop_0 ids4_0 ht_0))))))))
20743(define remove-use-site-scopes
20744  (lambda (s_0 ctx_0)
20745    (let ((use-sites_0
20746           (begin-unsafe (root-expand-context/outer-use-site-scopes ctx_0))))
20747      (if (if use-sites_0 (pair? (unbox use-sites_0)) #f)
20748        (if (syntax?$1 s_0)
20749          (remove-scopes s_0 (unbox use-sites_0))
20750          (reverse$1
20751           (begin
20752             (letrec*
20753              ((for-loop_0
20754                (|#%name|
20755                 for-loop
20756                 (lambda (fold-var_0 lst_0)
20757                   (begin
20758                     (if (pair? lst_0)
20759                       (let ((id_0 (unsafe-car lst_0)))
20760                         (let ((rest_0 (unsafe-cdr lst_0)))
20761                           (let ((fold-var_1
20762                                  (let ((fold-var_1
20763                                         (cons
20764                                          (remove-scopes
20765                                           id_0
20766                                           (unbox use-sites_0))
20767                                          fold-var_0)))
20768                                    (values fold-var_1))))
20769                             (for-loop_0 fold-var_1 rest_0))))
20770                       fold-var_0))))))
20771              (for-loop_0 null s_0)))))
20772        s_0))))
20773(define finish_2958
20774  (make-struct-type-install-properties
20775   '(compile-context)
20776   7
20777   0
20778   #f
20779   (list (cons prop:authentic #t))
20780   (current-inspector)
20781   #f
20782   '(0 1 2 3 4 5 6)
20783   #f
20784   'compile-context))
20785(define struct:compile-context
20786  (make-record-type-descriptor*
20787   'compile-context
20788   #f
20789   (|#%nongenerative-uid| compile-context)
20790   #f
20791   #f
20792   7
20793   0))
20794(define effect_2620 (finish_2958 struct:compile-context))
20795(define compile-context1.1
20796  (|#%name|
20797   compile-context
20798   (record-constructor
20799    (make-record-constructor-descriptor struct:compile-context #f #f))))
20800(define compile-context?
20801  (|#%name| compile-context? (record-predicate struct:compile-context)))
20802(define compile-context-namespace
20803  (|#%name|
20804   compile-context-namespace
20805   (record-accessor struct:compile-context 0)))
20806(define compile-context-phase
20807  (|#%name| compile-context-phase (record-accessor struct:compile-context 1)))
20808(define compile-context-self
20809  (|#%name| compile-context-self (record-accessor struct:compile-context 2)))
20810(define compile-context-module-self
20811  (|#%name|
20812   compile-context-module-self
20813   (record-accessor struct:compile-context 3)))
20814(define compile-context-full-module-name
20815  (|#%name|
20816   compile-context-full-module-name
20817   (record-accessor struct:compile-context 4)))
20818(define compile-context-lazy-syntax-literals?
20819  (|#%name|
20820   compile-context-lazy-syntax-literals?
20821   (record-accessor struct:compile-context 5)))
20822(define compile-context-header
20823  (|#%name| compile-context-header (record-accessor struct:compile-context 6)))
20824(define make-compile-context.1
20825  (|#%name|
20826   make-compile-context
20827   (lambda (full-module-name6_0
20828            lazy-syntax-literals?7_0
20829            module-self5_0
20830            namespace2_0
20831            phase3_0
20832            self4_0)
20833     (begin
20834       (let ((namespace_0
20835              (if (eq? namespace2_0 unsafe-undefined)
20836                (1/current-namespace)
20837                namespace2_0)))
20838         (let ((phase_0
20839                (if (eq? phase3_0 unsafe-undefined)
20840                  (namespace-phase namespace_0)
20841                  phase3_0)))
20842           (let ((self_0
20843                  (if (eq? self4_0 unsafe-undefined)
20844                    (begin-unsafe
20845                     (let ((v_0 (namespace-get-root-expand-ctx namespace_0)))
20846                       (begin-unsafe
20847                        (root-expand-context/inner-self-mpi
20848                         (root-expand-context/outer-inner v_0)))))
20849                    self4_0)))
20850             (let ((lazy-syntax-literals?_0
20851                    (if (eq? lazy-syntax-literals?7_0 unsafe-undefined)
20852                      (if module-self5_0 #t #f)
20853                      lazy-syntax-literals?7_0)))
20854               (begin
20855                 (if (if module-self5_0 (not full-module-name6_0) #f)
20856                   (error
20857                    "internal error: module-self provided without full name")
20858                   (void))
20859                 (compile-context1.1
20860                  namespace_0
20861                  phase_0
20862                  self_0
20863                  module-self5_0
20864                  full-module-name6_0
20865                  lazy-syntax-literals?_0
20866                  #f))))))))))
20867(define kernel (primitive-table '|#%kernel|))
20868(define syntax?$3 (hash-ref kernel 'syntax?))
20869(define syntax-e$4 (hash-ref kernel 'syntax-e))
20870(define datum->syntax$4 (hash-ref kernel 'datum->syntax))
20871(define syntax->datum$4 (hash-ref kernel 'syntax->datum))
20872(define syntax-property$3 (hash-ref kernel 'syntax-property))
20873(define syntax-property-symbol-keys$3
20874  (hash-ref kernel 'syntax-property-symbol-keys))
20875(define syntax-source$3 (hash-ref kernel 'syntax-source))
20876(define syntax-line$3 (hash-ref kernel 'syntax-line))
20877(define syntax-column$3 (hash-ref kernel 'syntax-column))
20878(define syntax-position$3 (hash-ref kernel 'syntax-position))
20879(define syntax-span$3 (hash-ref kernel 'syntax-span))
20880(define correlated?$1
20881  (|#%name| correlated? (lambda (e_0) (begin (|#%app| syntax?$3 e_0)))))
20882(define datum->correlated$1
20883  (let ((datum->correlated_0
20884         (|#%name|
20885          datum->correlated
20886          (lambda (d3_0 srcloc1_0 props2_0)
20887            (begin (|#%app| datum->syntax$4 #f d3_0 srcloc1_0 props2_0))))))
20888    (|#%name|
20889     datum->correlated
20890     (case-lambda
20891      ((d_0) (begin (datum->correlated_0 d_0 #f #f)))
20892      ((d_0 srcloc_0 props2_0) (datum->correlated_0 d_0 srcloc_0 props2_0))
20893      ((d_0 srcloc1_0) (datum->correlated_0 d_0 srcloc1_0 #f))))))
20894(define correlated-e$1
20895  (|#%name| correlated-e (lambda (e_0) (begin (|#%app| syntax-e$4 e_0)))))
20896(define correlated-property$1
20897  (|#%name|
20898   correlated-property
20899   (case-lambda
20900    ((e_0 k_0) (begin (|#%app| syntax-property$3 e_0 k_0)))
20901    ((e_0 k_0 v_0) (|#%app| syntax-property$3 e_0 k_0 v_0)))))
20902(define correlated-property-symbol-keys$1
20903  (|#%name|
20904   correlated-property-symbol-keys
20905   (lambda (e_0) (begin (|#%app| syntax-property-symbol-keys$3 e_0)))))
20906(define correlated-source$1
20907  (|#%name|
20908   correlated-source
20909   (lambda (s_0) (begin (|#%app| syntax-source$3 s_0)))))
20910(define correlated-line$1
20911  (|#%name|
20912   correlated-line
20913   (lambda (s_0) (begin (|#%app| syntax-line$3 s_0)))))
20914(define correlated-column$1
20915  (|#%name|
20916   correlated-column
20917   (lambda (s_0) (begin (|#%app| syntax-column$3 s_0)))))
20918(define correlated-position$1
20919  (|#%name|
20920   correlated-position
20921   (lambda (s_0) (begin (|#%app| syntax-position$3 s_0)))))
20922(define correlated-span$1
20923  (|#%name|
20924   correlated-span
20925   (lambda (s_0) (begin (|#%app| syntax-span$3 s_0)))))
20926(define truncate-path
20927  (lambda (p_0)
20928    (call-with-values
20929     (lambda () (split-path p_0))
20930     (case-lambda
20931      ((base1_0 name1_0 dir?_0)
20932       (if (path-for-some-system? base1_0)
20933         (call-with-values
20934          (lambda () (split-path base1_0))
20935          (case-lambda
20936           ((base2_0 name2_0 dir?_1)
20937            (if (not base2_0)
20938              (path-for-some-system->string p_0)
20939              (if (symbol? name2_0)
20940                (string-append ".../" (path-elem->string name1_0))
20941                (let ((app_0 (path-for-some-system->string name2_0)))
20942                  (string-append
20943                   ".../"
20944                   app_0
20945                   "/"
20946                   (path-elem->string name1_0))))))
20947           (args (raise-binding-result-arity-error 3 args))))
20948         (if (eq? base1_0 'relative)
20949           (path-elem->string name1_0)
20950           (path-for-some-system->string p_0))))
20951      (args (raise-binding-result-arity-error 3 args))))))
20952(define path-elem->string
20953  (lambda (p_0)
20954    (if (eq? p_0 'same)
20955      "."
20956      (if (eq? p_0 'up) ".." (path-for-some-system->string p_0)))))
20957(define path-for-some-system->string
20958  (lambda (p_0)
20959    (if (path? p_0)
20960      (path->string p_0)
20961      (bytes->string/utf-8 (path->bytes p_0) '#\xfffd))))
20962(define make-path->relative-path-elements.1
20963  (|#%name|
20964   make-path->relative-path-elements
20965   (lambda (who1_0 wr-dir3_0)
20966     (begin
20967       (let ((wr-dir_0
20968              (if (eq? wr-dir3_0 unsafe-undefined)
20969                (current-write-relative-directory)
20970                wr-dir3_0)))
20971         (begin
20972           (if who1_0
20973             (if (let ((or-part_0 (not wr-dir_0)))
20974                   (if or-part_0
20975                     or-part_0
20976                     (let ((or-part_1
20977                            (if (path-string? wr-dir_0)
20978                              (complete-path? wr-dir_0)
20979                              #f)))
20980                       (if or-part_1
20981                         or-part_1
20982                         (if (pair? wr-dir_0)
20983                           (if (path-string? (car wr-dir_0))
20984                             (if (complete-path? (car wr-dir_0))
20985                               (if (path-string? (cdr wr-dir_0))
20986                                 (complete-path? (cdr wr-dir_0))
20987                                 #f)
20988                               #f)
20989                             #f)
20990                           #f)))))
20991               (void)
20992               (raise-argument-error
20993                who1_0
20994                (string-append
20995                 "(or/c (and/c path-string? complete-path?)\n"
20996                 "      (cons/c (and/c path-string? complete-path?)\n"
20997                 "              (and/c path-string? complete-path?))\n"
20998                 "      #f)")
20999                wr-dir_0))
21000             (void))
21001           (if (not wr-dir_0)
21002             (lambda (v_0) #f)
21003             (let ((exploded-base-dir_0 'not-ready))
21004               (let ((exploded-wrt-rel-dir_0 'not-ready))
21005                 (lambda (v_0)
21006                   (begin
21007                     (if (if (eq? exploded-base-dir_0 'not-ready)
21008                           (path? v_0)
21009                           #f)
21010                       (let ((wrt-dir_0
21011                              (if wr-dir_0
21012                                (if (pair? wr-dir_0) (car wr-dir_0) wr-dir_0)
21013                                #f)))
21014                         (let ((exploded-wrt-dir_0 (explode-path wrt-dir_0)))
21015                           (let ((base-dir_0
21016                                  (if wr-dir_0
21017                                    (if (pair? wr-dir_0)
21018                                      (cdr wr-dir_0)
21019                                      wr-dir_0)
21020                                    #f)))
21021                             (begin
21022                               (set! exploded-base-dir_0
21023                                 (if base-dir_0 (explode-path base-dir_0) #f))
21024                               (set! exploded-wrt-rel-dir_0
21025                                 (if (eq? base-dir_0 wrt-dir_0)
21026                                   '()
21027                                   (let ((exploded-wrt-dir_1
21028                                          (explode-path wrt-dir_0)))
21029                                     (let ((base-len_0
21030                                            (length exploded-base-dir_0)))
21031                                       (begin
21032                                         (if who1_0
21033                                           (if (if (>=
21034                                                    (length exploded-wrt-dir_1)
21035                                                    base-len_0)
21036                                                 (let ((lst_0
21037                                                        exploded-base-dir_0))
21038                                                   (begin
21039                                                     (letrec*
21040                                                      ((for-loop_0
21041                                                        (|#%name|
21042                                                         for-loop
21043                                                         (lambda (result_0
21044                                                                  lst_1
21045                                                                  lst_2)
21046                                                           (begin
21047                                                             (if (if (pair?
21048                                                                      lst_1)
21049                                                                   (pair?
21050                                                                    lst_2)
21051                                                                   #f)
21052                                                               (let ((a_0
21053                                                                      (unsafe-car
21054                                                                       lst_1)))
21055                                                                 (let ((rest_0
21056                                                                        (unsafe-cdr
21057                                                                         lst_1)))
21058                                                                   (let ((b_0
21059                                                                          (unsafe-car
21060                                                                           lst_2)))
21061                                                                     (let ((rest_1
21062                                                                            (unsafe-cdr
21063                                                                             lst_2)))
21064                                                                       (let ((result_1
21065                                                                              (let ((result_1
21066                                                                                     (equal?
21067                                                                                      a_0
21068                                                                                      b_0)))
21069                                                                                (values
21070                                                                                 result_1))))
21071                                                                         (if (if (not
21072                                                                                  (let ((x_0
21073                                                                                         (list
21074                                                                                          a_0)))
21075                                                                                    (not
21076                                                                                     result_1)))
21077                                                                               (if (not
21078                                                                                    (let ((x_0
21079                                                                                           (list
21080                                                                                            b_0)))
21081                                                                                      (not
21082                                                                                       result_1)))
21083                                                                                 #t
21084                                                                                 #f)
21085                                                                               #f)
21086                                                                           (for-loop_0
21087                                                                            result_1
21088                                                                            rest_0
21089                                                                            rest_1)
21090                                                                           result_1))))))
21091                                                               result_0))))))
21092                                                      (for-loop_0
21093                                                       #t
21094                                                       exploded-wrt-dir_1
21095                                                       lst_0))))
21096                                                 #f)
21097                                             (void)
21098                                             (raise-arguments-error
21099                                              who1_0
21100                                              "relative-directory pair's first path does not extend second path"
21101                                              "first path"
21102                                              wrt-dir_0
21103                                              "second path"
21104                                              base-dir_0))
21105                                           (void))
21106                                         (list-tail
21107                                          exploded-wrt-dir_1
21108                                          base-len_0))))))))))
21109                       (void))
21110                     (if exploded-base-dir_0
21111                       (if (path? v_0)
21112                         (let ((exploded_0 (explode-path v_0)))
21113                           (if (let ((lst_0 exploded-base-dir_0))
21114                                 (begin
21115                                   (letrec*
21116                                    ((for-loop_0
21117                                      (|#%name|
21118                                       for-loop
21119                                       (lambda (result_0 lst_1 lst_2)
21120                                         (begin
21121                                           (if (if (pair? lst_1)
21122                                                 (pair? lst_2)
21123                                                 #f)
21124                                             (let ((base-p_0
21125                                                    (unsafe-car lst_1)))
21126                                               (let ((rest_0
21127                                                      (unsafe-cdr lst_1)))
21128                                                 (let ((p_0
21129                                                        (unsafe-car lst_2)))
21130                                                   (let ((rest_1
21131                                                          (unsafe-cdr lst_2)))
21132                                                     (let ((result_1
21133                                                            (let ((result_1
21134                                                                   (equal?
21135                                                                    base-p_0
21136                                                                    p_0)))
21137                                                              (values
21138                                                               result_1))))
21139                                                       (if (if (not
21140                                                                (let ((x_0
21141                                                                       (list
21142                                                                        base-p_0)))
21143                                                                  (not
21144                                                                   result_1)))
21145                                                             (if (not
21146                                                                  (let ((x_0
21147                                                                         (list
21148                                                                          p_0)))
21149                                                                    (not
21150                                                                     result_1)))
21151                                                               #t
21152                                                               #f)
21153                                                             #f)
21154                                                         (for-loop_0
21155                                                          result_1
21156                                                          rest_0
21157                                                          rest_1)
21158                                                         result_1))))))
21159                                             result_0))))))
21160                                    (for-loop_0 #t lst_0 exploded_0))))
21161                             (if (let ((app_0 (length exploded_0)))
21162                                   (>= app_0 (length exploded-base-dir_0)))
21163                               (letrec*
21164                                ((loop_0
21165                                  (|#%name|
21166                                   loop
21167                                   (lambda (exploded-wrt-rel-dir_1 rel_0)
21168                                     (begin
21169                                       (if (null? exploded-wrt-rel-dir_1)
21170                                         (reverse$1
21171                                          (begin
21172                                            (letrec*
21173                                             ((for-loop_0
21174                                               (|#%name|
21175                                                for-loop
21176                                                (lambda (fold-var_0 lst_0)
21177                                                  (begin
21178                                                    (if (pair? lst_0)
21179                                                      (let ((p_0
21180                                                             (unsafe-car
21181                                                              lst_0)))
21182                                                        (let ((rest_0
21183                                                               (unsafe-cdr
21184                                                                lst_0)))
21185                                                          (let ((fold-var_1
21186                                                                 (let ((fold-var_1
21187                                                                        (cons
21188                                                                         (if (path?
21189                                                                              p_0)
21190                                                                           (path-element->bytes
21191                                                                            p_0)
21192                                                                           p_0)
21193                                                                         fold-var_0)))
21194                                                                   (values
21195                                                                    fold-var_1))))
21196                                                            (for-loop_0
21197                                                             fold-var_1
21198                                                             rest_0))))
21199                                                      fold-var_0))))))
21200                                             (for-loop_0 null rel_0))))
21201                                         (if (if (pair? rel_0)
21202                                               (let ((app_0 (car rel_0)))
21203                                                 (equal?
21204                                                  app_0
21205                                                  (car
21206                                                   exploded-wrt-rel-dir_1)))
21207                                               #f)
21208                                           (let ((app_0
21209                                                  (cdr
21210                                                   exploded-wrt-rel-dir_1)))
21211                                             (loop_0 app_0 (cdr rel_0)))
21212                                           (let ((app_0
21213                                                  (reverse$1
21214                                                   (begin
21215                                                     (letrec*
21216                                                      ((for-loop_0
21217                                                        (|#%name|
21218                                                         for-loop
21219                                                         (lambda (fold-var_0
21220                                                                  lst_0)
21221                                                           (begin
21222                                                             (if (pair? lst_0)
21223                                                               (let ((p_0
21224                                                                      (unsafe-car
21225                                                                       lst_0)))
21226                                                                 (let ((rest_0
21227                                                                        (unsafe-cdr
21228                                                                         lst_0)))
21229                                                                   (let ((fold-var_1
21230                                                                          (cons
21231                                                                           'up
21232                                                                           fold-var_0)))
21233                                                                     (let ((fold-var_2
21234                                                                            (values
21235                                                                             fold-var_1)))
21236                                                                       (for-loop_0
21237                                                                        fold-var_2
21238                                                                        rest_0)))))
21239                                                               fold-var_0))))))
21240                                                      (for-loop_0
21241                                                       null
21242                                                       exploded-wrt-rel-dir_1))))))
21243                                             (append
21244                                              app_0
21245                                              (reverse$1
21246                                               (begin
21247                                                 (letrec*
21248                                                  ((for-loop_0
21249                                                    (|#%name|
21250                                                     for-loop
21251                                                     (lambda (fold-var_0 lst_0)
21252                                                       (begin
21253                                                         (if (pair? lst_0)
21254                                                           (let ((p_0
21255                                                                  (unsafe-car
21256                                                                   lst_0)))
21257                                                             (let ((rest_0
21258                                                                    (unsafe-cdr
21259                                                                     lst_0)))
21260                                                               (let ((fold-var_1
21261                                                                      (let ((fold-var_1
21262                                                                             (cons
21263                                                                              (if (path?
21264                                                                                   p_0)
21265                                                                                (path-element->bytes
21266                                                                                 p_0)
21267                                                                                p_0)
21268                                                                              fold-var_0)))
21269                                                                        (values
21270                                                                         fold-var_1))))
21271                                                                 (for-loop_0
21272                                                                  fold-var_1
21273                                                                  rest_0))))
21274                                                           fold-var_0))))))
21275                                                  (for-loop_0
21276                                                   null
21277                                                   rel_0)))))))))))))
21278                                (let ((app_0 exploded-wrt-rel-dir_0))
21279                                  (loop_0
21280                                   app_0
21281                                   (list-tail
21282                                    exploded_0
21283                                    (length exploded-base-dir_0)))))
21284                               #f)
21285                             #f))
21286                         #f)
21287                       #f))))))))))))
21288(define 1/write-byte
21289  (|#%name|
21290   write-byte
21291   (lambda (byte_0 out_0) (begin (write-byte byte_0 out_0)))))
21292(define 1/write-bytes
21293  (let ((write-bytes_0
21294         (|#%name|
21295          write-bytes
21296          (lambda (bstr3_0 out4_0 start-pos1_0 end-pos2_0)
21297            (begin
21298              (let ((end-pos_0
21299                     (if (eq? end-pos2_0 unsafe-undefined)
21300                       (unsafe-bytes-length bstr3_0)
21301                       end-pos2_0)))
21302                (write-bytes bstr3_0 out4_0 start-pos1_0 end-pos_0)))))))
21303    (|#%name|
21304     write-bytes
21305     (case-lambda
21306      ((bstr_0 out_0) (begin (write-bytes_0 bstr_0 out_0 0 unsafe-undefined)))
21307      ((bstr_0 out_0 start-pos_0 end-pos2_0)
21308       (write-bytes_0 bstr_0 out_0 start-pos_0 end-pos2_0))
21309      ((bstr_0 out_0 start-pos1_0)
21310       (write-bytes_0 bstr_0 out_0 start-pos1_0 unsafe-undefined))))))
21311(define fasl-graph-def-type 1)
21312(define fasl-graph-ref-type 2)
21313(define fasl-false-type 3)
21314(define fasl-true-type 4)
21315(define fasl-null-type 5)
21316(define fasl-void-type 6)
21317(define fasl-eof-type 7)
21318(define fasl-integer-type 8)
21319(define fasl-flonum-type 9)
21320(define fasl-single-flonum-type 10)
21321(define fasl-rational-type 11)
21322(define fasl-complex-type 12)
21323(define fasl-char-type 13)
21324(define fasl-symbol-type 14)
21325(define fasl-unreadable-symbol-type 15)
21326(define fasl-uninterned-symbol-type 16)
21327(define fasl-keyword-type 17)
21328(define fasl-string-type 18)
21329(define fasl-immutable-string-type 19)
21330(define fasl-bytes-type 20)
21331(define fasl-immutable-bytes-type 21)
21332(define fasl-path-type 22)
21333(define fasl-relative-path-type 23)
21334(define fasl-pregexp-type 24)
21335(define fasl-regexp-type 25)
21336(define fasl-byte-pregexp-type 26)
21337(define fasl-byte-regexp-type 27)
21338(define fasl-list-type 28)
21339(define fasl-list*-type 29)
21340(define fasl-pair-type 30)
21341(define fasl-vector-type 31)
21342(define fasl-immutable-vector-type 32)
21343(define fasl-box-type 33)
21344(define fasl-immutable-box-type 34)
21345(define fasl-prefab-type 35)
21346(define fasl-hash-type 36)
21347(define fasl-immutable-hash-type 37)
21348(define fasl-srcloc-type 38)
21349(define fasl-extflonum-type 39)
21350(define fasl-correlated-type 40)
21351(define fasl-undefined-type 41)
21352(define fasl-small-integer-start 100)
21353(define fasl-lowest-small-integer -10)
21354(define fasl-highest-small-integer 144)
21355(define fasl-prefix #vu8(114 97 99 107 101 116 47 102 97 115 108 58))
21356(define fasl-prefix-length (unsafe-bytes-length fasl-prefix))
21357(define fasl-hash-eq-variant 0)
21358(define fasl-hash-equal-variant 1)
21359(define fasl-hash-eqv-variant 2)
21360(define s-exp->fasl.1
21361  (|#%name|
21362   s-exp->fasl
21363   (lambda (external-lift?7_0
21364            handle-fail6_0
21365            keep-mutable?5_0
21366            skip-prefix?8_0
21367            v14_0
21368            orig-o13_0)
21369     (begin
21370       (begin
21371         (if orig-o13_0
21372           (if (output-port? orig-o13_0)
21373             (void)
21374             (raise-argument-error
21375              's-exp->fasl
21376              "(or/c output-port? #f)"
21377              orig-o13_0))
21378           (void))
21379         (begin
21380           (if handle-fail6_0
21381             (if (if (procedure? handle-fail6_0)
21382                   (procedure-arity-includes? handle-fail6_0 1)
21383                   #f)
21384               (void)
21385               (raise-argument-error
21386                's-exp->fasl
21387                "(or/c (procedure-arity-includes/c 1) #f)"
21388                handle-fail6_0))
21389             (void))
21390           (begin
21391             (if external-lift?7_0
21392               (if (if (procedure? external-lift?7_0)
21393                     (procedure-arity-includes? external-lift?7_0 1)
21394                     #f)
21395                 (void)
21396                 (raise-argument-error
21397                  's-exp->fasl
21398                  "(or/c (procedure-arity-includes/c 1) #f)"
21399                  external-lift?7_0))
21400               (void))
21401             (let ((o_0 (if orig-o13_0 orig-o13_0 (open-output-bytes))))
21402               (let ((shared_0 (make-hasheq)))
21403                 (let ((external-lift_0
21404                        (if external-lift?7_0 (make-hasheq) #f)))
21405                   (let ((shared-counter_0 0))
21406                     (begin
21407                       (letrec*
21408                        ((loop_0
21409                          (|#%name|
21410                           loop
21411                           (lambda (v_0)
21412                             (begin
21413                               (if (if external-lift_0
21414                                     (hash-ref external-lift_0 v_0 #f)
21415                                     #f)
21416                                 (void)
21417                                 (if (if external-lift?7_0
21418                                       (|#%app| external-lift?7_0 v_0)
21419                                       #f)
21420                                   (begin
21421                                     (hash-set! external-lift_0 v_0 #t)
21422                                     (set! shared-counter_0
21423                                       (add1 shared-counter_0))
21424                                     (hash-set!
21425                                      shared_0
21426                                      v_0
21427                                      (- shared-counter_0)))
21428                                   (if (let ((or-part_0 (symbol? v_0)))
21429                                         (if or-part_0
21430                                           or-part_0
21431                                           (let ((or-part_1 (keyword? v_0)))
21432                                             (if or-part_1
21433                                               or-part_1
21434                                               (let ((or-part_2 (string? v_0)))
21435                                                 (if or-part_2
21436                                                   or-part_2
21437                                                   (let ((or-part_3
21438                                                          (bytes? v_0)))
21439                                                     (if or-part_3
21440                                                       or-part_3
21441                                                       (path? v_0)))))))))
21442                                     (begin-unsafe
21443                                      (do-hash-update
21444                                       'hash-update!
21445                                       #t
21446                                       hash-set!
21447                                       shared_0
21448                                       v_0
21449                                       add1
21450                                       0))
21451                                     (if (pair? v_0)
21452                                       (begin
21453                                         (loop_0 (car v_0))
21454                                         (loop_0 (cdr v_0)))
21455                                       (if (vector? v_0)
21456                                         (begin
21457                                           (call-with-values
21458                                            (lambda ()
21459                                              (begin
21460                                                (check-vector v_0)
21461                                                (values
21462                                                 v_0
21463                                                 (unsafe-vector-length v_0))))
21464                                            (case-lambda
21465                                             ((vec_0 len_0)
21466                                              (begin
21467                                                #f
21468                                                (letrec*
21469                                                 ((for-loop_0
21470                                                   (|#%name|
21471                                                    for-loop
21472                                                    (lambda (pos_0)
21473                                                      (begin
21474                                                        (if (unsafe-fx<
21475                                                             pos_0
21476                                                             len_0)
21477                                                          (let ((e_0
21478                                                                 (unsafe-vector-ref
21479                                                                  vec_0
21480                                                                  pos_0)))
21481                                                            (begin
21482                                                              (loop_0 e_0)
21483                                                              (for-loop_0
21484                                                               (unsafe-fx+
21485                                                                1
21486                                                                pos_0))))
21487                                                          (values)))))))
21488                                                 (for-loop_0 0))))
21489                                             (args
21490                                              (raise-binding-result-arity-error
21491                                               2
21492                                               args))))
21493                                           (void))
21494                                         (if (hash? v_0)
21495                                           (hash-for-each
21496                                            v_0
21497                                            (lambda (k_0 v_1)
21498                                              (begin
21499                                                (loop_0 k_0)
21500                                                (loop_0 v_1)))
21501                                            #t)
21502                                           (if (box? v_0)
21503                                             (loop_0 (unbox v_0))
21504                                             (let ((c1_0
21505                                                    (prefab-struct-key v_0)))
21506                                               (if c1_0
21507                                                 (begin
21508                                                   (loop_0 c1_0)
21509                                                   (call-with-values
21510                                                    (lambda ()
21511                                                      (unsafe-normalise-inputs
21512                                                       unsafe-vector-length
21513                                                       (struct->vector v_0)
21514                                                       1
21515                                                       #f
21516                                                       1))
21517                                                    (case-lambda
21518                                                     ((v*_0
21519                                                       start*_0
21520                                                       stop*_0
21521                                                       step*_0)
21522                                                      (begin
21523                                                        #t
21524                                                        (letrec*
21525                                                         ((for-loop_0
21526                                                           (|#%name|
21527                                                            for-loop
21528                                                            (lambda (idx_0)
21529                                                              (begin
21530                                                                (if (unsafe-fx<
21531                                                                     idx_0
21532                                                                     stop*_0)
21533                                                                  (let ((e_0
21534                                                                         (unsafe-vector-ref
21535                                                                          v*_0
21536                                                                          idx_0)))
21537                                                                    (begin
21538                                                                      (loop_0
21539                                                                       e_0)
21540                                                                      (for-loop_0
21541                                                                       (unsafe-fx+
21542                                                                        idx_0
21543                                                                        1))))
21544                                                                  (values)))))))
21545                                                         (for-loop_0
21546                                                          start*_0))))
21547                                                     (args
21548                                                      (raise-binding-result-arity-error
21549                                                       4
21550                                                       args))))
21551                                                   (void))
21552                                                 (if (srcloc? v_0)
21553                                                   (loop_0 (srcloc-source v_0))
21554                                                   (if (begin-unsafe
21555                                                        (|#%app|
21556                                                         syntax?$3
21557                                                         v_0))
21558                                                     (begin
21559                                                       (loop_0
21560                                                        (begin-unsafe
21561                                                         (|#%app|
21562                                                          syntax-e$4
21563                                                          v_0)))
21564                                                       (loop_0
21565                                                        (begin-unsafe
21566                                                         (|#%app|
21567                                                          syntax-source$3
21568                                                          v_0)))
21569                                                       (let ((lst_0
21570                                                              (begin-unsafe
21571                                                               (|#%app|
21572                                                                syntax-property-symbol-keys$3
21573                                                                v_0))))
21574                                                         (begin
21575                                                           (letrec*
21576                                                            ((for-loop_0
21577                                                              (|#%name|
21578                                                               for-loop
21579                                                               (lambda (lst_1)
21580                                                                 (begin
21581                                                                   (if (pair?
21582                                                                        lst_1)
21583                                                                     (let ((k_0
21584                                                                            (unsafe-car
21585                                                                             lst_1)))
21586                                                                       (let ((rest_0
21587                                                                              (unsafe-cdr
21588                                                                               lst_1)))
21589                                                                         (begin
21590                                                                           (begin
21591                                                                             (loop_0
21592                                                                              k_0)
21593                                                                             (loop_0
21594                                                                              (begin-unsafe
21595                                                                               (|#%app|
21596                                                                                syntax-property$3
21597                                                                                v_0
21598                                                                                k_0))))
21599                                                                           (for-loop_0
21600                                                                            rest_0))))
21601                                                                     (values)))))))
21602                                                            (for-loop_0
21603                                                             lst_0))))
21604                                                       (void))
21605                                                     (void)))))))))))))))))
21606                        (loop_0 v14_0))
21607                       (let ((treat-immutable?_0
21608                              (|#%name|
21609                               treat-immutable?
21610                               (lambda (v_0)
21611                                 (begin
21612                                   (let ((or-part_0 (not keep-mutable?5_0)))
21613                                     (if or-part_0
21614                                       or-part_0
21615                                       (immutable? v_0))))))))
21616                         (let ((path->relative-path-elements_0
21617                                (make-path->relative-path-elements.1
21618                                 #f
21619                                 unsafe-undefined)))
21620                           (begin
21621                             (if skip-prefix?8_0
21622                               (void)
21623                               (1/write-bytes fasl-prefix o_0))
21624                             (let ((bstr_0
21625                                    (let ((o_1 (open-output-bytes)))
21626                                      (begin
21627                                        (letrec*
21628                                         ((loop_0
21629                                           (|#%name|
21630                                            loop
21631                                            (lambda (v_0)
21632                                              (begin
21633                                                (if (not
21634                                                     (eq?
21635                                                      (hash-ref shared_0 v_0 1)
21636                                                      1))
21637                                                  (let ((c_0
21638                                                         (hash-ref
21639                                                          shared_0
21640                                                          v_0)))
21641                                                    (if (negative? c_0)
21642                                                      (begin
21643                                                        (begin-unsafe
21644                                                         (write-byte 2 o_1))
21645                                                        (write-fasl-integer
21646                                                         (sub1 (- c_0))
21647                                                         o_1))
21648                                                      (let ((pos_0
21649                                                             shared-counter_0))
21650                                                        (begin
21651                                                          (set! shared-counter_0
21652                                                            (add1
21653                                                             shared-counter_0))
21654                                                          (begin-unsafe
21655                                                           (write-byte 1 o_1))
21656                                                          (write-fasl-integer
21657                                                           pos_0
21658                                                           o_1)
21659                                                          (hash-remove!
21660                                                           shared_0
21661                                                           v_0)
21662                                                          (loop_0 v_0)
21663                                                          (hash-set!
21664                                                           shared_0
21665                                                           v_0
21666                                                           (-
21667                                                            (add1 pos_0)))))))
21668                                                  (if (not v_0)
21669                                                    (begin-unsafe
21670                                                     (write-byte 3 o_1))
21671                                                    (if (eq? v_0 #t)
21672                                                      (begin-unsafe
21673                                                       (write-byte 4 o_1))
21674                                                      (if (null? v_0)
21675                                                        (begin-unsafe
21676                                                         (write-byte 5 o_1))
21677                                                        (if (void? v_0)
21678                                                          (begin-unsafe
21679                                                           (write-byte 6 o_1))
21680                                                          (if (eof-object? v_0)
21681                                                            (begin-unsafe
21682                                                             (write-byte
21683                                                              7
21684                                                              o_1))
21685                                                            (if (exact-integer?
21686                                                                 v_0)
21687                                                              (if (<=
21688                                                                   -10
21689                                                                   v_0
21690                                                                   144)
21691                                                                (let ((byte_0
21692                                                                       (+
21693                                                                        100
21694                                                                        (-
21695                                                                         v_0
21696                                                                         -10))))
21697                                                                  (begin-unsafe
21698                                                                   (write-byte
21699                                                                    byte_0
21700                                                                    o_1)))
21701                                                                (begin
21702                                                                  (begin-unsafe
21703                                                                   (write-byte
21704                                                                    8
21705                                                                    o_1))
21706                                                                  (write-fasl-integer
21707                                                                   v_0
21708                                                                   o_1)))
21709                                                              (if (flonum? v_0)
21710                                                                (begin
21711                                                                  (begin-unsafe
21712                                                                   (write-byte
21713                                                                    9
21714                                                                    o_1))
21715                                                                  (1/write-bytes
21716                                                                   (if (eqv?
21717                                                                        v_0
21718                                                                        +nan.0)
21719                                                                     #vu8(0 0 0 0 0 0 248 127)
21720                                                                     (real->floating-point-bytes
21721                                                                      v_0
21722                                                                      8
21723                                                                      #f))
21724                                                                   o_1))
21725                                                                (if (single-flonum?
21726                                                                     v_0)
21727                                                                  (begin
21728                                                                    (begin-unsafe
21729                                                                     (write-byte
21730                                                                      10
21731                                                                      o_1))
21732                                                                    (1/write-bytes
21733                                                                     (if (eqv?
21734                                                                          v_0
21735                                                                          (real->single-flonum
21736                                                                           +nan.0))
21737                                                                       #vu8(0 0 192 127)
21738                                                                       (real->floating-point-bytes
21739                                                                        v_0
21740                                                                        4
21741                                                                        #f))
21742                                                                     o_1))
21743                                                                  (if (extflonum?
21744                                                                       v_0)
21745                                                                    (begin
21746                                                                      (begin-unsafe
21747                                                                       (write-byte
21748                                                                        39
21749                                                                        o_1))
21750                                                                      (let ((bstr_0
21751                                                                             (string->bytes/utf-8
21752                                                                              (format
21753                                                                               "~a"
21754                                                                               v_0))))
21755                                                                        (begin
21756                                                                          (write-fasl-integer
21757                                                                           (unsafe-bytes-length
21758                                                                            bstr_0)
21759                                                                           o_1)
21760                                                                          (1/write-bytes
21761                                                                           bstr_0
21762                                                                           o_1))))
21763                                                                    (if (rational?
21764                                                                         v_0)
21765                                                                      (begin
21766                                                                        (begin-unsafe
21767                                                                         (write-byte
21768                                                                          11
21769                                                                          o_1))
21770                                                                        (loop_0
21771                                                                         (numerator
21772                                                                          v_0))
21773                                                                        (loop_0
21774                                                                         (denominator
21775                                                                          v_0)))
21776                                                                      (if (complex?
21777                                                                           v_0)
21778                                                                        (begin
21779                                                                          (begin-unsafe
21780                                                                           (write-byte
21781                                                                            12
21782                                                                            o_1))
21783                                                                          (loop_0
21784                                                                           (real-part
21785                                                                            v_0))
21786                                                                          (loop_0
21787                                                                           (imag-part
21788                                                                            v_0)))
21789                                                                        (if (char?
21790                                                                             v_0)
21791                                                                          (begin
21792                                                                            (begin-unsafe
21793                                                                             (write-byte
21794                                                                              13
21795                                                                              o_1))
21796                                                                            (write-fasl-integer
21797                                                                             (char->integer
21798                                                                              v_0)
21799                                                                             o_1))
21800                                                                          (if (symbol?
21801                                                                               v_0)
21802                                                                            (begin
21803                                                                              (if (symbol-interned?
21804                                                                                   v_0)
21805                                                                                (begin-unsafe
21806                                                                                 (write-byte
21807                                                                                  14
21808                                                                                  o_1))
21809                                                                                (if (symbol-unreadable?
21810                                                                                     v_0)
21811                                                                                  (begin-unsafe
21812                                                                                   (write-byte
21813                                                                                    15
21814                                                                                    o_1))
21815                                                                                  (begin-unsafe
21816                                                                                   (write-byte
21817                                                                                    16
21818                                                                                    o_1))))
21819                                                                              (let ((bstr_0
21820                                                                                     (string->bytes/utf-8
21821                                                                                      (symbol->string
21822                                                                                       v_0))))
21823                                                                                (begin
21824                                                                                  (write-fasl-integer
21825                                                                                   (unsafe-bytes-length
21826                                                                                    bstr_0)
21827                                                                                   o_1)
21828                                                                                  (1/write-bytes
21829                                                                                   bstr_0
21830                                                                                   o_1))))
21831                                                                            (if (keyword?
21832                                                                                 v_0)
21833                                                                              (begin
21834                                                                                (begin-unsafe
21835                                                                                 (write-byte
21836                                                                                  17
21837                                                                                  o_1))
21838                                                                                (let ((bstr_0
21839                                                                                       (string->bytes/utf-8
21840                                                                                        (keyword->string
21841                                                                                         v_0))))
21842                                                                                  (begin
21843                                                                                    (write-fasl-integer
21844                                                                                     (unsafe-bytes-length
21845                                                                                      bstr_0)
21846                                                                                     o_1)
21847                                                                                    (1/write-bytes
21848                                                                                     bstr_0
21849                                                                                     o_1))))
21850                                                                              (if (string?
21851                                                                                   v_0)
21852                                                                                (begin
21853                                                                                  (write-fasl-integer
21854                                                                                   (if (treat-immutable?_0
21855                                                                                        v_0)
21856                                                                                     19
21857                                                                                     18)
21858                                                                                   o_1)
21859                                                                                  (write-fasl-string
21860                                                                                   v_0
21861                                                                                   o_1))
21862                                                                                (if (bytes?
21863                                                                                     v_0)
21864                                                                                  (begin
21865                                                                                    (write-fasl-integer
21866                                                                                     (if (treat-immutable?_0
21867                                                                                          v_0)
21868                                                                                       21
21869                                                                                       20)
21870                                                                                     o_1)
21871                                                                                    (write-fasl-bytes
21872                                                                                     v_0
21873                                                                                     o_1))
21874                                                                                  (if (path-for-some-system?
21875                                                                                       v_0)
21876                                                                                    (let ((rel-elems_0
21877                                                                                           (|#%app|
21878                                                                                            path->relative-path-elements_0
21879                                                                                            v_0)))
21880                                                                                      (if rel-elems_0
21881                                                                                        (begin
21882                                                                                          (begin-unsafe
21883                                                                                           (write-byte
21884                                                                                            23
21885                                                                                            o_1))
21886                                                                                          (loop_0
21887                                                                                           rel-elems_0))
21888                                                                                        (begin
21889                                                                                          (begin-unsafe
21890                                                                                           (write-byte
21891                                                                                            22
21892                                                                                            o_1))
21893                                                                                          (write-fasl-bytes
21894                                                                                           (path->bytes
21895                                                                                            v_0)
21896                                                                                           o_1)
21897                                                                                          (loop_0
21898                                                                                           (path-convention-type
21899                                                                                            v_0)))))
21900                                                                                    (if (if (srcloc?
21901                                                                                             v_0)
21902                                                                                          (let ((src_0
21903                                                                                                 (srcloc-source
21904                                                                                                  v_0)))
21905                                                                                            (let ((or-part_0
21906                                                                                                   (not
21907                                                                                                    src_0)))
21908                                                                                              (if or-part_0
21909                                                                                                or-part_0
21910                                                                                                (let ((or-part_1
21911                                                                                                       (path-for-some-system?
21912                                                                                                        src_0)))
21913                                                                                                  (if or-part_1
21914                                                                                                    or-part_1
21915                                                                                                    (let ((or-part_2
21916                                                                                                           (string?
21917                                                                                                            src_0)))
21918                                                                                                      (if or-part_2
21919                                                                                                        or-part_2
21920                                                                                                        (let ((or-part_3
21921                                                                                                               (bytes?
21922                                                                                                                src_0)))
21923                                                                                                          (if or-part_3
21924                                                                                                            or-part_3
21925                                                                                                            (symbol?
21926                                                                                                             src_0))))))))))
21927                                                                                          #f)
21928                                                                                      (let ((src_0
21929                                                                                             (srcloc-source
21930                                                                                              v_0)))
21931                                                                                        (let ((new-src_0
21932                                                                                               (if (if (path?
21933                                                                                                        src_0)
21934                                                                                                     (not
21935                                                                                                      (|#%app|
21936                                                                                                       path->relative-path-elements_0
21937                                                                                                       src_0))
21938                                                                                                     #f)
21939                                                                                                 (truncate-path
21940                                                                                                  src_0)
21941                                                                                                 src_0)))
21942                                                                                          (begin
21943                                                                                            (write-fasl-integer
21944                                                                                             38
21945                                                                                             o_1)
21946                                                                                            (loop_0
21947                                                                                             new-src_0)
21948                                                                                            (loop_0
21949                                                                                             (srcloc-line
21950                                                                                              v_0))
21951                                                                                            (loop_0
21952                                                                                             (srcloc-column
21953                                                                                              v_0))
21954                                                                                            (loop_0
21955                                                                                             (srcloc-position
21956                                                                                              v_0))
21957                                                                                            (loop_0
21958                                                                                             (srcloc-span
21959                                                                                              v_0)))))
21960                                                                                      (if (pair?
21961                                                                                           v_0)
21962                                                                                        (if (pair?
21963                                                                                             (cdr
21964                                                                                              v_0))
21965                                                                                          (call-with-values
21966                                                                                           (lambda ()
21967                                                                                             (letrec*
21968                                                                                              ((loop_1
21969                                                                                                (|#%name|
21970                                                                                                 loop
21971                                                                                                 (lambda (v_1
21972                                                                                                          len_0)
21973                                                                                                   (begin
21974                                                                                                     (if (null?
21975                                                                                                          v_1)
21976                                                                                                       (values
21977                                                                                                        len_0
21978                                                                                                        #t)
21979                                                                                                       (if (pair?
21980                                                                                                            v_1)
21981                                                                                                         (let ((app_0
21982                                                                                                                (cdr
21983                                                                                                                 v_1)))
21984                                                                                                           (loop_1
21985                                                                                                            app_0
21986                                                                                                            (add1
21987                                                                                                             len_0)))
21988                                                                                                         (values
21989                                                                                                          len_0
21990                                                                                                          #f))))))))
21991                                                                                              (loop_1
21992                                                                                               v_0
21993                                                                                               0)))
21994                                                                                           (case-lambda
21995                                                                                            ((n_0
21996                                                                                              normal-list?_0)
21997                                                                                             (begin
21998                                                                                               (let ((byte_0
21999                                                                                                      (if normal-list?_0
22000                                                                                                        28
22001                                                                                                        29)))
22002                                                                                                 (begin-unsafe
22003                                                                                                  (write-byte
22004                                                                                                   byte_0
22005                                                                                                   o_1)))
22006                                                                                               (write-fasl-integer
22007                                                                                                n_0
22008                                                                                                o_1)
22009                                                                                               (letrec*
22010                                                                                                ((ploop_0
22011                                                                                                  (|#%name|
22012                                                                                                   ploop
22013                                                                                                   (lambda (v_1)
22014                                                                                                     (begin
22015                                                                                                       (if (pair?
22016                                                                                                            v_1)
22017                                                                                                         (begin
22018                                                                                                           (loop_0
22019                                                                                                            (car
22020                                                                                                             v_1))
22021                                                                                                           (ploop_0
22022                                                                                                            (cdr
22023                                                                                                             v_1)))
22024                                                                                                         (if normal-list?_0
22025                                                                                                           (void)
22026                                                                                                           (loop_0
22027                                                                                                            v_1))))))))
22028                                                                                                (ploop_0
22029                                                                                                 v_0))))
22030                                                                                            (args
22031                                                                                             (raise-binding-result-arity-error
22032                                                                                              2
22033                                                                                              args))))
22034                                                                                          (begin
22035                                                                                            (begin-unsafe
22036                                                                                             (write-byte
22037                                                                                              30
22038                                                                                              o_1))
22039                                                                                            (loop_0
22040                                                                                             (car
22041                                                                                              v_0))
22042                                                                                            (loop_0
22043                                                                                             (cdr
22044                                                                                              v_0))))
22045                                                                                        (if (vector?
22046                                                                                             v_0)
22047                                                                                          (begin
22048                                                                                            (let ((byte_0
22049                                                                                                   (if (treat-immutable?_0
22050                                                                                                        v_0)
22051                                                                                                     32
22052                                                                                                     31)))
22053                                                                                              (begin-unsafe
22054                                                                                               (write-byte
22055                                                                                                byte_0
22056                                                                                                o_1)))
22057                                                                                            (write-fasl-integer
22058                                                                                             (vector-length
22059                                                                                              v_0)
22060                                                                                             o_1)
22061                                                                                            (call-with-values
22062                                                                                             (lambda ()
22063                                                                                               (begin
22064                                                                                                 (check-vector
22065                                                                                                  v_0)
22066                                                                                                 (values
22067                                                                                                  v_0
22068                                                                                                  (unsafe-vector-length
22069                                                                                                   v_0))))
22070                                                                                             (case-lambda
22071                                                                                              ((vec_0
22072                                                                                                len_0)
22073                                                                                               (begin
22074                                                                                                 #f
22075                                                                                                 (letrec*
22076                                                                                                  ((for-loop_0
22077                                                                                                    (|#%name|
22078                                                                                                     for-loop
22079                                                                                                     (lambda (pos_0)
22080                                                                                                       (begin
22081                                                                                                         (if (unsafe-fx<
22082                                                                                                              pos_0
22083                                                                                                              len_0)
22084                                                                                                           (let ((e_0
22085                                                                                                                  (unsafe-vector-ref
22086                                                                                                                   vec_0
22087                                                                                                                   pos_0)))
22088                                                                                                             (begin
22089                                                                                                               (loop_0
22090                                                                                                                e_0)
22091                                                                                                               (for-loop_0
22092                                                                                                                (unsafe-fx+
22093                                                                                                                 1
22094                                                                                                                 pos_0))))
22095                                                                                                           (values)))))))
22096                                                                                                  (for-loop_0
22097                                                                                                   0))))
22098                                                                                              (args
22099                                                                                               (raise-binding-result-arity-error
22100                                                                                                2
22101                                                                                                args))))
22102                                                                                            (void))
22103                                                                                          (if (box?
22104                                                                                               v_0)
22105                                                                                            (begin
22106                                                                                              (let ((byte_0
22107                                                                                                     (if (treat-immutable?_0
22108                                                                                                          v_0)
22109                                                                                                       34
22110                                                                                                       33)))
22111                                                                                                (begin-unsafe
22112                                                                                                 (write-byte
22113                                                                                                  byte_0
22114                                                                                                  o_1)))
22115                                                                                              (loop_0
22116                                                                                               (unbox
22117                                                                                                v_0)))
22118                                                                                            (let ((c2_0
22119                                                                                                   (prefab-struct-key
22120                                                                                                    v_0)))
22121                                                                                              (if c2_0
22122                                                                                                (begin
22123                                                                                                  (begin-unsafe
22124                                                                                                   (write-byte
22125                                                                                                    35
22126                                                                                                    o_1))
22127                                                                                                  (begin
22128                                                                                                    (loop_0
22129                                                                                                     c2_0)
22130                                                                                                    (let ((vec_0
22131                                                                                                           (struct->vector
22132                                                                                                            v_0)))
22133                                                                                                      (begin
22134                                                                                                        (write-fasl-integer
22135                                                                                                         (sub1
22136                                                                                                          (vector-length
22137                                                                                                           vec_0))
22138                                                                                                         o_1)
22139                                                                                                        (call-with-values
22140                                                                                                         (lambda ()
22141                                                                                                           (unsafe-normalise-inputs
22142                                                                                                            unsafe-vector-length
22143                                                                                                            vec_0
22144                                                                                                            1
22145                                                                                                            #f
22146                                                                                                            1))
22147                                                                                                         (case-lambda
22148                                                                                                          ((v*_0
22149                                                                                                            start*_0
22150                                                                                                            stop*_0
22151                                                                                                            step*_0)
22152                                                                                                           (begin
22153                                                                                                             #t
22154                                                                                                             (letrec*
22155                                                                                                              ((for-loop_0
22156                                                                                                                (|#%name|
22157                                                                                                                 for-loop
22158                                                                                                                 (lambda (idx_0)
22159                                                                                                                   (begin
22160                                                                                                                     (if (unsafe-fx<
22161                                                                                                                          idx_0
22162                                                                                                                          stop*_0)
22163                                                                                                                       (let ((e_0
22164                                                                                                                              (unsafe-vector-ref
22165                                                                                                                               v*_0
22166                                                                                                                               idx_0)))
22167                                                                                                                         (begin
22168                                                                                                                           (loop_0
22169                                                                                                                            e_0)
22170                                                                                                                           (for-loop_0
22171                                                                                                                            (unsafe-fx+
22172                                                                                                                             idx_0
22173                                                                                                                             1))))
22174                                                                                                                       (values)))))))
22175                                                                                                              (for-loop_0
22176                                                                                                               start*_0))))
22177                                                                                                          (args
22178                                                                                                           (raise-binding-result-arity-error
22179                                                                                                            4
22180                                                                                                            args))))
22181                                                                                                        (void)))))
22182                                                                                                (if (hash?
22183                                                                                                     v_0)
22184                                                                                                  (begin
22185                                                                                                    (let ((byte_0
22186                                                                                                           (if (treat-immutable?_0
22187                                                                                                                v_0)
22188                                                                                                             37
22189                                                                                                             36)))
22190                                                                                                      (begin-unsafe
22191                                                                                                       (write-byte
22192                                                                                                        byte_0
22193                                                                                                        o_1)))
22194                                                                                                    (let ((byte_0
22195                                                                                                           (if (hash-eq?
22196                                                                                                                v_0)
22197                                                                                                             0
22198                                                                                                             (if (hash-eqv?
22199                                                                                                                  v_0)
22200                                                                                                               2
22201                                                                                                               1))))
22202                                                                                                      (begin-unsafe
22203                                                                                                       (write-byte
22204                                                                                                        byte_0
22205                                                                                                        o_1)))
22206                                                                                                    (write-fasl-integer
22207                                                                                                     (hash-count
22208                                                                                                      v_0)
22209                                                                                                     o_1)
22210                                                                                                    (hash-for-each
22211                                                                                                     v_0
22212                                                                                                     (lambda (k_0
22213                                                                                                              v_1)
22214                                                                                                       (begin
22215                                                                                                         (loop_0
22216                                                                                                          k_0)
22217                                                                                                         (loop_0
22218                                                                                                          v_1)))
22219                                                                                                     #t))
22220                                                                                                  (if (regexp?
22221                                                                                                       v_0)
22222                                                                                                    (begin
22223                                                                                                      (let ((byte_0
22224                                                                                                             (if (pregexp?
22225                                                                                                                  v_0)
22226                                                                                                               24
22227                                                                                                               25)))
22228                                                                                                        (begin-unsafe
22229                                                                                                         (write-byte
22230                                                                                                          byte_0
22231                                                                                                          o_1)))
22232                                                                                                      (write-fasl-string
22233                                                                                                       (object-name
22234                                                                                                        v_0)
22235                                                                                                       o_1))
22236                                                                                                    (if (byte-regexp?
22237                                                                                                         v_0)
22238                                                                                                      (begin
22239                                                                                                        (let ((byte_0
22240                                                                                                               (if (byte-pregexp?
22241                                                                                                                    v_0)
22242                                                                                                                 26
22243                                                                                                                 27)))
22244                                                                                                          (begin-unsafe
22245                                                                                                           (write-byte
22246                                                                                                            byte_0
22247                                                                                                            o_1)))
22248                                                                                                        (write-fasl-bytes
22249                                                                                                         (object-name
22250                                                                                                          v_0)
22251                                                                                                         o_1))
22252                                                                                                      (if (begin-unsafe
22253                                                                                                           (|#%app|
22254                                                                                                            syntax?$3
22255                                                                                                            v_0))
22256                                                                                                        (begin
22257                                                                                                          (begin-unsafe
22258                                                                                                           (write-byte
22259                                                                                                            40
22260                                                                                                            o_1))
22261                                                                                                          (loop_0
22262                                                                                                           (begin-unsafe
22263                                                                                                            (|#%app|
22264                                                                                                             syntax-e$4
22265                                                                                                             v_0)))
22266                                                                                                          (loop_0
22267                                                                                                           (let ((app_0
22268                                                                                                                  (begin-unsafe
22269                                                                                                                   (|#%app|
22270                                                                                                                    syntax-source$3
22271                                                                                                                    v_0))))
22272                                                                                                             (let ((app_1
22273                                                                                                                    (begin-unsafe
22274                                                                                                                     (|#%app|
22275                                                                                                                      syntax-line$3
22276                                                                                                                      v_0))))
22277                                                                                                               (let ((app_2
22278                                                                                                                      (begin-unsafe
22279                                                                                                                       (|#%app|
22280                                                                                                                        syntax-column$3
22281                                                                                                                        v_0))))
22282                                                                                                                 (let ((app_3
22283                                                                                                                        (begin-unsafe
22284                                                                                                                         (|#%app|
22285                                                                                                                          syntax-position$3
22286                                                                                                                          v_0))))
22287                                                                                                                   (unsafe-make-srcloc
22288                                                                                                                    app_0
22289                                                                                                                    app_1
22290                                                                                                                    app_2
22291                                                                                                                    app_3
22292                                                                                                                    (begin-unsafe
22293                                                                                                                     (|#%app|
22294                                                                                                                      syntax-span$3
22295                                                                                                                      v_0))))))))
22296                                                                                                          (loop_0
22297                                                                                                           (reverse$1
22298                                                                                                            (let ((lst_0
22299                                                                                                                   (begin-unsafe
22300                                                                                                                    (|#%app|
22301                                                                                                                     syntax-property-symbol-keys$3
22302                                                                                                                     v_0))))
22303                                                                                                              (begin
22304                                                                                                                (letrec*
22305                                                                                                                 ((for-loop_0
22306                                                                                                                   (|#%name|
22307                                                                                                                    for-loop
22308                                                                                                                    (lambda (fold-var_0
22309                                                                                                                             lst_1)
22310                                                                                                                      (begin
22311                                                                                                                        (if (pair?
22312                                                                                                                             lst_1)
22313                                                                                                                          (let ((k_0
22314                                                                                                                                 (unsafe-car
22315                                                                                                                                  lst_1)))
22316                                                                                                                            (let ((rest_0
22317                                                                                                                                   (unsafe-cdr
22318                                                                                                                                    lst_1)))
22319                                                                                                                              (let ((fold-var_1
22320                                                                                                                                     (let ((fold-var_1
22321                                                                                                                                            (cons
22322                                                                                                                                             (cons
22323                                                                                                                                              k_0
22324                                                                                                                                              (begin-unsafe
22325                                                                                                                                               (|#%app|
22326                                                                                                                                                syntax-property$3
22327                                                                                                                                                v_0
22328                                                                                                                                                k_0)))
22329                                                                                                                                             fold-var_0)))
22330                                                                                                                                       (values
22331                                                                                                                                        fold-var_1))))
22332                                                                                                                                (for-loop_0
22333                                                                                                                                 fold-var_1
22334                                                                                                                                 rest_0))))
22335                                                                                                                          fold-var_0))))))
22336                                                                                                                 (for-loop_0
22337                                                                                                                  null
22338                                                                                                                  lst_0)))))))
22339                                                                                                        (if (eq?
22340                                                                                                             v_0
22341                                                                                                             unsafe-undefined)
22342                                                                                                          (begin-unsafe
22343                                                                                                           (write-byte
22344                                                                                                            41
22345                                                                                                            o_1))
22346                                                                                                          (if handle-fail6_0
22347                                                                                                            (loop_0
22348                                                                                                             (|#%app|
22349                                                                                                              handle-fail6_0
22350                                                                                                              v_0))
22351                                                                                                            (raise-arguments-error
22352                                                                                                             's-exp->fasl
22353                                                                                                             "cannot write value"
22354                                                                                                             "value"
22355                                                                                                             v_0))))))))))))))))))))))))))))))))))))
22356                                         (loop_0 v14_0))
22357                                        (get-output-bytes o_1 #t)))))
22358                               (begin
22359                                 (write-fasl-integer shared-counter_0 o_0)
22360                                 (write-fasl-integer
22361                                  (unsafe-bytes-length bstr_0)
22362                                  o_0)
22363                                 (1/write-bytes bstr_0 o_0)
22364                                 (if orig-o13_0
22365                                   (void)
22366                                   (get-output-bytes o_0)))))))))))))))))))
22367(define fasl->s-exp.1
22368  (|#%name|
22369   fasl->s-exp
22370   (lambda (datum-intern?16_0 external-lifts17_0 skip-prefix?18_0 orig-i22_0)
22371     (begin
22372       (let ((external-lifts_0
22373              (if (eq? external-lifts17_0 unsafe-undefined)
22374                '#()
22375                external-lifts17_0)))
22376         (let ((init-i_0
22377                (if (bytes? orig-i22_0)
22378                  (mcons orig-i22_0 0)
22379                  (if (input-port? orig-i22_0)
22380                    orig-i22_0
22381                    (raise-argument-error
22382                     'fasl->s-exp
22383                     "(or/c bytes? input-port?)"
22384                     orig-i22_0)))))
22385           (begin
22386             (if skip-prefix?18_0
22387               (void)
22388               (if (bytes=?
22389                    (read-bytes/exactly* fasl-prefix-length init-i_0)
22390                    fasl-prefix)
22391                 (void)
22392                 (read-error "unrecognized prefix")))
22393             (let ((shared-count_0 (read-fasl-integer* init-i_0)))
22394               (let ((shared_0 (make-vector shared-count_0)))
22395                 (begin
22396                   (if (if (vector? external-lifts_0)
22397                         (<= (vector-length external-lifts_0) shared-count_0)
22398                         #f)
22399                     (void)
22400                     (error
22401                      'fasl->s-exp
22402                      "external-lift vector does not match expected size"))
22403                   (begin
22404                     (call-with-values
22405                      (lambda ()
22406                        (begin
22407                          (check-vector external-lifts_0)
22408                          (values
22409                           external-lifts_0
22410                           (unsafe-vector-length external-lifts_0))))
22411                      (case-lambda
22412                       ((vec_0 len_0)
22413                        (let ((start_0 0))
22414                          (let ((vec_1 vec_0) (len_1 len_0))
22415                            (begin
22416                              #f
22417                              (void)
22418                              (letrec*
22419                               ((for-loop_0
22420                                 (|#%name|
22421                                  for-loop
22422                                  (lambda (pos_0 pos_1)
22423                                    (begin
22424                                      (if (if (unsafe-fx< pos_0 len_1) #t #f)
22425                                        (let ((v_0
22426                                               (unsafe-vector-ref
22427                                                vec_1
22428                                                pos_0)))
22429                                          (begin
22430                                            (vector-set!
22431                                             shared_0
22432                                             pos_1
22433                                             (vector-ref
22434                                              external-lifts_0
22435                                              pos_1))
22436                                            (for-loop_0
22437                                             (unsafe-fx+ 1 pos_0)
22438                                             (+ pos_1 1))))
22439                                        (values)))))))
22440                               (for-loop_0 0 start_0))))))
22441                       (args (raise-binding-result-arity-error 2 args))))
22442                     (let ((len_0 (read-fasl-integer* init-i_0)))
22443                       (let ((i_0
22444                              (if (mpair? init-i_0)
22445                                init-i_0
22446                                (let ((bstr_0
22447                                       (read-bytes/exactly* len_0 init-i_0)))
22448                                  (mcons bstr_0 0)))))
22449                         (let ((intern_0
22450                                (|#%name|
22451                                 intern
22452                                 (lambda (v_0)
22453                                   (begin
22454                                     (if datum-intern?16_0
22455                                       (datum-intern-literal v_0)
22456                                       v_0))))))
22457                           (letrec*
22458                            ((loop_0
22459                              (|#%name|
22460                               loop
22461                               (lambda ()
22462                                 (begin
22463                                   (let ((type_0 (read-byte/no-eof i_0)))
22464                                     (let ((index_0
22465                                            (if (fixnum? type_0)
22466                                              (if (if (unsafe-fx>= type_0 1)
22467                                                    (unsafe-fx< type_0 42)
22468                                                    #f)
22469                                                (let ((tbl_0
22470                                                       '#(1
22471                                                          2
22472                                                          3
22473                                                          4
22474                                                          5
22475                                                          6
22476                                                          7
22477                                                          8
22478                                                          9
22479                                                          10
22480                                                          12
22481                                                          13
22482                                                          14
22483                                                          15
22484                                                          16
22485                                                          17
22486                                                          18
22487                                                          19
22488                                                          20
22489                                                          21
22490                                                          22
22491                                                          23
22492                                                          24
22493                                                          25
22494                                                          26
22495                                                          27
22496                                                          28
22497                                                          29
22498                                                          31
22499                                                          30
22500                                                          32
22501                                                          32
22502                                                          33
22503                                                          34
22504                                                          35
22505                                                          36
22506                                                          37
22507                                                          38
22508                                                          11
22509                                                          39
22510                                                          40)))
22511                                                  (unsafe-vector*-ref
22512                                                   tbl_0
22513                                                   (unsafe-fx- type_0 1)))
22514                                                0)
22515                                              0)))
22516                                       (if (unsafe-fx< index_0 20)
22517                                         (if (unsafe-fx< index_0 9)
22518                                           (if (unsafe-fx< index_0 4)
22519                                             (if (unsafe-fx< index_0 1)
22520                                               (if (>= type_0 100)
22521                                                 (+ (- type_0 100) -10)
22522                                                 (read-error
22523                                                  "unrecognized fasl tag"
22524                                                  "tag"
22525                                                  type_0))
22526                                               (if (unsafe-fx< index_0 2)
22527                                                 (let ((pos_0
22528                                                        (|#%app|
22529                                                         read-fasl-integer
22530                                                         i_0)))
22531                                                   (let ((v_0 (loop_0)))
22532                                                     (begin
22533                                                       (if (<
22534                                                            pos_0
22535                                                            shared-count_0)
22536                                                         (void)
22537                                                         (read-error
22538                                                          "bad graph index"))
22539                                                       (vector-set!
22540                                                        shared_0
22541                                                        pos_0
22542                                                        v_0)
22543                                                       v_0)))
22544                                                 (if (unsafe-fx< index_0 3)
22545                                                   (let ((pos_0
22546                                                          (|#%app|
22547                                                           read-fasl-integer
22548                                                           i_0)))
22549                                                     (begin
22550                                                       (if (<
22551                                                            pos_0
22552                                                            shared-count_0)
22553                                                         (void)
22554                                                         (read-error
22555                                                          "bad graph index"))
22556                                                       (vector-ref
22557                                                        shared_0
22558                                                        pos_0)))
22559                                                   #f)))
22560                                             (if (unsafe-fx< index_0 6)
22561                                               (if (unsafe-fx< index_0 5)
22562                                                 #t
22563                                                 null)
22564                                               (if (unsafe-fx< index_0 7)
22565                                                 (void)
22566                                                 (if (unsafe-fx< index_0 8)
22567                                                   eof
22568                                                   (intern_0
22569                                                    (|#%app|
22570                                                     read-fasl-integer
22571                                                     i_0))))))
22572                                           (if (unsafe-fx< index_0 14)
22573                                             (if (unsafe-fx< index_0 11)
22574                                               (if (unsafe-fx< index_0 10)
22575                                                 (floating-point-bytes->real
22576                                                  (read-bytes/exactly 8 i_0)
22577                                                  #f)
22578                                                 (real->single-flonum
22579                                                  (floating-point-bytes->real
22580                                                   (read-bytes/exactly 4 i_0)
22581                                                   #f)))
22582                                               (if (unsafe-fx< index_0 12)
22583                                                 (let ((bstr_0
22584                                                        (read-bytes/exactly
22585                                                         (|#%app|
22586                                                          read-fasl-integer
22587                                                          i_0)
22588                                                         i_0)))
22589                                                   (let ((app_0
22590                                                          1/string->number))
22591                                                     (|#%app|
22592                                                      app_0
22593                                                      (bytes->string/utf-8
22594                                                       bstr_0)
22595                                                      10
22596                                                      'read)))
22597                                                 (if (unsafe-fx< index_0 13)
22598                                                   (intern_0
22599                                                    (let ((app_0 (loop_0)))
22600                                                      (/ app_0 (loop_0))))
22601                                                   (intern_0
22602                                                    (let ((app_0 (loop_0)))
22603                                                      (make-rectangular
22604                                                       app_0
22605                                                       (loop_0)))))))
22606                                             (if (unsafe-fx< index_0 16)
22607                                               (if (unsafe-fx< index_0 15)
22608                                                 (intern_0
22609                                                  (integer->char
22610                                                   (|#%app|
22611                                                    read-fasl-integer
22612                                                    i_0)))
22613                                                 (string->symbol
22614                                                  (|#%app|
22615                                                   read-fasl-string
22616                                                   i_0)))
22617                                               (if (unsafe-fx< index_0 17)
22618                                                 (string->unreadable-symbol
22619                                                  (|#%app|
22620                                                   read-fasl-string
22621                                                   i_0))
22622                                                 (if (unsafe-fx< index_0 18)
22623                                                   (string->uninterned-symbol
22624                                                    (|#%app|
22625                                                     read-fasl-string
22626                                                     i_0))
22627                                                   (if (unsafe-fx< index_0 19)
22628                                                     (string->keyword
22629                                                      (|#%app|
22630                                                       read-fasl-string
22631                                                       i_0))
22632                                                     (|#%app|
22633                                                      read-fasl-string
22634                                                      i_0)))))))
22635                                         (if (unsafe-fx< index_0 30)
22636                                           (if (unsafe-fx< index_0 24)
22637                                             (if (unsafe-fx< index_0 21)
22638                                               (intern_0
22639                                                (string->immutable-string
22640                                                 (|#%app|
22641                                                  read-fasl-string
22642                                                  i_0)))
22643                                               (if (unsafe-fx< index_0 22)
22644                                                 (read-fasl-bytes i_0)
22645                                                 (if (unsafe-fx< index_0 23)
22646                                                   (intern_0
22647                                                    (bytes->immutable-bytes
22648                                                     (read-fasl-bytes i_0)))
22649                                                   (let ((app_0
22650                                                          (read-fasl-bytes
22651                                                           i_0)))
22652                                                     (bytes->path
22653                                                      app_0
22654                                                      (loop_0))))))
22655                                             (if (unsafe-fx< index_0 26)
22656                                               (if (unsafe-fx< index_0 25)
22657                                                 (let ((wrt-dir_0
22658                                                        (let ((or-part_0
22659                                                               (current-load-relative-directory)))
22660                                                          (if or-part_0
22661                                                            or-part_0
22662                                                            (current-directory)))))
22663                                                   (let ((rel-elems_0
22664                                                          (reverse$1
22665                                                           (let ((lst_0
22666                                                                  (loop_0)))
22667                                                             (begin
22668                                                               (letrec*
22669                                                                ((for-loop_0
22670                                                                  (|#%name|
22671                                                                   for-loop
22672                                                                   (lambda (fold-var_0
22673                                                                            lst_1)
22674                                                                     (begin
22675                                                                       (if (pair?
22676                                                                            lst_1)
22677                                                                         (let ((p_0
22678                                                                                (unsafe-car
22679                                                                                 lst_1)))
22680                                                                           (let ((rest_0
22681                                                                                  (unsafe-cdr
22682                                                                                   lst_1)))
22683                                                                             (let ((fold-var_1
22684                                                                                    (let ((fold-var_1
22685                                                                                           (cons
22686                                                                                            (if (bytes?
22687                                                                                                 p_0)
22688                                                                                              (bytes->path-element
22689                                                                                               p_0)
22690                                                                                              p_0)
22691                                                                                            fold-var_0)))
22692                                                                                      (values
22693                                                                                       fold-var_1))))
22694                                                                               (for-loop_0
22695                                                                                fold-var_1
22696                                                                                rest_0))))
22697                                                                         fold-var_0))))))
22698                                                                (for-loop_0
22699                                                                 null
22700                                                                 lst_0)))))))
22701                                                     (if wrt-dir_0
22702                                                       (apply
22703                                                        build-path
22704                                                        wrt-dir_0
22705                                                        rel-elems_0)
22706                                                       (if (null? rel-elems_0)
22707                                                         (build-path 'same)
22708                                                         (apply
22709                                                          build-path
22710                                                          rel-elems_0)))))
22711                                                 (intern_0
22712                                                  (pregexp
22713                                                   (|#%app|
22714                                                    read-fasl-string
22715                                                    i_0))))
22716                                               (if (unsafe-fx< index_0 27)
22717                                                 (intern_0
22718                                                  (regexp
22719                                                   (|#%app|
22720                                                    read-fasl-string
22721                                                    i_0)))
22722                                                 (if (unsafe-fx< index_0 28)
22723                                                   (intern_0
22724                                                    (byte-pregexp
22725                                                     (read-fasl-bytes i_0)))
22726                                                   (if (unsafe-fx< index_0 29)
22727                                                     (intern_0
22728                                                      (byte-regexp
22729                                                       (read-fasl-bytes i_0)))
22730                                                     (let ((len_1
22731                                                            (|#%app|
22732                                                             read-fasl-integer
22733                                                             i_0)))
22734                                                       (reverse$1
22735                                                        (begin
22736                                                          (letrec*
22737                                                           ((for-loop_0
22738                                                             (|#%name|
22739                                                              for-loop
22740                                                              (lambda (fold-var_0
22741                                                                       pos_0)
22742                                                                (begin
22743                                                                  (if (<
22744                                                                       pos_0
22745                                                                       len_1)
22746                                                                    (let ((fold-var_1
22747                                                                           (let ((fold-var_1
22748                                                                                  (cons
22749                                                                                   (loop_0)
22750                                                                                   fold-var_0)))
22751                                                                             (values
22752                                                                              fold-var_1))))
22753                                                                      (for-loop_0
22754                                                                       fold-var_1
22755                                                                       (+
22756                                                                        pos_0
22757                                                                        1)))
22758                                                                    fold-var_0))))))
22759                                                           (for-loop_0
22760                                                            null
22761                                                            0))))))))))
22762                                           (if (unsafe-fx< index_0 35)
22763                                             (if (unsafe-fx< index_0 32)
22764                                               (if (unsafe-fx< index_0 31)
22765                                                 (let ((app_0 (loop_0)))
22766                                                   (cons app_0 (loop_0)))
22767                                                 (let ((len_1
22768                                                        (|#%app|
22769                                                         read-fasl-integer
22770                                                         i_0)))
22771                                                   (letrec*
22772                                                    ((ploop_0
22773                                                      (|#%name|
22774                                                       ploop
22775                                                       (lambda (len_2)
22776                                                         (begin
22777                                                           (if (zero? len_2)
22778                                                             (loop_0)
22779                                                             (let ((app_0
22780                                                                    (loop_0)))
22781                                                               (cons
22782                                                                app_0
22783                                                                (ploop_0
22784                                                                 (sub1
22785                                                                  len_2))))))))))
22786                                                    (ploop_0 len_1))))
22787                                               (if (unsafe-fx< index_0 33)
22788                                                 (let ((len_1
22789                                                        (|#%app|
22790                                                         read-fasl-integer
22791                                                         i_0)))
22792                                                   (let ((vec_0
22793                                                          (begin
22794                                                            (if (exact-nonnegative-integer?
22795                                                                 len_1)
22796                                                              (void)
22797                                                              (raise-argument-error
22798                                                               'for/vector
22799                                                               "exact-nonnegative-integer?"
22800                                                               len_1))
22801                                                            (let ((v_0
22802                                                                   (make-vector
22803                                                                    len_1
22804                                                                    0)))
22805                                                              (begin
22806                                                                (if (zero?
22807                                                                     len_1)
22808                                                                  (void)
22809                                                                  (begin
22810                                                                    (letrec*
22811                                                                     ((for-loop_0
22812                                                                       (|#%name|
22813                                                                        for-loop
22814                                                                        (lambda (i_1
22815                                                                                 pos_0)
22816                                                                          (begin
22817                                                                            (if (<
22818                                                                                 pos_0
22819                                                                                 len_1)
22820                                                                              (let ((i_2
22821                                                                                     (let ((i_2
22822                                                                                            (begin
22823                                                                                              (unsafe-vector*-set!
22824                                                                                               v_0
22825                                                                                               i_1
22826                                                                                               (loop_0))
22827                                                                                              (unsafe-fx+
22828                                                                                               1
22829                                                                                               i_1))))
22830                                                                                       (values
22831                                                                                        i_2))))
22832                                                                                (if (if (not
22833                                                                                         (let ((x_0
22834                                                                                                (list
22835                                                                                                 pos_0)))
22836                                                                                           (unsafe-fx=
22837                                                                                            i_2
22838                                                                                            len_1)))
22839                                                                                      #t
22840                                                                                      #f)
22841                                                                                  (for-loop_0
22842                                                                                   i_2
22843                                                                                   (+
22844                                                                                    pos_0
22845                                                                                    1))
22846                                                                                  i_2))
22847                                                                              i_1))))))
22848                                                                     (for-loop_0
22849                                                                      0
22850                                                                      0))))
22851                                                                v_0)))))
22852                                                     (if (eqv? type_0 32)
22853                                                       (vector->immutable-vector
22854                                                        vec_0)
22855                                                       vec_0)))
22856                                                 (if (unsafe-fx< index_0 34)
22857                                                   (box (loop_0))
22858                                                   (box-immutable (loop_0)))))
22859                                             (if (unsafe-fx< index_0 37)
22860                                               (if (unsafe-fx< index_0 36)
22861                                                 (let ((key_0 (loop_0)))
22862                                                   (let ((len_1
22863                                                          (|#%app|
22864                                                           read-fasl-integer
22865                                                           i_0)))
22866                                                     (apply
22867                                                      make-prefab-struct
22868                                                      key_0
22869                                                      (reverse$1
22870                                                       (begin
22871                                                         (letrec*
22872                                                          ((for-loop_0
22873                                                            (|#%name|
22874                                                             for-loop
22875                                                             (lambda (fold-var_0
22876                                                                      pos_0)
22877                                                               (begin
22878                                                                 (if (<
22879                                                                      pos_0
22880                                                                      len_1)
22881                                                                   (let ((fold-var_1
22882                                                                          (let ((fold-var_1
22883                                                                                 (cons
22884                                                                                  (loop_0)
22885                                                                                  fold-var_0)))
22886                                                                            (values
22887                                                                             fold-var_1))))
22888                                                                     (for-loop_0
22889                                                                      fold-var_1
22890                                                                      (+
22891                                                                       pos_0
22892                                                                       1)))
22893                                                                   fold-var_0))))))
22894                                                          (for-loop_0
22895                                                           null
22896                                                           0)))))))
22897                                                 (let ((ht_0
22898                                                        (let ((tmp_0
22899                                                               (read-byte/no-eof
22900                                                                i_0)))
22901                                                          (if (eq? tmp_0 0)
22902                                                            (make-hasheq)
22903                                                            (if (eq? tmp_0 2)
22904                                                              (make-hasheqv)
22905                                                              (make-hash))))))
22906                                                   (let ((len_1
22907                                                          (|#%app|
22908                                                           read-fasl-integer
22909                                                           i_0)))
22910                                                     (begin
22911                                                       (begin
22912                                                         (letrec*
22913                                                          ((for-loop_0
22914                                                            (|#%name|
22915                                                             for-loop
22916                                                             (lambda (pos_0)
22917                                                               (begin
22918                                                                 (if (<
22919                                                                      pos_0
22920                                                                      len_1)
22921                                                                   (begin
22922                                                                     (let ((app_0
22923                                                                            (loop_0)))
22924                                                                       (hash-set!
22925                                                                        ht_0
22926                                                                        app_0
22927                                                                        (loop_0)))
22928                                                                     (for-loop_0
22929                                                                      (+
22930                                                                       pos_0
22931                                                                       1)))
22932                                                                   (values)))))))
22933                                                          (for-loop_0 0)))
22934                                                       (void)
22935                                                       ht_0))))
22936                                               (if (unsafe-fx< index_0 38)
22937                                                 (let ((ht_0
22938                                                        (let ((tmp_0
22939                                                               (read-byte/no-eof
22940                                                                i_0)))
22941                                                          (if (eq? tmp_0 0)
22942                                                            hash2610
22943                                                            (if (eq? tmp_0 2)
22944                                                              hash2589
22945                                                              hash2725)))))
22946                                                   (let ((len_1
22947                                                          (|#%app|
22948                                                           read-fasl-integer
22949                                                           i_0)))
22950                                                     (begin
22951                                                       (letrec*
22952                                                        ((for-loop_0
22953                                                          (|#%name|
22954                                                           for-loop
22955                                                           (lambda (ht_1 pos_0)
22956                                                             (begin
22957                                                               (if (<
22958                                                                    pos_0
22959                                                                    len_1)
22960                                                                 (let ((ht_2
22961                                                                        (let ((ht_2
22962                                                                               (let ((app_0
22963                                                                                      (loop_0)))
22964                                                                                 (hash-set
22965                                                                                  ht_1
22966                                                                                  app_0
22967                                                                                  (loop_0)))))
22968                                                                          (values
22969                                                                           ht_2))))
22970                                                                   (for-loop_0
22971                                                                    ht_2
22972                                                                    (+
22973                                                                     pos_0
22974                                                                     1)))
22975                                                                 ht_1))))))
22976                                                        (for-loop_0 ht_0 0)))))
22977                                                 (if (unsafe-fx< index_0 39)
22978                                                   (let ((app_0 (loop_0)))
22979                                                     (let ((app_1 (loop_0)))
22980                                                       (let ((app_2 (loop_0)))
22981                                                         (let ((app_3
22982                                                                (loop_0)))
22983                                                           (unsafe-make-srcloc
22984                                                            app_0
22985                                                            app_1
22986                                                            app_2
22987                                                            app_3
22988                                                            (loop_0))))))
22989                                                   (if (unsafe-fx< index_0 40)
22990                                                     (let ((e_0 (loop_0)))
22991                                                       (let ((s_0 (loop_0)))
22992                                                         (let ((c_0
22993                                                                (datum->correlated$1
22994                                                                 e_0
22995                                                                 (let ((app_0
22996                                                                        (srcloc-source
22997                                                                         s_0)))
22998                                                                   (let ((app_1
22999                                                                          (srcloc-line
23000                                                                           s_0)))
23001                                                                     (let ((app_2
23002                                                                            (srcloc-column
23003                                                                             s_0)))
23004                                                                       (let ((app_3
23005                                                                              (srcloc-position
23006                                                                               s_0)))
23007                                                                         (vector
23008                                                                          app_0
23009                                                                          app_1
23010                                                                          app_2
23011                                                                          app_3
23012                                                                          (srcloc-span
23013                                                                           s_0)))))))))
23014                                                           (let ((lst_0
23015                                                                  (loop_0)))
23016                                                             (begin
23017                                                               (letrec*
23018                                                                ((for-loop_0
23019                                                                  (|#%name|
23020                                                                   for-loop
23021                                                                   (lambda (c_1
23022                                                                            lst_1)
23023                                                                     (begin
23024                                                                       (if (pair?
23025                                                                            lst_1)
23026                                                                         (let ((p_0
23027                                                                                (unsafe-car
23028                                                                                 lst_1)))
23029                                                                           (let ((rest_0
23030                                                                                  (unsafe-cdr
23031                                                                                   lst_1)))
23032                                                                             (let ((c_2
23033                                                                                    (let ((c_2
23034                                                                                           (let ((k_0
23035                                                                                                  (car
23036                                                                                                   p_0)))
23037                                                                                             (let ((v_0
23038                                                                                                    (cdr
23039                                                                                                     p_0)))
23040                                                                                               (let ((k_1
23041                                                                                                      k_0))
23042                                                                                                 (begin-unsafe
23043                                                                                                  (|#%app|
23044                                                                                                   syntax-property$3
23045                                                                                                   c_1
23046                                                                                                   k_1
23047                                                                                                   v_0)))))))
23048                                                                                      (values
23049                                                                                       c_2))))
23050                                                                               (for-loop_0
23051                                                                                c_2
23052                                                                                rest_0))))
23053                                                                         c_1))))))
23054                                                                (for-loop_0
23055                                                                 c_0
23056                                                                 lst_0)))))))
23057                                                     unsafe-undefined))))))))))))))
23058                            (loop_0))))))))))))))))
23059(define write-fasl-integer
23060  (lambda (i_0 o_0)
23061    (if (<= -124 i_0 127)
23062      (if (negative? i_0)
23063        (let ((byte_0 (+ i_0 256))) (begin-unsafe (write-byte byte_0 o_0)))
23064        (begin-unsafe (write-byte i_0 o_0)))
23065      (if (<= -32768 i_0 32767)
23066        (begin
23067          (begin-unsafe (write-byte 128 o_0))
23068          (1/write-bytes (integer->integer-bytes i_0 2 #t #f) o_0))
23069        (if (<= -2147483648 i_0 2147483647)
23070          (begin
23071            (begin-unsafe (write-byte 129 o_0))
23072            (1/write-bytes (integer->integer-bytes i_0 4 #t #f) o_0))
23073          (if (<= -9223372036854775808 i_0 9223372036854775807)
23074            (begin
23075              (begin-unsafe (write-byte 130 o_0))
23076              (1/write-bytes (integer->integer-bytes i_0 8 #t #f) o_0))
23077            (begin
23078              (begin-unsafe (write-byte 131 o_0))
23079              (let ((s_0 (format "~x" i_0)))
23080                (begin
23081                  (write-fasl-integer (string-length s_0) o_0)
23082                  (write-string s_0 o_0))))))))))
23083(define write-fasl-string
23084  (lambda (v_0 o_0)
23085    (let ((bstr_0 (string->bytes/utf-8 v_0)))
23086      (begin
23087        (write-fasl-integer (unsafe-bytes-length bstr_0) o_0)
23088        (1/write-bytes bstr_0 o_0)))))
23089(define write-fasl-bytes
23090  (lambda (v_0 o_0)
23091    (begin
23092      (write-fasl-integer (unsafe-bytes-length v_0) o_0)
23093      (1/write-bytes v_0 o_0))))
23094(define read-error
23095  (lambda (s_0 . args_0)
23096    (apply
23097     raise-arguments-error
23098     'fasl-read
23099     (string-append "error parsing fasl stream;\n" " " s_0)
23100     args_0)))
23101(define read-byte/no-eof
23102  (lambda (i_0)
23103    (let ((pos_0 (unsafe-mcdr i_0)))
23104      (begin
23105        (if (fx< pos_0 (unsafe-bytes-length (unsafe-mcar i_0)))
23106          (void)
23107          (read-error "truncated stream"))
23108        (unsafe-set-mcdr! i_0 (fx+ pos_0 1))
23109        (unsafe-bytes-ref (unsafe-mcar i_0) pos_0)))))
23110(define read-byte/no-eof*
23111  (lambda (i_0)
23112    (if (mpair? i_0)
23113      (read-byte/no-eof i_0)
23114      (let ((b_0 (read-byte i_0)))
23115        (begin
23116          (if (eof-object? b_0) (read-error "truncated stream") (void))
23117          b_0)))))
23118(define read-bytes/exactly
23119  (lambda (n_0 i_0)
23120    (let ((pos_0 (unsafe-mcdr i_0)))
23121      (begin
23122        (if (let ((app_0 (+ pos_0 n_0)))
23123              (<= app_0 (unsafe-bytes-length (unsafe-mcar i_0))))
23124          (void)
23125          (read-error "truncated stream"))
23126        (unsafe-set-mcdr! i_0 (fx+ pos_0 n_0))
23127        (let ((app_0 (unsafe-mcar i_0)))
23128          (subbytes app_0 pos_0 (fx+ pos_0 n_0)))))))
23129(define read-bytes/exactly*
23130  (lambda (n_0 i_0)
23131    (if (mpair? i_0)
23132      (read-bytes/exactly n_0 i_0)
23133      (let ((bstr_0 (read-bytes n_0 i_0)))
23134        (begin
23135          (if (if (bytes? bstr_0) (= n_0 (unsafe-bytes-length bstr_0)) #f)
23136            (void)
23137            (read-error "truncated stream"))
23138          bstr_0)))))
23139(define read-fasl-integer
23140  (lambda (i_0)
23141    (let ((b_0 (read-byte/no-eof i_0)))
23142      (if (fx<= b_0 127)
23143        b_0
23144        (if (fx>= b_0 132)
23145          (fx- b_0 256)
23146          (if (eqv? b_0 128)
23147            (let ((lo_0 (read-byte/no-eof i_0)))
23148              (let ((hi_0 (read-byte/no-eof i_0)))
23149                (if (fx> hi_0 127)
23150                  (fxior (unsafe-fxlshift (fx+ -256 hi_0) 8) lo_0)
23151                  (fxior (unsafe-fxlshift hi_0 8) lo_0))))
23152            (if (eqv? b_0 129)
23153              (let ((a_0 (read-byte/no-eof i_0)))
23154                (let ((b_1 (read-byte/no-eof i_0)))
23155                  (let ((c_0 (read-byte/no-eof i_0)))
23156                    (let ((d_0 (read-byte/no-eof i_0)))
23157                      (bitwise-ior
23158                       a_0
23159                       (arithmetic-shift
23160                        (if (fx> d_0 127)
23161                          (fxior
23162                           (unsafe-fxlshift (fx+ -256 d_0) 16)
23163                           (unsafe-fxlshift c_0 8)
23164                           b_1)
23165                          (fxior
23166                           (unsafe-fxlshift d_0 16)
23167                           (unsafe-fxlshift c_0 8)
23168                           b_1))
23169                        8))))))
23170              (if (eqv? b_0 130)
23171                (integer-bytes->integer (read-bytes/exactly 8 i_0) #t #f)
23172                (if (eqv? b_0 131)
23173                  (let ((len_0 (|#%app| read-fasl-integer i_0)))
23174                    (let ((str_0 (|#%app| read-fasl-string i_0 len_0)))
23175                      (begin
23176                        (if (if (string? str_0)
23177                              (= len_0 (string-length str_0))
23178                              #f)
23179                          (void)
23180                          (read-error "truncated stream at number"))
23181                        (|#%app| 1/string->number str_0 16))))
23182                  (read-error "internal error on integer mode"))))))))))
23183(define read-fasl-integer*
23184  (lambda (i_0)
23185    (let ((b_0 (read-byte/no-eof* i_0)))
23186      (if (fx<= b_0 127)
23187        b_0
23188        (if (fx>= b_0 132)
23189          (fx- b_0 256)
23190          (if (eqv? b_0 128)
23191            (let ((lo_0 (read-byte/no-eof* i_0)))
23192              (let ((hi_0 (read-byte/no-eof* i_0)))
23193                (if (fx> hi_0 127)
23194                  (fxior (unsafe-fxlshift (fx+ -256 hi_0) 8) lo_0)
23195                  (fxior (unsafe-fxlshift hi_0 8) lo_0))))
23196            (if (eqv? b_0 129)
23197              (let ((a_0 (read-byte/no-eof* i_0)))
23198                (let ((b_1 (read-byte/no-eof* i_0)))
23199                  (let ((c_0 (read-byte/no-eof* i_0)))
23200                    (let ((d_0 (read-byte/no-eof* i_0)))
23201                      (bitwise-ior
23202                       a_0
23203                       (arithmetic-shift
23204                        (if (fx> d_0 127)
23205                          (fxior
23206                           (unsafe-fxlshift (fx+ -256 d_0) 16)
23207                           (unsafe-fxlshift c_0 8)
23208                           b_1)
23209                          (fxior
23210                           (unsafe-fxlshift d_0 16)
23211                           (unsafe-fxlshift c_0 8)
23212                           b_1))
23213                        8))))))
23214              (if (eqv? b_0 130)
23215                (integer-bytes->integer (read-bytes/exactly* 8 i_0) #t #f)
23216                (if (eqv? b_0 131)
23217                  (let ((len_0 (|#%app| read-fasl-integer i_0)))
23218                    (let ((str_0 (|#%app| read-fasl-string i_0 len_0)))
23219                      (begin
23220                        (if (if (string? str_0)
23221                              (= len_0 (string-length str_0))
23222                              #f)
23223                          (void)
23224                          (read-error "truncated stream at number"))
23225                        (|#%app| 1/string->number str_0 16))))
23226                  (read-error "internal error on integer mode"))))))))))
23227(define read-fasl-string
23228  (let ((read-fasl-string_0
23229         (|#%name|
23230          read-fasl-string
23231          (lambda (i25_0 len24_0)
23232            (begin
23233              (let ((len_0
23234                     (if (eq? len24_0 unsafe-undefined)
23235                       (|#%app| read-fasl-integer i25_0)
23236                       len24_0)))
23237                (let ((pos_0 (unsafe-mcdr i25_0)))
23238                  (let ((bstr_0 (unsafe-mcar i25_0)))
23239                    (if (<= (+ pos_0 len_0) (unsafe-bytes-length bstr_0))
23240                      (begin
23241                        (unsafe-set-mcdr! i25_0 (fx+ pos_0 len_0))
23242                        (let ((s_0 (make-string len_0)))
23243                          (letrec*
23244                           ((loop_0
23245                             (|#%name|
23246                              loop
23247                              (lambda (i_0)
23248                                (begin
23249                                  (if (fx= i_0 len_0)
23250                                    s_0
23251                                    (let ((c_0
23252                                           (unsafe-bytes-ref
23253                                            bstr_0
23254                                            (fx+ i_0 pos_0))))
23255                                      (if (fx<= c_0 128)
23256                                        (begin
23257                                          (string-set!
23258                                           s_0
23259                                           i_0
23260                                           (integer->char c_0))
23261                                          (loop_0 (fx+ i_0 1)))
23262                                        (bytes->string/utf-8
23263                                         bstr_0
23264                                         #f
23265                                         pos_0
23266                                         (fx+ pos_0 len_0))))))))))
23267                           (loop_0 0))))
23268                      (let ((bstr_1 (read-bytes/exactly len_0 i25_0)))
23269                        (bytes->string/utf-8 bstr_1)))))))))))
23270    (case-lambda
23271     ((i_0) (read-fasl-string_0 i_0 unsafe-undefined))
23272     ((i_0 len24_0) (read-fasl-string_0 i_0 len24_0)))))
23273(define read-fasl-bytes
23274  (lambda (i_0)
23275    (let ((len_0 (|#%app| read-fasl-integer i_0)))
23276      (read-bytes/exactly len_0 i_0))))
23277(define finish_2322
23278  (make-struct-type-install-properties
23279   '(mpi-intern-table)
23280   2
23281   0
23282   #f
23283   null
23284   (current-inspector)
23285   #f
23286   '(0 1)
23287   #f
23288   'mpi-intern-table))
23289(define struct:mpi-intern-table
23290  (make-record-type-descriptor*
23291   'mpi-intern-table
23292   #f
23293   (|#%nongenerative-uid| mpi-intern-table)
23294   #f
23295   #f
23296   2
23297   0))
23298(define effect_2611 (finish_2322 struct:mpi-intern-table))
23299(define mpi-intern-table1.1
23300  (|#%name|
23301   mpi-intern-table
23302   (record-constructor
23303    (make-record-constructor-descriptor struct:mpi-intern-table #f #f))))
23304(define mpi-intern-table?_2949
23305  (|#%name| mpi-intern-table? (record-predicate struct:mpi-intern-table)))
23306(define mpi-intern-table?
23307  (|#%name|
23308   mpi-intern-table?
23309   (lambda (v)
23310     (if (mpi-intern-table?_2949 v)
23311       #t
23312       ($value
23313        (if (impersonator? v)
23314          (mpi-intern-table?_2949 (impersonator-val v))
23315          #f))))))
23316(define mpi-intern-table-normal_2774
23317  (|#%name|
23318   mpi-intern-table-normal
23319   (record-accessor struct:mpi-intern-table 0)))
23320(define mpi-intern-table-normal
23321  (|#%name|
23322   mpi-intern-table-normal
23323   (lambda (s)
23324     (if (mpi-intern-table?_2949 s)
23325       (mpi-intern-table-normal_2774 s)
23326       ($value
23327        (impersonate-ref
23328         mpi-intern-table-normal_2774
23329         struct:mpi-intern-table
23330         0
23331         s
23332         'mpi-intern-table
23333         'normal))))))
23334(define mpi-intern-table-fast_2301
23335  (|#%name| mpi-intern-table-fast (record-accessor struct:mpi-intern-table 1)))
23336(define mpi-intern-table-fast
23337  (|#%name|
23338   mpi-intern-table-fast
23339   (lambda (s)
23340     (if (mpi-intern-table?_2949 s)
23341       (mpi-intern-table-fast_2301 s)
23342       ($value
23343        (impersonate-ref
23344         mpi-intern-table-fast_2301
23345         struct:mpi-intern-table
23346         1
23347         s
23348         'mpi-intern-table
23349         'fast))))))
23350(define make-module-path-index-intern-table
23351  (lambda ()
23352    (let ((app_0 (make-hash))) (mpi-intern-table1.1 app_0 (make-hasheq)))))
23353(define intern-module-path-index!
23354  (lambda (t_0 mpi_0)
23355    (let ((or-part_0 (hash-ref (mpi-intern-table-fast t_0) mpi_0 #f)))
23356      (if or-part_0
23357        or-part_0
23358        (call-with-values
23359         (lambda () (1/module-path-index-split mpi_0))
23360         (case-lambda
23361          ((name_0 base_0)
23362           (if (not name_0)
23363             (begin (hash-set! (mpi-intern-table-fast t_0) mpi_0 mpi_0) mpi_0)
23364             (let ((interned-base_0
23365                    (if base_0 (intern-module-path-index! t_0 base_0) #f)))
23366               (let ((at-name_0
23367                      (let ((or-part_1
23368                             (hash-ref
23369                              (mpi-intern-table-normal t_0)
23370                              name_0
23371                              #f)))
23372                        (if or-part_1
23373                          or-part_1
23374                          (let ((at-name_0 (make-hasheq)))
23375                            (begin
23376                              (hash-set!
23377                               (mpi-intern-table-normal t_0)
23378                               name_0
23379                               at-name_0)
23380                              at-name_0))))))
23381                 (let ((i-mpi_0
23382                        (let ((or-part_1
23383                               (hash-ref at-name_0 interned-base_0 #f)))
23384                          (if or-part_1
23385                            or-part_1
23386                            (let ((mpi_1
23387                                   (if (eq? base_0 interned-base_0)
23388                                     mpi_0
23389                                     (if (1/module-path-index? mpi_0)
23390                                       (let ((app_0
23391                                              (module-path-index-resolved
23392                                               mpi_0)))
23393                                         (module-path-index2.1
23394                                          (module-path-index-path mpi_0)
23395                                          interned-base_0
23396                                          app_0
23397                                          (module-path-index-shift-cache
23398                                           mpi_0)))
23399                                       (raise-argument-error
23400                                        'struct-copy
23401                                        "module-path-index?"
23402                                        mpi_0)))))
23403                              (begin
23404                                (hash-set! at-name_0 interned-base_0 mpi_1)
23405                                mpi_1))))))
23406                   (begin
23407                     (hash-set! (mpi-intern-table-fast t_0) mpi_0 i-mpi_0)
23408                     i-mpi_0))))))
23409          (args (raise-binding-result-arity-error 2 args))))))))
23410(define built-in-symbols (make-hasheq))
23411(define register-built-in-symbol!
23412  (lambda (s_0) (hash-set! built-in-symbols s_0 #t)))
23413(define built-in-symbol? (lambda (s_0) (hash-ref built-in-symbols s_0 #f)))
23414(define make-built-in-symbol!
23415  (lambda (s_0)
23416    (let ((built-in-s_0 (string->symbol (format ".~s" s_0))))
23417      (begin
23418        (begin-unsafe (hash-set! built-in-symbols built-in-s_0 #t))
23419        built-in-s_0))))
23420(define effect_2411
23421  (begin
23422    (void
23423     (begin
23424       (for-each_2380
23425        register-built-in-symbol!
23426        '(lambda case-lambda
23427           if
23428           begin
23429           begin0
23430           let-values
23431           letrec-values
23432           set!
23433           quote
23434           with-continuation-mark
23435           |#%variable-reference|))
23436       (for-each_2380
23437        register-built-in-symbol!
23438        '(check-not-undefined
23439          instance-variable-box
23440          variable-reference
23441          variable-reference?
23442          variable-reference->instance
23443          variable-reference-constant?
23444          variable-reference-from-unsafe?))
23445       (for-each_2380
23446        register-built-in-symbol!
23447        '(or and
23448             let
23449             letrec*
23450             define
23451             $value
23452             with-continuation-mark*
23453             pariah
23454             begin-unsafe
23455             variable-set!
23456             variable-ref
23457             variable-ref/no-check
23458             variable-set!/check-undefined
23459             variable-set!/define
23460             make-instance-variable-reference
23461             instance-variable-reference
23462             unbox/check-undefined
23463             set-box!/check-undefined
23464             annotation?
23465             annotation-expression
23466             |#%app|
23467             |#%call-with-values|
23468             |#%app/no-return|
23469             |#%app/value|
23470             call-with-module-prompt
23471             make-pthread-parameter
23472             engine-block
23473             make-record-type-descriptor
23474             make-record-type-descriptor*
23475             make-record-constructor-descriptor
23476             record-constructor
23477             record-accessor
23478             record-mutator
23479             record-predicate
23480             make-struct-type-install-properties
23481             |#%struct-constructor|
23482             |#%struct-predicate|
23483             |#%struct-field-accessor|
23484             |#%struct-field-mutator|
23485             |#%nongenerative-uid|
23486             unsafe-struct?
23487             unsafe-sealed-struct?
23488             unsafe-struct
23489             raise-binding-result-arity-error
23490             raise-definition-result-arity-error
23491             structure-type-lookup-prefab-uid
23492             struct-type-constructor-add-guards
23493             impersonator-val
23494             impersonator-ref
23495             impersonate-set!
23496             ptr-ref/int8
23497             ptr-set!/int8
23498             ptr-ref/uint8
23499             ptr-set!/uint8
23500             ptr-ref/int16
23501             ptr-set!/int16
23502             ptr-ref/uint16
23503             ptr-set!/uint16
23504             ptr-ref/int32
23505             ptr-set!/int32
23506             ptr-ref/uint32
23507             ptr-set!/uint32
23508             ptr-ref/int64
23509             ptr-set!/int64
23510             ptr-ref/uint64
23511             ptr-set!/uint64
23512             ptr-ref/double
23513             ptr-set!/double
23514             ptr-ref/float
23515             ptr-set!/float))))
23516    (void)))
23517(define phase-shift-id (make-built-in-symbol! 'phase))
23518(define dest-phase-id (make-built-in-symbol! 'dest-phase))
23519(define ns-id (make-built-in-symbol! 'namespace))
23520(define self-id (make-built-in-symbol! 'self))
23521(define syntax-literals-id (make-built-in-symbol! 'syntax-literals))
23522(define get-syntax-literal!-id (make-built-in-symbol! 'get-syntax-literal!))
23523(define bulk-binding-registry-id
23524  (make-built-in-symbol! 'bulk-binding-registry))
23525(define inspector-id (make-built-in-symbol! 'inspector))
23526(define deserialize-syntax-id (make-built-in-symbol! 'deserialize-syntax))
23527(define deserialized-syntax-vector-id
23528  (make-built-in-symbol! 'deserialized-syntax-vector))
23529(define set-transformer!-id (make-built-in-symbol! 'set-transformer!))
23530(define top-level-bind!-id (make-built-in-symbol! 'top-level-bind!))
23531(define top-level-require!-id (make-built-in-symbol! 'top-level-require!))
23532(define mpi-vector-id (make-built-in-symbol! 'mpi-vector))
23533(define finish_2005
23534  (make-struct-type-install-properties
23535   '(module-path-index-table)
23536   2
23537   0
23538   #f
23539   null
23540   (current-inspector)
23541   #f
23542   '(0 1)
23543   #f
23544   'module-path-index-table))
23545(define struct:module-path-index-table
23546  (make-record-type-descriptor*
23547   'module-path-index-table
23548   #f
23549   (|#%nongenerative-uid| module-path-index-table)
23550   #f
23551   #f
23552   2
23553   0))
23554(define effect_2626 (finish_2005 struct:module-path-index-table))
23555(define module-path-index-table1.1
23556  (|#%name|
23557   module-path-index-table
23558   (record-constructor
23559    (make-record-constructor-descriptor
23560     struct:module-path-index-table
23561     #f
23562     #f))))
23563(define module-path-index-table?_2552
23564  (|#%name|
23565   module-path-index-table?
23566   (record-predicate struct:module-path-index-table)))
23567(define module-path-index-table?
23568  (|#%name|
23569   module-path-index-table?
23570   (lambda (v)
23571     (if (module-path-index-table?_2552 v)
23572       #t
23573       ($value
23574        (if (impersonator? v)
23575          (module-path-index-table?_2552 (impersonator-val v))
23576          #f))))))
23577(define module-path-index-table-positions_2549
23578  (|#%name|
23579   module-path-index-table-positions
23580   (record-accessor struct:module-path-index-table 0)))
23581(define module-path-index-table-positions
23582  (|#%name|
23583   module-path-index-table-positions
23584   (lambda (s)
23585     (if (module-path-index-table?_2552 s)
23586       (module-path-index-table-positions_2549 s)
23587       ($value
23588        (impersonate-ref
23589         module-path-index-table-positions_2549
23590         struct:module-path-index-table
23591         0
23592         s
23593         'module-path-index-table
23594         'positions))))))
23595(define module-path-index-table-intern_2630
23596  (|#%name|
23597   module-path-index-table-intern
23598   (record-accessor struct:module-path-index-table 1)))
23599(define module-path-index-table-intern
23600  (|#%name|
23601   module-path-index-table-intern
23602   (lambda (s)
23603     (if (module-path-index-table?_2552 s)
23604       (module-path-index-table-intern_2630 s)
23605       ($value
23606        (impersonate-ref
23607         module-path-index-table-intern_2630
23608         struct:module-path-index-table
23609         1
23610         s
23611         'module-path-index-table
23612         'intern))))))
23613(define make-module-path-index-table
23614  (lambda ()
23615    (let ((app_0 (make-hasheq)))
23616      (module-path-index-table1.1
23617       app_0
23618       (make-module-path-index-intern-table)))))
23619(define add-module-path-index!
23620  (lambda (mpis_0 mpi_0)
23621    (let ((pos_0 (add-module-path-index!/pos mpis_0 mpi_0)))
23622      (if pos_0 (list 'unsafe-vector*-ref mpi-vector-id pos_0) #f))))
23623(define add-module-path-index!/pos
23624  (lambda (mpis_0 mpi_0)
23625    (if (not mpi_0)
23626      #f
23627      (if mpi_0
23628        (let ((mpi_1
23629               (intern-module-path-index!
23630                (module-path-index-table-intern mpis_0)
23631                mpi_0)))
23632          (let ((positions_0 (module-path-index-table-positions mpis_0)))
23633            (let ((mpi_2 mpi_1))
23634              (let ((or-part_0 (hash-ref positions_0 mpi_2 #f)))
23635                (if or-part_0
23636                  or-part_0
23637                  (let ((pos_0 (hash-count positions_0)))
23638                    (begin (hash-set! positions_0 mpi_2 pos_0) pos_0)))))))
23639        (void)))))
23640(define generate-module-path-index-deserialize.1
23641  (|#%name|
23642   generate-module-path-index-deserialize
23643   (lambda (as-data?2_0 mpis4_0)
23644     (begin
23645       (let ((unique-list_0
23646              (|#%name|
23647               unique-list
23648               (lambda (v_0)
23649                 (begin
23650                   (if (pair? v_0)
23651                     (reverse$1
23652                      (begin
23653                        (letrec*
23654                         ((for-loop_0
23655                           (|#%name|
23656                            for-loop
23657                            (lambda (fold-var_0 lst_0)
23658                              (begin
23659                                (if (pair? lst_0)
23660                                  (let ((i_0 (unsafe-car lst_0)))
23661                                    (let ((rest_0 (unsafe-cdr lst_0)))
23662                                      (let ((fold-var_1 (cons i_0 fold-var_0)))
23663                                        (let ((fold-var_2 (values fold-var_1)))
23664                                          (for-loop_0 fold-var_2 rest_0)))))
23665                                  fold-var_0))))))
23666                         (for-loop_0 null v_0))))
23667                     v_0))))))
23668         (let ((positions_0 (module-path-index-table-positions mpis4_0)))
23669           (let ((gen-order_0 (make-hasheqv)))
23670             (let ((rev-positions_0
23671                    (begin
23672                      (letrec*
23673                       ((for-loop_0
23674                         (|#%name|
23675                          for-loop
23676                          (lambda (table_0 i_0)
23677                            (begin
23678                              (if i_0
23679                                (call-with-values
23680                                 (lambda ()
23681                                   (hash-iterate-key+value positions_0 i_0))
23682                                 (case-lambda
23683                                  ((k_0 v_0)
23684                                   (let ((table_1
23685                                          (let ((table_1
23686                                                 (call-with-values
23687                                                  (lambda () (values v_0 k_0))
23688                                                  (case-lambda
23689                                                   ((key_0 val_0)
23690                                                    (hash-set
23691                                                     table_0
23692                                                     key_0
23693                                                     val_0))
23694                                                   (args
23695                                                    (raise-binding-result-arity-error
23696                                                     2
23697                                                     args))))))
23698                                            (values table_1))))
23699                                     (for-loop_0
23700                                      table_1
23701                                      (hash-iterate-next positions_0 i_0))))
23702                                  (args
23703                                   (raise-binding-result-arity-error 2 args))))
23704                                table_0))))))
23705                       (for-loop_0
23706                        hash2589
23707                        (hash-iterate-first positions_0))))))
23708               (begin
23709                 (let ((end_0 (hash-count rev-positions_0)))
23710                   (begin
23711                     (letrec*
23712                      ((for-loop_0
23713                        (|#%name|
23714                         for-loop
23715                         (lambda (pos_0)
23716                           (begin
23717                             (if (< pos_0 end_0)
23718                               (begin
23719                                 (let ((mpi_0
23720                                        (hash-ref rev-positions_0 pos_0)))
23721                                   (letrec*
23722                                    ((loop_0
23723                                      (|#%name|
23724                                       loop
23725                                       (lambda (mpi_1)
23726                                         (begin
23727                                           (if (hash-ref gen-order_0 mpi_1 #f)
23728                                             (void)
23729                                             (call-with-values
23730                                              (lambda ()
23731                                                (1/module-path-index-split
23732                                                 mpi_1))
23733                                              (case-lambda
23734                                               ((name_0 base_0)
23735                                                (begin
23736                                                  (if base_0
23737                                                    (loop_0 base_0)
23738                                                    (void))
23739                                                  (hash-set!
23740                                                   gen-order_0
23741                                                   mpi_1
23742                                                   (hash-count gen-order_0))))
23743                                               (args
23744                                                (raise-binding-result-arity-error
23745                                                 2
23746                                                 args))))))))))
23747                                    (loop_0 mpi_0)))
23748                                 (for-loop_0 (+ pos_0 1)))
23749                               (values)))))))
23750                      (for-loop_0 0))))
23751                 (let ((rev-gen-order_0
23752                        (begin
23753                          (letrec*
23754                           ((for-loop_0
23755                             (|#%name|
23756                              for-loop
23757                              (lambda (table_0 i_0)
23758                                (begin
23759                                  (if i_0
23760                                    (call-with-values
23761                                     (lambda ()
23762                                       (hash-iterate-key+value
23763                                        gen-order_0
23764                                        i_0))
23765                                     (case-lambda
23766                                      ((k_0 v_0)
23767                                       (let ((table_1
23768                                              (let ((table_1
23769                                                     (call-with-values
23770                                                      (lambda ()
23771                                                        (values v_0 k_0))
23772                                                      (case-lambda
23773                                                       ((key_0 val_0)
23774                                                        (hash-set
23775                                                         table_0
23776                                                         key_0
23777                                                         val_0))
23778                                                       (args
23779                                                        (raise-binding-result-arity-error
23780                                                         2
23781                                                         args))))))
23782                                                (values table_1))))
23783                                         (for-loop_0
23784                                          table_1
23785                                          (hash-iterate-next
23786                                           gen-order_0
23787                                           i_0))))
23788                                      (args
23789                                       (raise-binding-result-arity-error
23790                                        2
23791                                        args))))
23792                                    table_0))))))
23793                           (for-loop_0
23794                            hash2589
23795                            (hash-iterate-first gen-order_0))))))
23796                   (let ((gens_0
23797                          (let ((len_0 (hash-count gen-order_0)))
23798                            (begin
23799                              (if (exact-nonnegative-integer? len_0)
23800                                (void)
23801                                (raise-argument-error
23802                                 'for/vector
23803                                 "exact-nonnegative-integer?"
23804                                 len_0))
23805                              (let ((v_0 (make-vector len_0 0)))
23806                                (begin
23807                                  (if (zero? len_0)
23808                                    (void)
23809                                    (let ((end_0 (hash-count gen-order_0)))
23810                                      (begin
23811                                        (letrec*
23812                                         ((for-loop_0
23813                                           (|#%name|
23814                                            for-loop
23815                                            (lambda (i_0 pos_0)
23816                                              (begin
23817                                                (if (< pos_0 end_0)
23818                                                  (let ((i_1
23819                                                         (let ((i_1
23820                                                                (begin
23821                                                                  (unsafe-vector*-set!
23822                                                                   v_0
23823                                                                   i_0
23824                                                                   (let ((mpi_0
23825                                                                          (hash-ref
23826                                                                           rev-gen-order_0
23827                                                                           pos_0)))
23828                                                                     (call-with-values
23829                                                                      (lambda ()
23830                                                                        (1/module-path-index-split
23831                                                                         mpi_0))
23832                                                                      (case-lambda
23833                                                                       ((path_0
23834                                                                         base_0)
23835                                                                        (if (begin-unsafe
23836                                                                             (eq?
23837                                                                              top-level-module-path-index
23838                                                                              mpi_0))
23839                                                                          'top
23840                                                                          (if (not
23841                                                                               path_0)
23842                                                                            (box
23843                                                                             (let ((or-part_0
23844                                                                                    (unique-list_0
23845                                                                                     (1/resolved-module-path-name
23846                                                                                      (module-path-index-resolved
23847                                                                                       mpi_0)))))
23848                                                                               (if or-part_0
23849                                                                                 or-part_0
23850                                                                                 'self)))
23851                                                                            (if (not
23852                                                                                 base_0)
23853                                                                              (vector
23854                                                                               path_0)
23855                                                                              (if base_0
23856                                                                                (vector
23857                                                                                 path_0
23858                                                                                 (hash-ref
23859                                                                                  gen-order_0
23860                                                                                  base_0))
23861                                                                                (void))))))
23862                                                                       (args
23863                                                                        (raise-binding-result-arity-error
23864                                                                         2
23865                                                                         args))))))
23866                                                                  (unsafe-fx+
23867                                                                   1
23868                                                                   i_0))))
23869                                                           (values i_1))))
23870                                                    (if (if (not
23871                                                             (let ((x_0
23872                                                                    (list
23873                                                                     pos_0)))
23874                                                               (unsafe-fx=
23875                                                                i_1
23876                                                                len_0)))
23877                                                          #t
23878                                                          #f)
23879                                                      (for-loop_0
23880                                                       i_1
23881                                                       (+ pos_0 1))
23882                                                      i_1))
23883                                                  i_0))))))
23884                                         (for-loop_0 0 0)))))
23885                                  v_0))))))
23886                     (let ((reorder-vec_0
23887                            (call-with-values
23888                             (lambda ()
23889                               (let ((end_0 (hash-count rev-positions_0)))
23890                                 (begin
23891                                   (letrec*
23892                                    ((for-loop_0
23893                                      (|#%name|
23894                                       for-loop
23895                                       (lambda (vec_0 i_0 pos_0)
23896                                         (begin
23897                                           (if (< pos_0 end_0)
23898                                             (call-with-values
23899                                              (lambda ()
23900                                                (call-with-values
23901                                                 (lambda ()
23902                                                   (let ((new-vec_0
23903                                                          (if (eq?
23904                                                               i_0
23905                                                               (unsafe-vector*-length
23906                                                                vec_0))
23907                                                            (grow-vector vec_0)
23908                                                            vec_0)))
23909                                                     (begin
23910                                                       (unsafe-vector*-set!
23911                                                        new-vec_0
23912                                                        i_0
23913                                                        (hash-ref
23914                                                         gen-order_0
23915                                                         (hash-ref
23916                                                          rev-positions_0
23917                                                          pos_0)))
23918                                                       (values
23919                                                        new-vec_0
23920                                                        (unsafe-fx+ i_0 1)))))
23921                                                 (case-lambda
23922                                                  ((vec_1 i_1)
23923                                                   (values vec_1 i_1))
23924                                                  (args
23925                                                   (raise-binding-result-arity-error
23926                                                    2
23927                                                    args)))))
23928                                              (case-lambda
23929                                               ((vec_1 i_1)
23930                                                (for-loop_0
23931                                                 vec_1
23932                                                 i_1
23933                                                 (+ pos_0 1)))
23934                                               (args
23935                                                (raise-binding-result-arity-error
23936                                                 2
23937                                                 args))))
23938                                             (values vec_0 i_0)))))))
23939                                    (for-loop_0 (make-vector 16) 0 0)))))
23940                             (case-lambda
23941                              ((vec_0 i_0) (shrink-vector vec_0 i_0))
23942                              (args
23943                               (raise-binding-result-arity-error 2 args))))))
23944                       (if as-data?2_0
23945                         (vector gens_0 reorder-vec_0)
23946                         (list
23947                          'deserialize-module-path-indexes
23948                          (list 'quote gens_0)
23949                          (list 'quote reorder-vec_0)))))))))))))))
23950(define deserialize-module-path-indexes
23951  (lambda (gen-vec_0 order-vec_0)
23952    (let ((gen_0 (make-vector (vector-length gen-vec_0) #f)))
23953      (begin
23954        (call-with-values
23955         (lambda ()
23956           (begin
23957             (check-vector gen-vec_0)
23958             (values gen-vec_0 (unsafe-vector-length gen-vec_0))))
23959         (case-lambda
23960          ((vec_0 len_0)
23961           (let ((start_0 0))
23962             (let ((vec_1 vec_0) (len_1 len_0))
23963               (begin
23964                 #f
23965                 (void)
23966                 (letrec*
23967                  ((for-loop_0
23968                    (|#%name|
23969                     for-loop
23970                     (lambda (pos_0 pos_1)
23971                       (begin
23972                         (if (if (unsafe-fx< pos_0 len_1) #t #f)
23973                           (let ((d_0 (unsafe-vector-ref vec_1 pos_0)))
23974                             (begin
23975                               (vector-set!
23976                                gen_0
23977                                pos_1
23978                                (if (eq? d_0 'top)
23979                                  (begin-unsafe top-level-module-path-index)
23980                                  (if (box? d_0)
23981                                    (let ((name_0 (unbox d_0)))
23982                                      (begin-unsafe
23983                                       (make-self-module-path-index
23984                                        (1/make-resolved-module-path name_0))))
23985                                    (let ((path_0 (unsafe-vector*-ref d_0 0)))
23986                                      (let ((base_0
23987                                             (if (>
23988                                                  (unsafe-vector*-length d_0)
23989                                                  1)
23990                                               (unsafe-vector*-ref
23991                                                gen_0
23992                                                (unsafe-vector*-ref d_0 1))
23993                                               #f)))
23994                                        (let ((path_1 path_0))
23995                                          (begin-unsafe
23996                                           (1/module-path-index-join
23997                                            path_1
23998                                            base_0))))))))
23999                               (for-loop_0 (unsafe-fx+ 1 pos_0) (+ pos_1 1))))
24000                           (values)))))))
24001                  (for-loop_0 0 start_0))))))
24002          (args (raise-binding-result-arity-error 2 args))))
24003        (void)
24004        (let ((len_0 (vector-length order-vec_0)))
24005          (begin
24006            (if (exact-nonnegative-integer? len_0)
24007              (void)
24008              (raise-argument-error
24009               'for/vector
24010               "exact-nonnegative-integer?"
24011               len_0))
24012            (let ((v_0 (make-vector len_0 0)))
24013              (begin
24014                (if (zero? len_0)
24015                  (void)
24016                  (call-with-values
24017                   (lambda ()
24018                     (begin
24019                       (check-vector order-vec_0)
24020                       (values
24021                        order-vec_0
24022                        (unsafe-vector-length order-vec_0))))
24023                   (case-lambda
24024                    ((vec_0 len_1)
24025                     (begin
24026                       #f
24027                       (letrec*
24028                        ((for-loop_0
24029                          (|#%name|
24030                           for-loop
24031                           (lambda (i_0 pos_0)
24032                             (begin
24033                               (if (unsafe-fx< pos_0 len_1)
24034                                 (let ((p_0 (unsafe-vector-ref vec_0 pos_0)))
24035                                   (let ((i_1
24036                                          (let ((i_1
24037                                                 (begin
24038                                                   (unsafe-vector*-set!
24039                                                    v_0
24040                                                    i_0
24041                                                    (unsafe-vector*-ref
24042                                                     gen_0
24043                                                     p_0))
24044                                                   (unsafe-fx+ 1 i_0))))
24045                                            (values i_1))))
24046                                     (if (if (not
24047                                              (let ((x_0 (list p_0)))
24048                                                (unsafe-fx= i_1 len_0)))
24049                                           #t
24050                                           #f)
24051                                       (for-loop_0 i_1 (unsafe-fx+ 1 pos_0))
24052                                       i_1)))
24053                                 i_0))))))
24054                        (for-loop_0 0 0))))
24055                    (args (raise-binding-result-arity-error 2 args)))))
24056                v_0))))))))
24057(define deserialize-module-path-index-data
24058  (lambda (v_0)
24059    (begin
24060      (if (if (vector? v_0) (= 2 (vector-length v_0)) #f)
24061        (void)
24062        (error 'syntax-deserialize "ill-formed serialization"))
24063      (let ((app_0 (vector-ref v_0 0)))
24064        (deserialize-module-path-indexes app_0 (vector-ref v_0 1))))))
24065(define mpis-as-vector
24066  (lambda (mpis_0)
24067    (let ((positions_0 (module-path-index-table-positions mpis_0)))
24068      (let ((vec_0 (make-vector (hash-count positions_0) #f)))
24069        (begin
24070          (begin
24071            (letrec*
24072             ((for-loop_0
24073               (|#%name|
24074                for-loop
24075                (lambda (i_0)
24076                  (begin
24077                    (if i_0
24078                      (call-with-values
24079                       (lambda () (hash-iterate-key+value positions_0 i_0))
24080                       (case-lambda
24081                        ((mpi_0 pos_0)
24082                         (begin
24083                           (vector-set! vec_0 pos_0 mpi_0)
24084                           (for-loop_0 (hash-iterate-next positions_0 i_0))))
24085                        (args (raise-binding-result-arity-error 2 args))))
24086                      (values)))))))
24087             (for-loop_0 (hash-iterate-first positions_0))))
24088          (void)
24089          vec_0)))))
24090(define generate-module-data-linklet
24091  (lambda (mpis_0)
24092    (let ((app_0 (list deserialize-imports)))
24093      (let ((app_1 (list mpi-vector-id)))
24094        (let ((app_2
24095               (list*
24096                'define-values
24097                (list inspector-id)
24098                '((current-code-inspector)))))
24099          (list
24100           'linklet
24101           app_0
24102           app_1
24103           app_2
24104           (let ((app_3 (list mpi-vector-id)))
24105             (list
24106              'define-values
24107              app_3
24108              (generate-module-path-index-deserialize.1 #f mpis_0)))))))))
24109(define generate-module-declaration-linklet
24110  (lambda (mpis_0
24111           self_0
24112           requires_0
24113           provides_0
24114           phase-to-link-module-uses-expr_0)
24115    (let ((app_0 (list deserialize-imports (list mpi-vector-id))))
24116      (let ((app_1
24117             (list
24118              'define-values
24119              '(self-mpi)
24120              (add-module-path-index! mpis_0 self_0))))
24121        (let ((app_2
24122               (list
24123                'define-values
24124                '(requires)
24125                (generate-deserialize.1
24126                 #f
24127                 #f
24128                 mpis_0
24129                 hash2610
24130                 #f
24131                 requires_0))))
24132          (let ((app_3
24133                 (list
24134                  'define-values
24135                  '(provides)
24136                  (generate-deserialize.1
24137                   #f
24138                   #f
24139                   mpis_0
24140                   hash2610
24141                   #f
24142                   provides_0))))
24143            (list
24144             'linklet
24145             app_0
24146             '(self-mpi requires provides phase-to-link-modules)
24147             app_1
24148             app_2
24149             app_3
24150             (list
24151              'define-values
24152              '(phase-to-link-modules)
24153              phase-to-link-module-uses-expr_0))))))))
24154(define serialize-module-uses
24155  (lambda (mus_0 mpis_0)
24156    (reverse$1
24157     (begin
24158       (letrec*
24159        ((for-loop_0
24160          (|#%name|
24161           for-loop
24162           (lambda (fold-var_0 lst_0)
24163             (begin
24164               (if (pair? lst_0)
24165                 (let ((mu_0 (unsafe-car lst_0)))
24166                   (let ((rest_0 (unsafe-cdr lst_0)))
24167                     (let ((fold-var_1
24168                            (let ((fold-var_1
24169                                   (cons
24170                                    (let ((app_0
24171                                           (add-module-path-index!
24172                                            mpis_0
24173                                            (module-use-module mu_0))))
24174                                      (list
24175                                       'module-use
24176                                       app_0
24177                                       (module-use-phase mu_0)))
24178                                    fold-var_0)))
24179                              (values fold-var_1))))
24180                       (for-loop_0 fold-var_1 rest_0))))
24181                 fold-var_0))))))
24182        (for-loop_0 null mus_0))))))
24183(define interned-literal?
24184  (lambda (v_0)
24185    (let ((or-part_0 (null? v_0)))
24186      (if or-part_0
24187        or-part_0
24188        (let ((or-part_1 (boolean? v_0)))
24189          (if or-part_1
24190            or-part_1
24191            (let ((or-part_2
24192                   (if (fixnum? v_0)
24193                     (if (< v_0 1073741823) (> v_0 -1073741824) #f)
24194                     #f)))
24195              (if or-part_2
24196                or-part_2
24197                (let ((or-part_3 (symbol? v_0)))
24198                  (if or-part_3
24199                    or-part_3
24200                    (let ((or-part_4 (char? v_0)))
24201                      (if or-part_4 or-part_4 (keyword? v_0)))))))))))))
24202(define serialize-phase-to-link-module-uses
24203  (lambda (phase-to-link-module-uses_0 mpis_0)
24204    (let ((phases-in-order_0
24205           (let ((temp26_0 (hash-keys phase-to-link-module-uses_0)))
24206             (sort.1 #f #f temp26_0 <))))
24207      (list*
24208       'hasheqv
24209       (apply
24210        append
24211        (reverse$1
24212         (begin
24213           (letrec*
24214            ((for-loop_0
24215              (|#%name|
24216               for-loop
24217               (lambda (fold-var_0 lst_0)
24218                 (begin
24219                   (if (pair? lst_0)
24220                     (let ((phase_0 (unsafe-car lst_0)))
24221                       (let ((rest_0 (unsafe-cdr lst_0)))
24222                         (let ((fold-var_1
24223                                (let ((fold-var_1
24224                                       (cons
24225                                        (list
24226                                         phase_0
24227                                         (list*
24228                                          'list
24229                                          (serialize-module-uses
24230                                           (hash-ref
24231                                            phase-to-link-module-uses_0
24232                                            phase_0)
24233                                           mpis_0)))
24234                                        fold-var_0)))
24235                                  (values fold-var_1))))
24236                           (for-loop_0 fold-var_1 rest_0))))
24237                     fold-var_0))))))
24238            (for-loop_0 null phases-in-order_0)))))))))
24239(define generate-deserialize.1
24240  (|#%name|
24241   generate-deserialize
24242   (lambda (as-data?7_0
24243            keep-provides?10_0
24244            mpis6_0
24245            preserve-prop-keys9_0
24246            syntax-support?8_0
24247            v16_0)
24248     (begin
24249       (let ((bulk-shifts_0 (if keep-provides?10_0 (list (make-hasheq)) #f)))
24250         (let ((reachable-scopes_0
24251                (find-reachable-scopes v16_0 bulk-shifts_0)))
24252           (let ((state_0
24253                  (make-serialize-state
24254                   reachable-scopes_0
24255                   preserve-prop-keys9_0
24256                   (if keep-provides?10_0
24257                     (lambda (b_0)
24258                       (let ((name_0 (hash-ref (car bulk-shifts_0) b_0 #f)))
24259                         (let ((or-part_0 (not name_0)))
24260                           (if or-part_0
24261                             or-part_0
24262                             (|#%app| keep-provides?10_0 name_0)))))
24263                     #f))))
24264             (let ((mutables_0 (make-hasheq)))
24265               (let ((objs_0 (make-hasheq)))
24266                 (let ((shares_0 (make-hasheq)))
24267                   (let ((obj-step_0 0))
24268                     (let ((frontier_0 null))
24269                       (letrec*
24270                        ((add-frontier!_0
24271                          (|#%name|
24272                           add-frontier!
24273                           (case-lambda
24274                            ((v_0)
24275                             (begin (set! frontier_0 (cons v_0 frontier_0))))
24276                            ((kind_0 v_0) (add-frontier!_0 v_0))))))
24277                        (begin
24278                          (letrec*
24279                           ((frontier-loop_0
24280                             (|#%name|
24281                              frontier-loop
24282                              (lambda (v_0)
24283                                (begin
24284                                  (begin
24285                                    (letrec*
24286                                     ((loop_0
24287                                       (|#%name|
24288                                        loop
24289                                        (lambda (v_1)
24290                                          (begin
24291                                            (if (let ((or-part_0
24292                                                       (interned-literal?
24293                                                        v_1)))
24294                                                  (if or-part_0
24295                                                    or-part_0
24296                                                    (1/module-path-index?
24297                                                     v_1)))
24298                                              (void)
24299                                              (if (hash-ref objs_0 v_1 #f)
24300                                                (if (hash-ref
24301                                                     mutables_0
24302                                                     v_1
24303                                                     #f)
24304                                                  (void)
24305                                                  (hash-set! shares_0 v_1 #t))
24306                                                (begin
24307                                                  (if (serialize-fill!? v_1)
24308                                                    (begin
24309                                                      (hash-set!
24310                                                       mutables_0
24311                                                       v_1
24312                                                       (hash-count mutables_0))
24313                                                      (|#%app|
24314                                                       (serialize-fill!-ref
24315                                                        v_1)
24316                                                       v_1
24317                                                       add-frontier!_0
24318                                                       state_0))
24319                                                    (if (serialize? v_1)
24320                                                      (|#%app|
24321                                                       (serialize-ref v_1)
24322                                                       v_1
24323                                                       (case-lambda
24324                                                        ((sub-v_0)
24325                                                         (loop_0 sub-v_0))
24326                                                        ((kind_0 sub-v_0)
24327                                                         (loop_0 sub-v_0)))
24328                                                       state_0)
24329                                                      (if (pair? v_1)
24330                                                        (begin
24331                                                          (loop_0 (car v_1))
24332                                                          (loop_0 (cdr v_1)))
24333                                                        (if (vector? v_1)
24334                                                          (if (let ((or-part_0
24335                                                                     (immutable?
24336                                                                      v_1)))
24337                                                                (if or-part_0
24338                                                                  or-part_0
24339                                                                  (zero?
24340                                                                   (vector-length
24341                                                                    v_1))))
24342                                                            (begin
24343                                                              (call-with-values
24344                                                               (lambda ()
24345                                                                 (begin
24346                                                                   (check-vector
24347                                                                    v_1)
24348                                                                   (values
24349                                                                    v_1
24350                                                                    (unsafe-vector-length
24351                                                                     v_1))))
24352                                                               (case-lambda
24353                                                                ((vec_0 len_0)
24354                                                                 (begin
24355                                                                   #f
24356                                                                   (letrec*
24357                                                                    ((for-loop_0
24358                                                                      (|#%name|
24359                                                                       for-loop
24360                                                                       (lambda (pos_0)
24361                                                                         (begin
24362                                                                           (if (unsafe-fx<
24363                                                                                pos_0
24364                                                                                len_0)
24365                                                                             (let ((e_0
24366                                                                                    (unsafe-vector-ref
24367                                                                                     vec_0
24368                                                                                     pos_0)))
24369                                                                               (begin
24370                                                                                 (loop_0
24371                                                                                  e_0)
24372                                                                                 (for-loop_0
24373                                                                                  (unsafe-fx+
24374                                                                                   1
24375                                                                                   pos_0))))
24376                                                                             (values)))))))
24377                                                                    (for-loop_0
24378                                                                     0))))
24379                                                                (args
24380                                                                 (raise-binding-result-arity-error
24381                                                                  2
24382                                                                  args))))
24383                                                              (void))
24384                                                            (begin
24385                                                              (hash-set!
24386                                                               mutables_0
24387                                                               v_1
24388                                                               (hash-count
24389                                                                mutables_0))
24390                                                              (begin
24391                                                                (call-with-values
24392                                                                 (lambda ()
24393                                                                   (begin
24394                                                                     (check-vector
24395                                                                      v_1)
24396                                                                     (values
24397                                                                      v_1
24398                                                                      (unsafe-vector-length
24399                                                                       v_1))))
24400                                                                 (case-lambda
24401                                                                  ((vec_0
24402                                                                    len_0)
24403                                                                   (begin
24404                                                                     #f
24405                                                                     (letrec*
24406                                                                      ((for-loop_0
24407                                                                        (|#%name|
24408                                                                         for-loop
24409                                                                         (lambda (pos_0)
24410                                                                           (begin
24411                                                                             (if (unsafe-fx<
24412                                                                                  pos_0
24413                                                                                  len_0)
24414                                                                               (let ((e_0
24415                                                                                      (unsafe-vector-ref
24416                                                                                       vec_0
24417                                                                                       pos_0)))
24418                                                                                 (begin
24419                                                                                   (add-frontier!_0
24420                                                                                    e_0)
24421                                                                                   (for-loop_0
24422                                                                                    (unsafe-fx+
24423                                                                                     1
24424                                                                                     pos_0))))
24425                                                                               (values)))))))
24426                                                                      (for-loop_0
24427                                                                       0))))
24428                                                                  (args
24429                                                                   (raise-binding-result-arity-error
24430                                                                    2
24431                                                                    args))))
24432                                                                (void))))
24433                                                          (if (box? v_1)
24434                                                            (if (immutable?
24435                                                                 v_1)
24436                                                              (loop_0
24437                                                               (unbox v_1))
24438                                                              (begin
24439                                                                (hash-set!
24440                                                                 mutables_0
24441                                                                 v_1
24442                                                                 (hash-count
24443                                                                  mutables_0))
24444                                                                (add-frontier!_0
24445                                                                 (unbox v_1))))
24446                                                            (if (hash? v_1)
24447                                                              (if (immutable?
24448                                                                   v_1)
24449                                                                (begin
24450                                                                  (let ((lst_0
24451                                                                         (sorted-hash-keys
24452                                                                          v_1)))
24453                                                                    (begin
24454                                                                      (letrec*
24455                                                                       ((for-loop_0
24456                                                                         (|#%name|
24457                                                                          for-loop
24458                                                                          (lambda (lst_1)
24459                                                                            (begin
24460                                                                              (if (pair?
24461                                                                                   lst_1)
24462                                                                                (let ((k_0
24463                                                                                       (unsafe-car
24464                                                                                        lst_1)))
24465                                                                                  (let ((rest_0
24466                                                                                         (unsafe-cdr
24467                                                                                          lst_1)))
24468                                                                                    (begin
24469                                                                                      (begin
24470                                                                                        (loop_0
24471                                                                                         k_0)
24472                                                                                        (loop_0
24473                                                                                         (hash-ref
24474                                                                                          v_1
24475                                                                                          k_0)))
24476                                                                                      (for-loop_0
24477                                                                                       rest_0))))
24478                                                                                (values)))))))
24479                                                                       (for-loop_0
24480                                                                        lst_0))))
24481                                                                  (void))
24482                                                                (begin
24483                                                                  (hash-set!
24484                                                                   mutables_0
24485                                                                   v_1
24486                                                                   (hash-count
24487                                                                    mutables_0))
24488                                                                  (begin
24489                                                                    (let ((lst_0
24490                                                                           (sorted-hash-keys
24491                                                                            v_1)))
24492                                                                      (begin
24493                                                                        (letrec*
24494                                                                         ((for-loop_0
24495                                                                           (|#%name|
24496                                                                            for-loop
24497                                                                            (lambda (lst_1)
24498                                                                              (begin
24499                                                                                (if (pair?
24500                                                                                     lst_1)
24501                                                                                  (let ((k_0
24502                                                                                         (unsafe-car
24503                                                                                          lst_1)))
24504                                                                                    (let ((rest_0
24505                                                                                           (unsafe-cdr
24506                                                                                            lst_1)))
24507                                                                                      (begin
24508                                                                                        (begin
24509                                                                                          (add-frontier!_0
24510                                                                                           k_0)
24511                                                                                          (add-frontier!_0
24512                                                                                           (hash-ref
24513                                                                                            v_1
24514                                                                                            k_0)))
24515                                                                                        (for-loop_0
24516                                                                                         rest_0))))
24517                                                                                  (values)))))))
24518                                                                         (for-loop_0
24519                                                                          lst_0))))
24520                                                                    (void))))
24521                                                              (if (prefab-struct-key
24522                                                                   v_1)
24523                                                                (begin
24524                                                                  (call-with-values
24525                                                                   (lambda ()
24526                                                                     (unsafe-normalise-inputs
24527                                                                      unsafe-vector-length
24528                                                                      (struct->vector
24529                                                                       v_1)
24530                                                                      1
24531                                                                      #f
24532                                                                      1))
24533                                                                   (case-lambda
24534                                                                    ((v*_0
24535                                                                      start*_0
24536                                                                      stop*_0
24537                                                                      step*_0)
24538                                                                     (begin
24539                                                                       #t
24540                                                                       (letrec*
24541                                                                        ((for-loop_0
24542                                                                          (|#%name|
24543                                                                           for-loop
24544                                                                           (lambda (idx_0)
24545                                                                             (begin
24546                                                                               (if (unsafe-fx<
24547                                                                                    idx_0
24548                                                                                    stop*_0)
24549                                                                                 (let ((e_0
24550                                                                                        (unsafe-vector-ref
24551                                                                                         v*_0
24552                                                                                         idx_0)))
24553                                                                                   (begin
24554                                                                                     (loop_0
24555                                                                                      e_0)
24556                                                                                     (for-loop_0
24557                                                                                      (unsafe-fx+
24558                                                                                       idx_0
24559                                                                                       1))))
24560                                                                                 (values)))))))
24561                                                                        (for-loop_0
24562                                                                         start*_0))))
24563                                                                    (args
24564                                                                     (raise-binding-result-arity-error
24565                                                                      4
24566                                                                      args))))
24567                                                                  (void))
24568                                                                (if (srcloc?
24569                                                                     v_1)
24570                                                                  (if (path?
24571                                                                       (srcloc-source
24572                                                                        v_1))
24573                                                                    (void)
24574                                                                    (begin
24575                                                                      (call-with-values
24576                                                                       (lambda ()
24577                                                                         (unsafe-normalise-inputs
24578                                                                          unsafe-vector-length
24579                                                                          (struct->vector
24580                                                                           v_1)
24581                                                                          1
24582                                                                          #f
24583                                                                          1))
24584                                                                       (case-lambda
24585                                                                        ((v*_0
24586                                                                          start*_0
24587                                                                          stop*_0
24588                                                                          step*_0)
24589                                                                         (begin
24590                                                                           #t
24591                                                                           (letrec*
24592                                                                            ((for-loop_0
24593                                                                              (|#%name|
24594                                                                               for-loop
24595                                                                               (lambda (idx_0)
24596                                                                                 (begin
24597                                                                                   (if (unsafe-fx<
24598                                                                                        idx_0
24599                                                                                        stop*_0)
24600                                                                                     (let ((e_0
24601                                                                                            (unsafe-vector-ref
24602                                                                                             v*_0
24603                                                                                             idx_0)))
24604                                                                                       (begin
24605                                                                                         (loop_0
24606                                                                                          e_0)
24607                                                                                         (for-loop_0
24608                                                                                          (unsafe-fx+
24609                                                                                           idx_0
24610                                                                                           1))))
24611                                                                                     (values)))))))
24612                                                                            (for-loop_0
24613                                                                             start*_0))))
24614                                                                        (args
24615                                                                         (raise-binding-result-arity-error
24616                                                                          4
24617                                                                          args))))
24618                                                                      (void)))
24619                                                                  (void)))))))))
24620                                                  (hash-set!
24621                                                   objs_0
24622                                                   v_1
24623                                                   obj-step_0)
24624                                                  (set! obj-step_0
24625                                                    (add1 obj-step_0))))))))))
24626                                     (loop_0 v_0))
24627                                    (if (null? frontier_0)
24628                                      (void)
24629                                      (let ((l_0 frontier_0))
24630                                        (begin
24631                                          (set! frontier_0 null)
24632                                          (begin
24633                                            (letrec*
24634                                             ((for-loop_0
24635                                               (|#%name|
24636                                                for-loop
24637                                                (lambda (lst_0)
24638                                                  (begin
24639                                                    (if (pair? lst_0)
24640                                                      (let ((v_1
24641                                                             (unsafe-car
24642                                                              lst_0)))
24643                                                        (let ((rest_0
24644                                                               (unsafe-cdr
24645                                                                lst_0)))
24646                                                          (begin
24647                                                            (frontier-loop_0
24648                                                             v_1)
24649                                                            (for-loop_0
24650                                                             rest_0))))
24651                                                      (values)))))))
24652                                             (for-loop_0 l_0)))
24653                                          (void))))))))))
24654                           (frontier-loop_0 v16_0))
24655                          (let ((num-mutables_0 (hash-count mutables_0)))
24656                            (let ((share-step-positions_0
24657                                   (let ((share-steps_0
24658                                          (reverse$1
24659                                           (begin
24660                                             (letrec*
24661                                              ((for-loop_0
24662                                                (|#%name|
24663                                                 for-loop
24664                                                 (lambda (fold-var_0 i_0)
24665                                                   (begin
24666                                                     (if i_0
24667                                                       (let ((obj_0
24668                                                              (hash-iterate-key
24669                                                               shares_0
24670                                                               i_0)))
24671                                                         (let ((fold-var_1
24672                                                                (let ((fold-var_1
24673                                                                       (cons
24674                                                                        (hash-ref
24675                                                                         objs_0
24676                                                                         obj_0)
24677                                                                        fold-var_0)))
24678                                                                  (values
24679                                                                   fold-var_1))))
24680                                                           (for-loop_0
24681                                                            fold-var_1
24682                                                            (hash-iterate-next
24683                                                             shares_0
24684                                                             i_0))))
24685                                                       fold-var_0))))))
24686                                              (for-loop_0
24687                                               null
24688                                               (hash-iterate-first
24689                                                shares_0)))))))
24690                                     (let ((lst_0
24691                                            (sort.1 #f #f share-steps_0 <)))
24692                                       (begin
24693                                         (letrec*
24694                                          ((for-loop_0
24695                                            (|#%name|
24696                                             for-loop
24697                                             (lambda (table_0 lst_1 pos_0)
24698                                               (begin
24699                                                 (if (if (pair? lst_1) #t #f)
24700                                                   (let ((step_0
24701                                                          (unsafe-car lst_1)))
24702                                                     (let ((rest_0
24703                                                            (unsafe-cdr
24704                                                             lst_1)))
24705                                                       (let ((table_1
24706                                                              (let ((table_1
24707                                                                     (call-with-values
24708                                                                      (lambda ()
24709                                                                        (values
24710                                                                         step_0
24711                                                                         pos_0))
24712                                                                      (case-lambda
24713                                                                       ((key_0
24714                                                                         val_0)
24715                                                                        (hash-set
24716                                                                         table_0
24717                                                                         key_0
24718                                                                         val_0))
24719                                                                       (args
24720                                                                        (raise-binding-result-arity-error
24721                                                                         2
24722                                                                         args))))))
24723                                                                (values
24724                                                                 table_1))))
24725                                                         (for-loop_0
24726                                                          table_1
24727                                                          rest_0
24728                                                          (+ pos_0 1)))))
24729                                                   table_0))))))
24730                                          (for-loop_0
24731                                           hash2589
24732                                           lst_0
24733                                           num-mutables_0)))))))
24734                              (let ((stream_0 null))
24735                                (let ((stream-size_0 0))
24736                                  (let ((next-push-position_0
24737                                         (|#%name|
24738                                          next-push-position
24739                                          (lambda () (begin stream-size_0)))))
24740                                    (let ((quoted?_0
24741                                           (|#%name|
24742                                            quoted?
24743                                            (lambda (pos_0)
24744                                              (begin
24745                                                (let ((v_0
24746                                                       (let ((app_0 stream_0))
24747                                                         (list-ref
24748                                                          app_0
24749                                                          (let ((app_1
24750                                                                 stream-size_0))
24751                                                            (-
24752                                                             app_1
24753                                                             (add1 pos_0)))))))
24754                                                  (let ((or-part_0
24755                                                         (not (keyword? v_0))))
24756                                                    (if or-part_0
24757                                                      or-part_0
24758                                                      (eq?
24759                                                       kw2626
24760                                                       v_0)))))))))
24761                                      (let ((ser-reset!_0
24762                                             (|#%name|
24763                                              ser-reset!
24764                                              (lambda (pos_0)
24765                                                (begin
24766                                                  (begin
24767                                                    (set! stream_0
24768                                                      (let ((app_0 stream_0))
24769                                                        (list-tail
24770                                                         app_0
24771                                                         (-
24772                                                          stream-size_0
24773                                                          pos_0))))
24774                                                    (set! stream-size_0
24775                                                      pos_0)))))))
24776                                        (let ((reap-stream!_0
24777                                               (|#%name|
24778                                                reap-stream!
24779                                                (lambda ()
24780                                                  (begin
24781                                                    (begin0
24782                                                      (list->vector
24783                                                       (reverse$1 stream_0))
24784                                                      (set! stream_0 null)
24785                                                      (set! stream-size_0
24786                                                        0)))))))
24787                                          (letrec*
24788                                           ((ser-push!_0
24789                                             (|#%name|
24790                                              ser-push!
24791                                              (case-lambda
24792                                               ((v_0)
24793                                                (begin
24794                                                  (if (hash-ref
24795                                                       shares_0
24796                                                       v_0
24797                                                       #f)
24798                                                    (let ((n_0
24799                                                           (hash-ref
24800                                                            share-step-positions_0
24801                                                            (hash-ref
24802                                                             objs_0
24803                                                             v_0))))
24804                                                      (begin
24805                                                        (ser-push!_0
24806                                                         'tag
24807                                                         kw2603)
24808                                                        (ser-push!_0
24809                                                         'exact
24810                                                         n_0)))
24811                                                    (let ((c1_0
24812                                                           (hash-ref
24813                                                            mutables_0
24814                                                            v_0
24815                                                            #f)))
24816                                                      (if c1_0
24817                                                        (begin
24818                                                          (ser-push!_0
24819                                                           'tag
24820                                                           kw2603)
24821                                                          (ser-push!_0
24822                                                           'exact
24823                                                           c1_0))
24824                                                        (ser-push-encoded!_0
24825                                                         v_0))))))
24826                                               ((kind_0 v_0)
24827                                                (if (eq? kind_0 'exact)
24828                                                  (begin
24829                                                    (set! stream_0
24830                                                      (cons v_0 stream_0))
24831                                                    (set! stream-size_0
24832                                                      (add1 stream-size_0)))
24833                                                  (if (eq? kind_0 'tag)
24834                                                    (ser-push!_0 'exact v_0)
24835                                                    (if (eq? kind_0 'reference)
24836                                                      (if (hash-ref
24837                                                           shares_0
24838                                                           v_0
24839                                                           #f)
24840                                                        (let ((n_0
24841                                                               (hash-ref
24842                                                                share-step-positions_0
24843                                                                (hash-ref
24844                                                                 objs_0
24845                                                                 v_0))))
24846                                                          (ser-push!_0
24847                                                           'exact
24848                                                           n_0))
24849                                                        (let ((c2_0
24850                                                               (hash-ref
24851                                                                mutables_0
24852                                                                v_0
24853                                                                #f)))
24854                                                          (if c2_0
24855                                                            (ser-push!_0
24856                                                             'exact
24857                                                             c2_0)
24858                                                            (ser-push!_0
24859                                                             v_0))))
24860                                                      (ser-push!_0 v_0))))))))
24861                                            (ser-push-encoded!_0
24862                                             (|#%name|
24863                                              ser-push-encoded!
24864                                              (lambda (v_0)
24865                                                (begin
24866                                                  (if (keyword? v_0)
24867                                                    (begin
24868                                                      (ser-push!_0
24869                                                       'tag
24870                                                       kw2626)
24871                                                      (ser-push!_0 'exact v_0))
24872                                                    (if (1/module-path-index?
24873                                                         v_0)
24874                                                      (begin
24875                                                        (ser-push!_0
24876                                                         'tag
24877                                                         kw3163)
24878                                                        (ser-push!_0
24879                                                         'exact
24880                                                         (add-module-path-index!/pos
24881                                                          mpis6_0
24882                                                          v_0)))
24883                                                      (if (serialize? v_0)
24884                                                        (|#%app|
24885                                                         (serialize-ref v_0)
24886                                                         v_0
24887                                                         ser-push!_0
24888                                                         state_0)
24889                                                        (if (if (list? v_0)
24890                                                              (if (pair? v_0)
24891                                                                (pair?
24892                                                                 (cdr v_0))
24893                                                                #f)
24894                                                              #f)
24895                                                          (let ((start-pos_0
24896                                                                 (begin-unsafe
24897                                                                  (begin
24898                                                                    stream-size_0))))
24899                                                            (begin
24900                                                              (ser-push!_0
24901                                                               'tag
24902                                                               kw2802)
24903                                                              (begin
24904                                                                (ser-push!_0
24905                                                                 'exact
24906                                                                 (length v_0))
24907                                                                (let ((all-quoted?_0
24908                                                                       (begin
24909                                                                         (letrec*
24910                                                                          ((for-loop_0
24911                                                                            (|#%name|
24912                                                                             for-loop
24913                                                                             (lambda (all-quoted?_0
24914                                                                                      lst_0)
24915                                                                               (begin
24916                                                                                 (if (pair?
24917                                                                                      lst_0)
24918                                                                                   (let ((i_0
24919                                                                                          (unsafe-car
24920                                                                                           lst_0)))
24921                                                                                     (let ((rest_0
24922                                                                                            (unsafe-cdr
24923                                                                                             lst_0)))
24924                                                                                       (let ((all-quoted?_1
24925                                                                                              (let ((all-quoted?_1
24926                                                                                                     (let ((i-pos_0
24927                                                                                                            (begin-unsafe
24928                                                                                                             (begin
24929                                                                                                               stream-size_0))))
24930                                                                                                       (begin
24931                                                                                                         (ser-push!_0
24932                                                                                                          i_0)
24933                                                                                                         (if all-quoted?_0
24934                                                                                                           (quoted?_0
24935                                                                                                            i-pos_0)
24936                                                                                                           #f)))))
24937                                                                                                (values
24938                                                                                                 all-quoted?_1))))
24939                                                                                         (for-loop_0
24940                                                                                          all-quoted?_1
24941                                                                                          rest_0))))
24942                                                                                   all-quoted?_0))))))
24943                                                                          (for-loop_0
24944                                                                           #t
24945                                                                           v_0)))))
24946                                                                  (if all-quoted?_0
24947                                                                    (begin
24948                                                                      (ser-reset!_0
24949                                                                       start-pos_0)
24950                                                                      (ser-push-optional-quote!_0)
24951                                                                      (ser-push!_0
24952                                                                       'exact
24953                                                                       v_0))
24954                                                                    (void))))))
24955                                                          (if (pair? v_0)
24956                                                            (let ((start-pos_0
24957                                                                   (begin-unsafe
24958                                                                    (begin
24959                                                                      stream-size_0))))
24960                                                              (begin
24961                                                                (ser-push!_0
24962                                                                 'tag
24963                                                                 kw2821)
24964                                                                (let ((a-pos_0
24965                                                                       (begin-unsafe
24966                                                                        (begin
24967                                                                          stream-size_0))))
24968                                                                  (begin
24969                                                                    (ser-push!_0
24970                                                                     (car v_0))
24971                                                                    (let ((d-pos_0
24972                                                                           (begin-unsafe
24973                                                                            (begin
24974                                                                              stream-size_0))))
24975                                                                      (begin
24976                                                                        (ser-push!_0
24977                                                                         (cdr
24978                                                                          v_0))
24979                                                                        (if (if (quoted?_0
24980                                                                                 a-pos_0)
24981                                                                              (quoted?_0
24982                                                                               d-pos_0)
24983                                                                              #f)
24984                                                                          (begin
24985                                                                            (ser-reset!_0
24986                                                                             start-pos_0)
24987                                                                            (ser-push-optional-quote!_0)
24988                                                                            (ser-push!_0
24989                                                                             'exact
24990                                                                             v_0))
24991                                                                          (void))))))))
24992                                                            (if (box? v_0)
24993                                                              (let ((start-pos_0
24994                                                                     (begin-unsafe
24995                                                                      (begin
24996                                                                        stream-size_0))))
24997                                                                (begin
24998                                                                  (ser-push!_0
24999                                                                   'tag
25000                                                                   kw2525)
25001                                                                  (let ((v-pos_0
25002                                                                         (begin-unsafe
25003                                                                          (begin
25004                                                                            stream-size_0))))
25005                                                                    (begin
25006                                                                      (ser-push!_0
25007                                                                       (unbox
25008                                                                        v_0))
25009                                                                      (if (quoted?_0
25010                                                                           v-pos_0)
25011                                                                        (begin
25012                                                                          (ser-reset!_0
25013                                                                           start-pos_0)
25014                                                                          (ser-push-optional-quote!_0)
25015                                                                          (ser-push!_0
25016                                                                           'exact
25017                                                                           v_0))
25018                                                                        (void))))))
25019                                                              (if (vector? v_0)
25020                                                                (let ((start-pos_0
25021                                                                       (begin-unsafe
25022                                                                        (begin
25023                                                                          stream-size_0))))
25024                                                                  (begin
25025                                                                    (ser-push!_0
25026                                                                     'tag
25027                                                                     kw2967)
25028                                                                    (begin
25029                                                                      (ser-push!_0
25030                                                                       'exact
25031                                                                       (vector-length
25032                                                                        v_0))
25033                                                                      (let ((all-quoted?_0
25034                                                                             (call-with-values
25035                                                                              (lambda ()
25036                                                                                (begin
25037                                                                                  (check-vector
25038                                                                                   v_0)
25039                                                                                  (values
25040                                                                                   v_0
25041                                                                                   (unsafe-vector-length
25042                                                                                    v_0))))
25043                                                                              (case-lambda
25044                                                                               ((vec_0
25045                                                                                 len_0)
25046                                                                                (begin
25047                                                                                  #f
25048                                                                                  (letrec*
25049                                                                                   ((for-loop_0
25050                                                                                     (|#%name|
25051                                                                                      for-loop
25052                                                                                      (lambda (all-quoted?_0
25053                                                                                               pos_0)
25054                                                                                        (begin
25055                                                                                          (if (unsafe-fx<
25056                                                                                               pos_0
25057                                                                                               len_0)
25058                                                                                            (let ((i_0
25059                                                                                                   (unsafe-vector-ref
25060                                                                                                    vec_0
25061                                                                                                    pos_0)))
25062                                                                                              (let ((all-quoted?_1
25063                                                                                                     (let ((all-quoted?_1
25064                                                                                                            (let ((i-pos_0
25065                                                                                                                   (begin-unsafe
25066                                                                                                                    (begin
25067                                                                                                                      stream-size_0))))
25068                                                                                                              (begin
25069                                                                                                                (ser-push!_0
25070                                                                                                                 i_0)
25071                                                                                                                (if all-quoted?_0
25072                                                                                                                  (quoted?_0
25073                                                                                                                   i-pos_0)
25074                                                                                                                  #f)))))
25075                                                                                                       (values
25076                                                                                                        all-quoted?_1))))
25077                                                                                                (for-loop_0
25078                                                                                                 all-quoted?_1
25079                                                                                                 (unsafe-fx+
25080                                                                                                  1
25081                                                                                                  pos_0))))
25082                                                                                            all-quoted?_0))))))
25083                                                                                   (for-loop_0
25084                                                                                    #t
25085                                                                                    0))))
25086                                                                               (args
25087                                                                                (raise-binding-result-arity-error
25088                                                                                 2
25089                                                                                 args))))))
25090                                                                        (if all-quoted?_0
25091                                                                          (begin
25092                                                                            (ser-reset!_0
25093                                                                             start-pos_0)
25094                                                                            (ser-push-optional-quote!_0)
25095                                                                            (ser-push!_0
25096                                                                             'exact
25097                                                                             v_0))
25098                                                                          (void))))))
25099                                                                (if (hash? v_0)
25100                                                                  (let ((start-pos_0
25101                                                                         (begin-unsafe
25102                                                                          (begin
25103                                                                            stream-size_0))))
25104                                                                    (let ((as-set?_0
25105                                                                           (begin
25106                                                                             (letrec*
25107                                                                              ((for-loop_0
25108                                                                                (|#%name|
25109                                                                                 for-loop
25110                                                                                 (lambda (result_0
25111                                                                                          i_0)
25112                                                                                   (begin
25113                                                                                     (if i_0
25114                                                                                       (let ((val_0
25115                                                                                              (hash-iterate-value
25116                                                                                               v_0
25117                                                                                               i_0)))
25118                                                                                         (let ((result_1
25119                                                                                                (eq?
25120                                                                                                 val_0
25121                                                                                                 #t)))
25122                                                                                           (let ((result_2
25123                                                                                                  (values
25124                                                                                                   result_1)))
25125                                                                                             (if (if (not
25126                                                                                                      (let ((x_0
25127                                                                                                             (list
25128                                                                                                              val_0)))
25129                                                                                                        (not
25130                                                                                                         result_2)))
25131                                                                                                   #t
25132                                                                                                   #f)
25133                                                                                               (for-loop_0
25134                                                                                                result_2
25135                                                                                                (hash-iterate-next
25136                                                                                                 v_0
25137                                                                                                 i_0))
25138                                                                                               result_2))))
25139                                                                                       result_0))))))
25140                                                                              (for-loop_0
25141                                                                               #t
25142                                                                               (hash-iterate-first
25143                                                                                v_0))))))
25144                                                                      (begin
25145                                                                        (ser-push!_0
25146                                                                         'tag
25147                                                                         (if as-set?_0
25148                                                                           (if (hash-eq?
25149                                                                                v_0)
25150                                                                             kw3357
25151                                                                             (if (hash-eqv?
25152                                                                                  v_0)
25153                                                                               kw2333
25154                                                                               kw2473))
25155                                                                           (if (hash-eq?
25156                                                                                v_0)
25157                                                                             kw2796
25158                                                                             (if (hash-eqv?
25159                                                                                  v_0)
25160                                                                               kw3245
25161                                                                               kw2582))))
25162                                                                        (begin
25163                                                                          (ser-push!_0
25164                                                                           'exact
25165                                                                           (hash-count
25166                                                                            v_0))
25167                                                                          (let ((ks_0
25168                                                                                 (sorted-hash-keys
25169                                                                                  v_0)))
25170                                                                            (let ((all-quoted?_0
25171                                                                                   (begin
25172                                                                                     (letrec*
25173                                                                                      ((for-loop_0
25174                                                                                        (|#%name|
25175                                                                                         for-loop
25176                                                                                         (lambda (all-quoted?_0
25177                                                                                                  lst_0)
25178                                                                                           (begin
25179                                                                                             (if (pair?
25180                                                                                                  lst_0)
25181                                                                                               (let ((k_0
25182                                                                                                      (unsafe-car
25183                                                                                                       lst_0)))
25184                                                                                                 (let ((rest_0
25185                                                                                                        (unsafe-cdr
25186                                                                                                         lst_0)))
25187                                                                                                   (let ((all-quoted?_1
25188                                                                                                          (let ((all-quoted?_1
25189                                                                                                                 (let ((k-pos_0
25190                                                                                                                        (begin-unsafe
25191                                                                                                                         (begin
25192                                                                                                                           stream-size_0))))
25193                                                                                                                   (begin
25194                                                                                                                     (ser-push!_0
25195                                                                                                                      k_0)
25196                                                                                                                     (let ((v-pos_0
25197                                                                                                                            (begin-unsafe
25198                                                                                                                             (begin
25199                                                                                                                               stream-size_0))))
25200                                                                                                                       (begin
25201                                                                                                                         (if as-set?_0
25202                                                                                                                           (void)
25203                                                                                                                           (ser-push!_0
25204                                                                                                                            (hash-ref
25205                                                                                                                             v_0
25206                                                                                                                             k_0)))
25207                                                                                                                         (if all-quoted?_0
25208                                                                                                                           (if (quoted?_0
25209                                                                                                                                k-pos_0)
25210                                                                                                                             (if as-set?_0
25211                                                                                                                               as-set?_0
25212                                                                                                                               (quoted?_0
25213                                                                                                                                v-pos_0))
25214                                                                                                                             #f)
25215                                                                                                                           #f)))))))
25216                                                                                                            (values
25217                                                                                                             all-quoted?_1))))
25218                                                                                                     (for-loop_0
25219                                                                                                      all-quoted?_1
25220                                                                                                      rest_0))))
25221                                                                                               all-quoted?_0))))))
25222                                                                                      (for-loop_0
25223                                                                                       #t
25224                                                                                       ks_0)))))
25225                                                                              (if all-quoted?_0
25226                                                                                (begin
25227                                                                                  (ser-reset!_0
25228                                                                                   start-pos_0)
25229                                                                                  (ser-push-optional-quote!_0)
25230                                                                                  (ser-push!_0
25231                                                                                   'exact
25232                                                                                   v_0))
25233                                                                                (void))))))))
25234                                                                  (let ((c3_0
25235                                                                         (prefab-struct-key
25236                                                                          v_0)))
25237                                                                    (if c3_0
25238                                                                      (let ((vec_0
25239                                                                             (struct->vector
25240                                                                              v_0)))
25241                                                                        (let ((start-pos_0
25242                                                                               (begin-unsafe
25243                                                                                (begin
25244                                                                                  stream-size_0))))
25245                                                                          (begin
25246                                                                            (ser-push!_0
25247                                                                             'tag
25248                                                                             kw2931)
25249                                                                            (begin
25250                                                                              (ser-push!_0
25251                                                                               'exact
25252                                                                               c3_0)
25253                                                                              (begin
25254                                                                                (ser-push!_0
25255                                                                                 'exact
25256                                                                                 (sub1
25257                                                                                  (vector-length
25258                                                                                   vec_0)))
25259                                                                                (let ((all-quoted?_0
25260                                                                                       (call-with-values
25261                                                                                        (lambda ()
25262                                                                                          (unsafe-normalise-inputs
25263                                                                                           unsafe-vector-length
25264                                                                                           vec_0
25265                                                                                           1
25266                                                                                           #f
25267                                                                                           1))
25268                                                                                        (case-lambda
25269                                                                                         ((v*_0
25270                                                                                           start*_0
25271                                                                                           stop*_0
25272                                                                                           step*_0)
25273                                                                                          (begin
25274                                                                                            #t
25275                                                                                            (letrec*
25276                                                                                             ((for-loop_0
25277                                                                                               (|#%name|
25278                                                                                                for-loop
25279                                                                                                (lambda (all-quoted?_0
25280                                                                                                         idx_0)
25281                                                                                                  (begin
25282                                                                                                    (if (unsafe-fx<
25283                                                                                                         idx_0
25284                                                                                                         stop*_0)
25285                                                                                                      (let ((i_0
25286                                                                                                             (unsafe-vector-ref
25287                                                                                                              v*_0
25288                                                                                                              idx_0)))
25289                                                                                                        (let ((all-quoted?_1
25290                                                                                                               (let ((all-quoted?_1
25291                                                                                                                      (let ((i-pos_0
25292                                                                                                                             (begin-unsafe
25293                                                                                                                              (begin
25294                                                                                                                                stream-size_0))))
25295                                                                                                                        (begin
25296                                                                                                                          (ser-push!_0
25297                                                                                                                           i_0)
25298                                                                                                                          (if all-quoted?_0
25299                                                                                                                            (quoted?_0
25300                                                                                                                             i-pos_0)
25301                                                                                                                            #f)))))
25302                                                                                                                 (values
25303                                                                                                                  all-quoted?_1))))
25304                                                                                                          (for-loop_0
25305                                                                                                           all-quoted?_1
25306                                                                                                           (unsafe-fx+
25307                                                                                                            idx_0
25308                                                                                                            1))))
25309                                                                                                      all-quoted?_0))))))
25310                                                                                             (for-loop_0
25311                                                                                              #t
25312                                                                                              start*_0))))
25313                                                                                         (args
25314                                                                                          (raise-binding-result-arity-error
25315                                                                                           4
25316                                                                                           args))))))
25317                                                                                  (if all-quoted?_0
25318                                                                                    (begin
25319                                                                                      (ser-reset!_0
25320                                                                                       start-pos_0)
25321                                                                                      (ser-push-optional-quote!_0)
25322                                                                                      (ser-push!_0
25323                                                                                       'exact
25324                                                                                       v_0))
25325                                                                                    (void))))))))
25326                                                                      (if (srcloc?
25327                                                                           v_0)
25328                                                                        (if (path?
25329                                                                             (srcloc-source
25330                                                                              v_0))
25331                                                                          (begin
25332                                                                            (ser-push-optional-quote!_0)
25333                                                                            (ser-push!_0
25334                                                                             'exact
25335                                                                             v_0))
25336                                                                          (begin
25337                                                                            (ser-push!_0
25338                                                                             'tag
25339                                                                             kw2496)
25340                                                                            (ser-push!_0
25341                                                                             (srcloc-source
25342                                                                              v_0))
25343                                                                            (ser-push!_0
25344                                                                             (srcloc-line
25345                                                                              v_0))
25346                                                                            (ser-push!_0
25347                                                                             (srcloc-column
25348                                                                              v_0))
25349                                                                            (ser-push!_0
25350                                                                             (srcloc-position
25351                                                                              v_0))
25352                                                                            (ser-push!_0
25353                                                                             (srcloc-span
25354                                                                              v_0))))
25355                                                                        (begin
25356                                                                          (ser-push-optional-quote!_0)
25357                                                                          (ser-push!_0
25358                                                                           'exact
25359                                                                           v_0)))))))))))))))))
25360                                            (ser-push-optional-quote!_0
25361                                             (|#%name|
25362                                              ser-push-optional-quote!
25363                                              (lambda () (begin (void))))))
25364                                           (let ((ser-shell!_0
25365                                                  (|#%name|
25366                                                   ser-shell!
25367                                                   (lambda (v_0)
25368                                                     (begin
25369                                                       (if (serialize-fill!?
25370                                                            v_0)
25371                                                         (|#%app|
25372                                                          (serialize-ref v_0)
25373                                                          v_0
25374                                                          ser-push!_0
25375                                                          state_0)
25376                                                         (if (box? v_0)
25377                                                           (ser-push!_0
25378                                                            'tag
25379                                                            kw2525)
25380                                                           (if (vector? v_0)
25381                                                             (begin
25382                                                               (ser-push!_0
25383                                                                'tag
25384                                                                kw2967)
25385                                                               (ser-push!_0
25386                                                                'exact
25387                                                                (vector-length
25388                                                                 v_0)))
25389                                                             (if (hash? v_0)
25390                                                               (ser-push!_0
25391                                                                'tag
25392                                                                (if (hash-eq?
25393                                                                     v_0)
25394                                                                  kw2796
25395                                                                  (if (hash-eqv?
25396                                                                       v_0)
25397                                                                    kw3245
25398                                                                    kw2582)))
25399                                                               (error
25400                                                                'ser-shell
25401                                                                "unknown mutable: ~e"
25402                                                                v_0))))))))))
25403                                             (let ((ser-shell-fill!_0
25404                                                    (|#%name|
25405                                                     ser-shell-fill!
25406                                                     (lambda (v_0)
25407                                                       (begin
25408                                                         (if (serialize-fill!?
25409                                                              v_0)
25410                                                           (|#%app|
25411                                                            (serialize-fill!-ref
25412                                                             v_0)
25413                                                            v_0
25414                                                            ser-push!_0
25415                                                            state_0)
25416                                                           (if (box? v_0)
25417                                                             (begin
25418                                                               (ser-push!_0
25419                                                                'tag
25420                                                                kw2531)
25421                                                               (ser-push!_0
25422                                                                (unbox v_0)))
25423                                                             (if (vector? v_0)
25424                                                               (begin
25425                                                                 (ser-push!_0
25426                                                                  'tag
25427                                                                  kw3046)
25428                                                                 (ser-push!_0
25429                                                                  'exact
25430                                                                  (vector-length
25431                                                                   v_0))
25432                                                                 (call-with-values
25433                                                                  (lambda ()
25434                                                                    (begin
25435                                                                      (check-vector
25436                                                                       v_0)
25437                                                                      (values
25438                                                                       v_0
25439                                                                       (unsafe-vector-length
25440                                                                        v_0))))
25441                                                                  (case-lambda
25442                                                                   ((vec_0
25443                                                                     len_0)
25444                                                                    (begin
25445                                                                      #f
25446                                                                      (letrec*
25447                                                                       ((for-loop_0
25448                                                                         (|#%name|
25449                                                                          for-loop
25450                                                                          (lambda (pos_0)
25451                                                                            (begin
25452                                                                              (if (unsafe-fx<
25453                                                                                   pos_0
25454                                                                                   len_0)
25455                                                                                (let ((v_1
25456                                                                                       (unsafe-vector-ref
25457                                                                                        vec_0
25458                                                                                        pos_0)))
25459                                                                                  (begin
25460                                                                                    (ser-push!_0
25461                                                                                     v_1)
25462                                                                                    (for-loop_0
25463                                                                                     (unsafe-fx+
25464                                                                                      1
25465                                                                                      pos_0))))
25466                                                                                (values)))))))
25467                                                                       (for-loop_0
25468                                                                        0))))
25469                                                                   (args
25470                                                                    (raise-binding-result-arity-error
25471                                                                     2
25472                                                                     args))))
25473                                                                 (void))
25474                                                               (if (hash? v_0)
25475                                                                 (begin
25476                                                                   (ser-push!_0
25477                                                                    'tag
25478                                                                    kw2194)
25479                                                                   (begin
25480                                                                     (ser-push!_0
25481                                                                      'exact
25482                                                                      (hash-count
25483                                                                       v_0))
25484                                                                     (let ((ks_0
25485                                                                            (sorted-hash-keys
25486                                                                             v_0)))
25487                                                                       (begin
25488                                                                         (begin
25489                                                                           (letrec*
25490                                                                            ((for-loop_0
25491                                                                              (|#%name|
25492                                                                               for-loop
25493                                                                               (lambda (lst_0)
25494                                                                                 (begin
25495                                                                                   (if (pair?
25496                                                                                        lst_0)
25497                                                                                     (let ((k_0
25498                                                                                            (unsafe-car
25499                                                                                             lst_0)))
25500                                                                                       (let ((rest_0
25501                                                                                              (unsafe-cdr
25502                                                                                               lst_0)))
25503                                                                                         (begin
25504                                                                                           (begin
25505                                                                                             (ser-push!_0
25506                                                                                              k_0)
25507                                                                                             (ser-push!_0
25508                                                                                              (hash-ref
25509                                                                                               v_0
25510                                                                                               k_0)))
25511                                                                                           (for-loop_0
25512                                                                                            rest_0))))
25513                                                                                     (values)))))))
25514                                                                            (for-loop_0
25515                                                                             ks_0)))
25516                                                                         (void)))))
25517                                                                 (error
25518                                                                  'ser-shell-fill
25519                                                                  "unknown mutable: ~e"
25520                                                                  v_0))))))))))
25521                                               (let ((rev-mutables_0
25522                                                      (begin
25523                                                        (letrec*
25524                                                         ((for-loop_0
25525                                                           (|#%name|
25526                                                            for-loop
25527                                                            (lambda (table_0
25528                                                                     i_0)
25529                                                              (begin
25530                                                                (if i_0
25531                                                                  (call-with-values
25532                                                                   (lambda ()
25533                                                                     (hash-iterate-key+value
25534                                                                      mutables_0
25535                                                                      i_0))
25536                                                                   (case-lambda
25537                                                                    ((k_0 v_0)
25538                                                                     (let ((table_1
25539                                                                            (let ((table_1
25540                                                                                   (call-with-values
25541                                                                                    (lambda ()
25542                                                                                      (values
25543                                                                                       v_0
25544                                                                                       k_0))
25545                                                                                    (case-lambda
25546                                                                                     ((key_0
25547                                                                                       val_0)
25548                                                                                      (hash-set
25549                                                                                       table_0
25550                                                                                       key_0
25551                                                                                       val_0))
25552                                                                                     (args
25553                                                                                      (raise-binding-result-arity-error
25554                                                                                       2
25555                                                                                       args))))))
25556                                                                              (values
25557                                                                               table_1))))
25558                                                                       (for-loop_0
25559                                                                        table_1
25560                                                                        (hash-iterate-next
25561                                                                         mutables_0
25562                                                                         i_0))))
25563                                                                    (args
25564                                                                     (raise-binding-result-arity-error
25565                                                                      2
25566                                                                      args))))
25567                                                                  table_0))))))
25568                                                         (for-loop_0
25569                                                          hash2589
25570                                                          (hash-iterate-first
25571                                                           mutables_0))))))
25572                                                 (let ((mutable-shell-bindings_0
25573                                                        (begin
25574                                                          (begin
25575                                                            (let ((end_0
25576                                                                   (hash-count
25577                                                                    mutables_0)))
25578                                                              (begin
25579                                                                (letrec*
25580                                                                 ((for-loop_0
25581                                                                   (|#%name|
25582                                                                    for-loop
25583                                                                    (lambda (pos_0)
25584                                                                      (begin
25585                                                                        (if (<
25586                                                                             pos_0
25587                                                                             end_0)
25588                                                                          (begin
25589                                                                            (ser-shell!_0
25590                                                                             (hash-ref
25591                                                                              rev-mutables_0
25592                                                                              pos_0))
25593                                                                            (for-loop_0
25594                                                                             (+
25595                                                                              pos_0
25596                                                                              1)))
25597                                                                          (values)))))))
25598                                                                 (for-loop_0
25599                                                                  0))))
25600                                                            (void))
25601                                                          (reap-stream!_0))))
25602                                                   (let ((rev-shares_0
25603                                                          (begin
25604                                                            (letrec*
25605                                                             ((for-loop_0
25606                                                               (|#%name|
25607                                                                for-loop
25608                                                                (lambda (table_0
25609                                                                         i_0)
25610                                                                  (begin
25611                                                                    (if i_0
25612                                                                      (let ((obj_0
25613                                                                             (hash-iterate-key
25614                                                                              shares_0
25615                                                                              i_0)))
25616                                                                        (let ((table_1
25617                                                                               (let ((table_1
25618                                                                                      (call-with-values
25619                                                                                       (lambda ()
25620                                                                                         (values
25621                                                                                          (hash-ref
25622                                                                                           share-step-positions_0
25623                                                                                           (hash-ref
25624                                                                                            objs_0
25625                                                                                            obj_0))
25626                                                                                          obj_0))
25627                                                                                       (case-lambda
25628                                                                                        ((key_0
25629                                                                                          val_0)
25630                                                                                         (hash-set
25631                                                                                          table_0
25632                                                                                          key_0
25633                                                                                          val_0))
25634                                                                                        (args
25635                                                                                         (raise-binding-result-arity-error
25636                                                                                          2
25637                                                                                          args))))))
25638                                                                                 (values
25639                                                                                  table_1))))
25640                                                                          (for-loop_0
25641                                                                           table_1
25642                                                                           (hash-iterate-next
25643                                                                            shares_0
25644                                                                            i_0))))
25645                                                                      table_0))))))
25646                                                             (for-loop_0
25647                                                              hash2589
25648                                                              (hash-iterate-first
25649                                                               shares_0))))))
25650                                                     (let ((shared-bindings_0
25651                                                            (begin
25652                                                              (begin
25653                                                                (let ((end_0
25654                                                                       (+
25655                                                                        num-mutables_0
25656                                                                        (hash-count
25657                                                                         shares_0))))
25658                                                                  (begin
25659                                                                    (letrec*
25660                                                                     ((for-loop_0
25661                                                                       (|#%name|
25662                                                                        for-loop
25663                                                                        (lambda (pos_0)
25664                                                                          (begin
25665                                                                            (if (<
25666                                                                                 pos_0
25667                                                                                 end_0)
25668                                                                              (begin
25669                                                                                (ser-push-encoded!_0
25670                                                                                 (hash-ref
25671                                                                                  rev-shares_0
25672                                                                                  pos_0))
25673                                                                                (for-loop_0
25674                                                                                 (+
25675                                                                                  pos_0
25676                                                                                  1)))
25677                                                                              (values)))))))
25678                                                                     (for-loop_0
25679                                                                      num-mutables_0))))
25680                                                                (void))
25681                                                              (reap-stream!_0))))
25682                                                       (let ((mutable-fills_0
25683                                                              (begin
25684                                                                (begin
25685                                                                  (let ((end_0
25686                                                                         (hash-count
25687                                                                          mutables_0)))
25688                                                                    (begin
25689                                                                      (letrec*
25690                                                                       ((for-loop_0
25691                                                                         (|#%name|
25692                                                                          for-loop
25693                                                                          (lambda (pos_0)
25694                                                                            (begin
25695                                                                              (if (<
25696                                                                                   pos_0
25697                                                                                   end_0)
25698                                                                                (begin
25699                                                                                  (ser-shell-fill!_0
25700                                                                                   (hash-ref
25701                                                                                    rev-mutables_0
25702                                                                                    pos_0))
25703                                                                                  (for-loop_0
25704                                                                                   (+
25705                                                                                    pos_0
25706                                                                                    1)))
25707                                                                                (values)))))))
25708                                                                       (for-loop_0
25709                                                                        0))))
25710                                                                  (void))
25711                                                                (reap-stream!_0))))
25712                                                         (let ((result_0
25713                                                                (begin
25714                                                                  (ser-push!_0
25715                                                                   v16_0)
25716                                                                  (reap-stream!_0))))
25717                                                           (if as-data?7_0
25718                                                             (let ((app_0
25719                                                                    (hash-count
25720                                                                     mutables_0)))
25721                                                               (vector
25722                                                                app_0
25723                                                                mutable-shell-bindings_0
25724                                                                (hash-count
25725                                                                 shares_0)
25726                                                                shared-bindings_0
25727                                                                mutable-fills_0
25728                                                                result_0))
25729                                                             (let ((finish_0
25730                                                                    (|#%name|
25731                                                                     finish
25732                                                                     (lambda (mutable-shell-bindings-expr_0
25733                                                                              shared-bindings-expr_0
25734                                                                              mutable-fills-expr_0
25735                                                                              result-expr_0)
25736                                                                       (begin
25737                                                                         (let ((app_0
25738                                                                                (if syntax-support?8_0
25739                                                                                  inspector-id
25740                                                                                  #f)))
25741                                                                           (let ((app_1
25742                                                                                  (if syntax-support?8_0
25743                                                                                    bulk-binding-registry-id
25744                                                                                    #f)))
25745                                                                             (let ((app_2
25746                                                                                    (list
25747                                                                                     'quote
25748                                                                                     (hash-count
25749                                                                                      mutables_0))))
25750                                                                               (list
25751                                                                                'deserialize
25752                                                                                mpi-vector-id
25753                                                                                app_0
25754                                                                                app_1
25755                                                                                app_2
25756                                                                                mutable-shell-bindings-expr_0
25757                                                                                (list
25758                                                                                 'quote
25759                                                                                 (hash-count
25760                                                                                  shares_0))
25761                                                                                shared-bindings-expr_0
25762                                                                                mutable-fills-expr_0
25763                                                                                result-expr_0)))))))))
25764                                                               (let ((app_0
25765                                                                      (list
25766                                                                       (list
25767                                                                        '(data)
25768                                                                        (list
25769                                                                         'quote
25770                                                                         (vector
25771                                                                          mutable-shell-bindings_0
25772                                                                          shared-bindings_0
25773                                                                          mutable-fills_0
25774                                                                          result_0))))))
25775                                                                 (list
25776                                                                  'let-values
25777                                                                  app_0
25778                                                                  (finish_0
25779                                                                   '(unsafe-vector*-ref
25780                                                                     data
25781                                                                     0)
25782                                                                   '(unsafe-vector*-ref
25783                                                                     data
25784                                                                     1)
25785                                                                   '(unsafe-vector*-ref
25786                                                                     data
25787                                                                     2)
25788                                                                   '(unsafe-vector*-ref
25789                                                                     data
25790                                                                     3)))))))))))))))))))))))))))))))))))))
25791(define sorted-hash-keys
25792  (lambda (ht_0)
25793    (let ((ks_0 (hash-keys ht_0)))
25794      (if (null? ks_0)
25795        ks_0
25796        (if (null? (cdr ks_0))
25797          ks_0
25798          (if (andmap_2344 symbol? ks_0)
25799            (sort.1 #f #f ks_0 symbol<?)
25800            (if (andmap_2344 scope? ks_0)
25801              (let ((scope<?33_0 scope<?)) (sort.1 #f #f ks_0 scope<?33_0))
25802              (if (andmap_2344 shifted-multi-scope? ks_0)
25803                (sort.1 #f #f ks_0 shifted-multi-scope<?)
25804                (if (andmap_2344 real? ks_0)
25805                  (sort.1 #f #f ks_0 <)
25806                  ks_0)))))))))
25807(define deserialize
25808  (lambda (mpis_0
25809           inspector_0
25810           bulk-binding-registry_0
25811           num-mutables_0
25812           mutable-vec_0
25813           num-shared_0
25814           shared-vec_0
25815           mutable-fill-vec_0
25816           result-vec_0)
25817    (let ((shared_0 (make-vector (+ num-mutables_0 num-shared_0) 'uninit)))
25818      (begin
25819        (begin
25820          (letrec*
25821           ((for-loop_0
25822             (|#%name|
25823              for-loop
25824              (lambda (pos_0 pos_1)
25825                (begin
25826                  (if (< pos_1 num-mutables_0)
25827                    (let ((pos_2
25828                           (let ((pos_2
25829                                  (call-with-values
25830                                   (lambda ()
25831                                     (decode-shell
25832                                      mutable-vec_0
25833                                      pos_0
25834                                      mpis_0
25835                                      inspector_0
25836                                      bulk-binding-registry_0
25837                                      shared_0))
25838                                   (case-lambda
25839                                    ((d_0 next-pos_0)
25840                                     (begin
25841                                       (vector-set! shared_0 pos_1 d_0)
25842                                       next-pos_0))
25843                                    (args
25844                                     (raise-binding-result-arity-error
25845                                      2
25846                                      args))))))
25847                             (values pos_2))))
25848                      (for-loop_0 pos_2 (+ pos_1 1)))
25849                    pos_0))))))
25850           (for-loop_0 0 0)))
25851        (begin
25852          (let ((end_0 (+ num-mutables_0 num-shared_0)))
25853            (begin
25854              (letrec*
25855               ((for-loop_0
25856                 (|#%name|
25857                  for-loop
25858                  (lambda (pos_0 pos_1)
25859                    (begin
25860                      (if (< pos_1 end_0)
25861                        (let ((pos_2
25862                               (let ((pos_2
25863                                      (call-with-values
25864                                       (lambda ()
25865                                         (decode
25866                                          shared-vec_0
25867                                          pos_0
25868                                          mpis_0
25869                                          inspector_0
25870                                          bulk-binding-registry_0
25871                                          shared_0))
25872                                       (case-lambda
25873                                        ((d_0 next-pos_0)
25874                                         (begin
25875                                           (vector-set! shared_0 pos_1 d_0)
25876                                           next-pos_0))
25877                                        (args
25878                                         (raise-binding-result-arity-error
25879                                          2
25880                                          args))))))
25881                                 (values pos_2))))
25882                          (for-loop_0 pos_2 (+ pos_1 1)))
25883                        pos_0))))))
25884               (for-loop_0 0 num-mutables_0))))
25885          (begin
25886            (let ((start_0 0))
25887              (let ((end_0 num-mutables_0))
25888                (let ((inc_0 1))
25889                  (call-with-values
25890                   (lambda ()
25891                     (begin
25892                       (check-vector shared_0)
25893                       (values shared_0 (unsafe-vector-length shared_0))))
25894                   (case-lambda
25895                    ((vec_0 len_0)
25896                     (let ((inc_1 inc_0) (end_1 end_0) (start_1 start_0))
25897                       (begin
25898                         #f
25899                         (letrec*
25900                          ((for-loop_0
25901                            (|#%name|
25902                             for-loop
25903                             (lambda (pos_0 pos_1 pos_2)
25904                               (begin
25905                                 (if (if (< pos_1 end_1)
25906                                       (unsafe-fx< pos_2 len_0)
25907                                       #f)
25908                                   (let ((v_0 (unsafe-vector-ref vec_0 pos_2)))
25909                                     (let ((pos_3
25910                                            (let ((pos_3
25911                                                   (decode-fill!
25912                                                    v_0
25913                                                    mutable-fill-vec_0
25914                                                    pos_0
25915                                                    mpis_0
25916                                                    inspector_0
25917                                                    bulk-binding-registry_0
25918                                                    shared_0)))
25919                                              (values pos_3))))
25920                                       (for-loop_0
25921                                        pos_3
25922                                        (+ pos_1 inc_1)
25923                                        (unsafe-fx+ 1 pos_2))))
25924                                   pos_0))))))
25925                          (for-loop_0 0 start_1 0)))))
25926                    (args (raise-binding-result-arity-error 2 args)))))))
25927            (call-with-values
25928             (lambda ()
25929               (decode
25930                result-vec_0
25931                0
25932                mpis_0
25933                inspector_0
25934                bulk-binding-registry_0
25935                shared_0))
25936             (case-lambda
25937              ((result_0 done-pos_0) result_0)
25938              (args (raise-binding-result-arity-error 2 args))))))))))
25939(define deserialize-data
25940  (lambda (mpis_0 inspector_0 bulk-binding-registry_0 data_0)
25941    (begin
25942      (if (if (vector? data_0) (= 6 (vector-length data_0)) #f)
25943        (void)
25944        (error 'syntax-deserialize "ill-formed serialization"))
25945      (let ((app_0 (vector-ref data_0 0)))
25946        (let ((app_1 (vector-ref data_0 1)))
25947          (let ((app_2 (vector-ref data_0 2)))
25948            (let ((app_3 (vector-ref data_0 3)))
25949              (let ((app_4 (vector-ref data_0 4)))
25950                (deserialize
25951                 mpis_0
25952                 inspector_0
25953                 bulk-binding-registry_0
25954                 app_0
25955                 app_1
25956                 app_2
25957                 app_3
25958                 app_4
25959                 (vector-ref data_0 5))))))))))
25960(define decode-shell
25961  (lambda (vec_0 pos_0 mpis_0 inspector_0 bulk-binding-registry_0 shared_0)
25962    (let ((tmp_0 (unsafe-vector*-ref vec_0 pos_0)))
25963      (if (eq? tmp_0 kw2525)
25964        (let ((app_0 (box #f))) (values app_0 (add1 pos_0)))
25965        (if (eq? tmp_0 kw2967)
25966          (let ((app_0 (make-vector (unsafe-vector*-ref vec_0 (add1 pos_0)))))
25967            (values app_0 (+ pos_0 2)))
25968          (if (eq? tmp_0 kw2582)
25969            (let ((app_0 (make-hasheq))) (values app_0 (add1 pos_0)))
25970            (if (eq? tmp_0 kw2796)
25971              (let ((app_0 (make-hasheq))) (values app_0 (add1 pos_0)))
25972              (if (eq? tmp_0 kw3245)
25973                (let ((app_0 (make-hasheqv))) (values app_0 (add1 pos_0)))
25974                (decode
25975                 vec_0
25976                 pos_0
25977                 mpis_0
25978                 inspector_0
25979                 bulk-binding-registry_0
25980                 shared_0)))))))))
25981(define decode
25982  (lambda (vec_0 pos_0 mpis_0 inspector_0 bulk-binding-registry_0 shared_0)
25983    (let ((tmp_0 (unsafe-vector*-ref vec_0 pos_0)))
25984      (let ((index_0
25985             (if (keyword? tmp_0)
25986               (hash-ref hash2355 tmp_0 (lambda () 0))
25987               0)))
25988        (if (unsafe-fx< index_0 15)
25989          (if (unsafe-fx< index_0 7)
25990            (if (unsafe-fx< index_0 3)
25991              (if (unsafe-fx< index_0 1)
25992                (let ((app_0 (unsafe-vector*-ref vec_0 pos_0)))
25993                  (values app_0 (add1 pos_0)))
25994                (if (unsafe-fx< index_0 2)
25995                  (let ((app_0
25996                         (unsafe-vector*-ref
25997                          shared_0
25998                          (unsafe-vector*-ref vec_0 (add1 pos_0)))))
25999                    (values app_0 (+ pos_0 2)))
26000                  (values inspector_0 (add1 pos_0))))
26001              (if (unsafe-fx< index_0 4)
26002                (values bulk-binding-registry_0 (add1 pos_0))
26003                (if (unsafe-fx< index_0 5)
26004                  (call-with-values
26005                   (lambda ()
26006                     (decode
26007                      vec_0
26008                      (add1 pos_0)
26009                      mpis_0
26010                      inspector_0
26011                      bulk-binding-registry_0
26012                      shared_0))
26013                   (case-lambda
26014                    ((content_0 next-pos_0)
26015                     (call-with-values
26016                      (lambda ()
26017                        (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_0)))
26018                          (if (exact-integer? i_0)
26019                            (let ((app_0 (unsafe-vector*-ref shared_0 i_0)))
26020                              (values app_0 (add1 next-pos_0)))
26021                            (decode
26022                             vec_0
26023                             next-pos_0
26024                             mpis_0
26025                             inspector_0
26026                             bulk-binding-registry_0
26027                             shared_0))))
26028                      (case-lambda
26029                       ((context_0 next-pos_1)
26030                        (call-with-values
26031                         (lambda ()
26032                           (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_1)))
26033                             (if (exact-integer? i_0)
26034                               (let ((app_0 (unsafe-vector*-ref shared_0 i_0)))
26035                                 (values app_0 (add1 next-pos_1)))
26036                               (decode
26037                                vec_0
26038                                next-pos_1
26039                                mpis_0
26040                                inspector_0
26041                                bulk-binding-registry_0
26042                                shared_0))))
26043                         (case-lambda
26044                          ((srcloc_0 next-pos_2)
26045                           (values
26046                            (deserialize-syntax
26047                             content_0
26048                             context_0
26049                             srcloc_0
26050                             #f
26051                             #f
26052                             inspector_0)
26053                            next-pos_2))
26054                          (args (raise-binding-result-arity-error 2 args)))))
26055                       (args (raise-binding-result-arity-error 2 args)))))
26056                    (args (raise-binding-result-arity-error 2 args))))
26057                  (if (unsafe-fx< index_0 6)
26058                    (call-with-values
26059                     (lambda ()
26060                       (decode
26061                        vec_0
26062                        (add1 pos_0)
26063                        mpis_0
26064                        inspector_0
26065                        bulk-binding-registry_0
26066                        shared_0))
26067                     (case-lambda
26068                      ((content_0 next-pos_0)
26069                       (call-with-values
26070                        (lambda ()
26071                          (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_0)))
26072                            (if (exact-integer? i_0)
26073                              (let ((app_0 (unsafe-vector*-ref shared_0 i_0)))
26074                                (values app_0 (add1 next-pos_0)))
26075                              (decode
26076                               vec_0
26077                               next-pos_0
26078                               mpis_0
26079                               inspector_0
26080                               bulk-binding-registry_0
26081                               shared_0))))
26082                        (case-lambda
26083                         ((context_0 next-pos_1)
26084                          (call-with-values
26085                           (lambda ()
26086                             (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_1)))
26087                               (if (exact-integer? i_0)
26088                                 (let ((app_0
26089                                        (unsafe-vector*-ref shared_0 i_0)))
26090                                   (values app_0 (add1 next-pos_1)))
26091                                 (decode
26092                                  vec_0
26093                                  next-pos_1
26094                                  mpis_0
26095                                  inspector_0
26096                                  bulk-binding-registry_0
26097                                  shared_0))))
26098                           (case-lambda
26099                            ((srcloc_0 next-pos_2)
26100                             (values
26101                              (deserialize-datum->syntax
26102                               content_0
26103                               context_0
26104                               srcloc_0
26105                               inspector_0)
26106                              next-pos_2))
26107                            (args (raise-binding-result-arity-error 2 args)))))
26108                         (args (raise-binding-result-arity-error 2 args)))))
26109                      (args (raise-binding-result-arity-error 2 args))))
26110                    (call-with-values
26111                     (lambda ()
26112                       (decode
26113                        vec_0
26114                        (add1 pos_0)
26115                        mpis_0
26116                        inspector_0
26117                        bulk-binding-registry_0
26118                        shared_0))
26119                     (case-lambda
26120                      ((content_0 next-pos_0)
26121                       (call-with-values
26122                        (lambda ()
26123                          (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_0)))
26124                            (if (exact-integer? i_0)
26125                              (let ((app_0 (unsafe-vector*-ref shared_0 i_0)))
26126                                (values app_0 (add1 next-pos_0)))
26127                              (decode
26128                               vec_0
26129                               next-pos_0
26130                               mpis_0
26131                               inspector_0
26132                               bulk-binding-registry_0
26133                               shared_0))))
26134                        (case-lambda
26135                         ((context_0 next-pos_1)
26136                          (call-with-values
26137                           (lambda ()
26138                             (let ((i_0 (unsafe-vector*-ref vec_0 next-pos_1)))
26139                               (if (exact-integer? i_0)
26140                                 (let ((app_0
26141                                        (unsafe-vector*-ref shared_0 i_0)))
26142                                   (values app_0 (add1 next-pos_1)))
26143                                 (decode
26144                                  vec_0
26145                                  next-pos_1
26146                                  mpis_0
26147                                  inspector_0
26148                                  bulk-binding-registry_0
26149                                  shared_0))))
26150                           (case-lambda
26151                            ((srcloc_0 next-pos_2)
26152                             (call-with-values
26153                              (lambda ()
26154                                (decode
26155                                 vec_0
26156                                 next-pos_2
26157                                 mpis_0
26158                                 inspector_0
26159                                 bulk-binding-registry_0
26160                                 shared_0))
26161                              (case-lambda
26162                               ((props_0 next-pos_3)
26163                                (call-with-values
26164                                 (lambda ()
26165                                   (decode
26166                                    vec_0
26167                                    next-pos_3
26168                                    mpis_0
26169                                    inspector_0
26170                                    bulk-binding-registry_0
26171                                    shared_0))
26172                                 (case-lambda
26173                                  ((tamper_0 next-pos_4)
26174                                   (values
26175                                    (deserialize-syntax
26176                                     content_0
26177                                     context_0
26178                                     srcloc_0
26179                                     props_0
26180                                     tamper_0
26181                                     inspector_0)
26182                                    next-pos_4))
26183                                  (args
26184                                   (raise-binding-result-arity-error
26185                                    2
26186                                    args)))))
26187                               (args
26188                                (raise-binding-result-arity-error 2 args)))))
26189                            (args (raise-binding-result-arity-error 2 args)))))
26190                         (args (raise-binding-result-arity-error 2 args)))))
26191                      (args (raise-binding-result-arity-error 2 args))))))))
26192            (if (unsafe-fx< index_0 10)
26193              (if (unsafe-fx< index_0 8)
26194                (call-with-values
26195                 (lambda ()
26196                   (decode
26197                    vec_0
26198                    (add1 pos_0)
26199                    mpis_0
26200                    inspector_0
26201                    bulk-binding-registry_0
26202                    shared_0))
26203                 (case-lambda
26204                  ((source_0 next-pos_0)
26205                   (call-with-values
26206                    (lambda ()
26207                      (decode
26208                       vec_0
26209                       next-pos_0
26210                       mpis_0
26211                       inspector_0
26212                       bulk-binding-registry_0
26213                       shared_0))
26214                    (case-lambda
26215                     ((line_0 next-pos_1)
26216                      (call-with-values
26217                       (lambda ()
26218                         (decode
26219                          vec_0
26220                          next-pos_1
26221                          mpis_0
26222                          inspector_0
26223                          bulk-binding-registry_0
26224                          shared_0))
26225                       (case-lambda
26226                        ((column_0 next-pos_2)
26227                         (call-with-values
26228                          (lambda ()
26229                            (decode
26230                             vec_0
26231                             next-pos_2
26232                             mpis_0
26233                             inspector_0
26234                             bulk-binding-registry_0
26235                             shared_0))
26236                          (case-lambda
26237                           ((position_0 next-pos_3)
26238                            (call-with-values
26239                             (lambda ()
26240                               (decode
26241                                vec_0
26242                                next-pos_3
26243                                mpis_0
26244                                inspector_0
26245                                bulk-binding-registry_0
26246                                shared_0))
26247                             (case-lambda
26248                              ((span_0 next-pos_4)
26249                               (values
26250                                (unsafe-make-srcloc
26251                                 source_0
26252                                 line_0
26253                                 column_0
26254                                 position_0
26255                                 span_0)
26256                                next-pos_4))
26257                              (args
26258                               (raise-binding-result-arity-error 2 args)))))
26259                           (args (raise-binding-result-arity-error 2 args)))))
26260                        (args (raise-binding-result-arity-error 2 args)))))
26261                     (args (raise-binding-result-arity-error 2 args)))))
26262                  (args (raise-binding-result-arity-error 2 args))))
26263                (if (unsafe-fx< index_0 9)
26264                  (let ((app_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
26265                    (values app_0 (+ pos_0 2)))
26266                  (let ((app_0
26267                         (unsafe-vector*-ref
26268                          mpis_0
26269                          (unsafe-vector*-ref vec_0 (add1 pos_0)))))
26270                    (values app_0 (+ pos_0 2)))))
26271              (if (unsafe-fx< index_0 12)
26272                (if (unsafe-fx< index_0 11)
26273                  (call-with-values
26274                   (lambda ()
26275                     (decode
26276                      vec_0
26277                      (add1 pos_0)
26278                      mpis_0
26279                      inspector_0
26280                      bulk-binding-registry_0
26281                      shared_0))
26282                   (case-lambda
26283                    ((v_0 next-pos_0) (values (box-immutable v_0) next-pos_0))
26284                    (args (raise-binding-result-arity-error 2 args))))
26285                  (call-with-values
26286                   (lambda ()
26287                     (decode
26288                      vec_0
26289                      (add1 pos_0)
26290                      mpis_0
26291                      inspector_0
26292                      bulk-binding-registry_0
26293                      shared_0))
26294                   (case-lambda
26295                    ((a_0 next-pos_0)
26296                     (call-with-values
26297                      (lambda ()
26298                        (decode
26299                         vec_0
26300                         next-pos_0
26301                         mpis_0
26302                         inspector_0
26303                         bulk-binding-registry_0
26304                         shared_0))
26305                      (case-lambda
26306                       ((d_0 next-pos_1) (values (cons a_0 d_0) next-pos_1))
26307                       (args (raise-binding-result-arity-error 2 args)))))
26308                    (args (raise-binding-result-arity-error 2 args)))))
26309                (if (unsafe-fx< index_0 13)
26310                  (let ((len_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
26311                    (let ((r_0 (make-vector len_0)))
26312                      (let ((next-pos_0
26313                             (begin
26314                               (letrec*
26315                                ((for-loop_0
26316                                  (|#%name|
26317                                   for-loop
26318                                   (lambda (pos_1 pos_2)
26319                                     (begin
26320                                       (if (< pos_2 len_0)
26321                                         (let ((pos_3
26322                                                (let ((pos_3
26323                                                       (call-with-values
26324                                                        (lambda ()
26325                                                          (call-with-values
26326                                                           (lambda ()
26327                                                             (decode
26328                                                              vec_0
26329                                                              pos_1
26330                                                              mpis_0
26331                                                              inspector_0
26332                                                              bulk-binding-registry_0
26333                                                              shared_0))
26334                                                           (case-lambda
26335                                                            ((v_0 next-pos_0)
26336                                                             (values
26337                                                              v_0
26338                                                              next-pos_0))
26339                                                            (args
26340                                                             (raise-binding-result-arity-error
26341                                                              2
26342                                                              args)))))
26343                                                        (case-lambda
26344                                                         ((v_0 next-pos_0)
26345                                                          (begin
26346                                                            (vector-set!
26347                                                             r_0
26348                                                             pos_2
26349                                                             v_0)
26350                                                            next-pos_0))
26351                                                         (args
26352                                                          (raise-binding-result-arity-error
26353                                                           2
26354                                                           args))))))
26355                                                  (values pos_3))))
26356                                           (for-loop_0 pos_3 (+ pos_2 1)))
26357                                         pos_1))))))
26358                                (for-loop_0 (+ pos_0 2) 0)))))
26359                        (values
26360                         (if (eq? (unsafe-vector*-ref vec_0 pos_0) kw2802)
26361                           (vector->list r_0)
26362                           (vector->immutable-vector r_0))
26363                         next-pos_0))))
26364                  (if (unsafe-fx< index_0 14)
26365                    (let ((ht_0
26366                           (let ((tmp_1 (unsafe-vector*-ref vec_0 pos_0)))
26367                             (if (eq? tmp_1 kw2582)
26368                               (hash)
26369                               (if (eq? tmp_1 kw2796)
26370                                 (hasheq)
26371                                 (if (eq? tmp_1 kw3245)
26372                                   (hasheqv)
26373                                   (void)))))))
26374                      (let ((len_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
26375                        (begin
26376                          (letrec*
26377                           ((for-loop_0
26378                             (|#%name|
26379                              for-loop
26380                              (lambda (ht_1 pos_1 pos_2)
26381                                (begin
26382                                  (if (< pos_2 len_0)
26383                                    (call-with-values
26384                                     (lambda ()
26385                                       (call-with-values
26386                                        (lambda ()
26387                                          (call-with-values
26388                                           (lambda ()
26389                                             (decode
26390                                              vec_0
26391                                              pos_1
26392                                              mpis_0
26393                                              inspector_0
26394                                              bulk-binding-registry_0
26395                                              shared_0))
26396                                           (case-lambda
26397                                            ((k_0 next-pos_0)
26398                                             (call-with-values
26399                                              (lambda ()
26400                                                (decode
26401                                                 vec_0
26402                                                 next-pos_0
26403                                                 mpis_0
26404                                                 inspector_0
26405                                                 bulk-binding-registry_0
26406                                                 shared_0))
26407                                              (case-lambda
26408                                               ((v_0 next-pos_1)
26409                                                (values
26410                                                 (hash-set ht_1 k_0 v_0)
26411                                                 next-pos_1))
26412                                               (args
26413                                                (raise-binding-result-arity-error
26414                                                 2
26415                                                 args)))))
26416                                            (args
26417                                             (raise-binding-result-arity-error
26418                                              2
26419                                              args)))))
26420                                        (case-lambda
26421                                         ((ht_2 pos_3) (values ht_2 pos_3))
26422                                         (args
26423                                          (raise-binding-result-arity-error
26424                                           2
26425                                           args)))))
26426                                     (case-lambda
26427                                      ((ht_2 pos_3)
26428                                       (for-loop_0 ht_2 pos_3 (+ pos_2 1)))
26429                                      (args
26430                                       (raise-binding-result-arity-error
26431                                        2
26432                                        args))))
26433                                    (values ht_1 pos_1)))))))
26434                           (for-loop_0 ht_0 (+ pos_0 2) 0)))))
26435                    (let ((s_0
26436                           (let ((tmp_1 (unsafe-vector*-ref vec_0 pos_0)))
26437                             (if (eq? tmp_1 kw2473)
26438                               (set)
26439                               (if (eq? tmp_1 kw3357)
26440                                 (seteq)
26441                                 (if (eq? tmp_1 kw2333)
26442                                   (begin-unsafe the-empty-hasheqv)
26443                                   (void)))))))
26444                      (let ((len_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
26445                        (begin
26446                          (letrec*
26447                           ((for-loop_0
26448                             (|#%name|
26449                              for-loop
26450                              (lambda (s_1 pos_1 pos_2)
26451                                (begin
26452                                  (if (< pos_2 len_0)
26453                                    (call-with-values
26454                                     (lambda ()
26455                                       (call-with-values
26456                                        (lambda ()
26457                                          (call-with-values
26458                                           (lambda ()
26459                                             (decode
26460                                              vec_0
26461                                              pos_1
26462                                              mpis_0
26463                                              inspector_0
26464                                              bulk-binding-registry_0
26465                                              shared_0))
26466                                           (case-lambda
26467                                            ((k_0 next-pos_0)
26468                                             (values
26469                                              (begin-unsafe
26470                                               (hash-set s_1 k_0 #t))
26471                                              next-pos_0))
26472                                            (args
26473                                             (raise-binding-result-arity-error
26474                                              2
26475                                              args)))))
26476                                        (case-lambda
26477                                         ((s_2 pos_3) (values s_2 pos_3))
26478                                         (args
26479                                          (raise-binding-result-arity-error
26480                                           2
26481                                           args)))))
26482                                     (case-lambda
26483                                      ((s_2 pos_3)
26484                                       (for-loop_0 s_2 pos_3 (+ pos_2 1)))
26485                                      (args
26486                                       (raise-binding-result-arity-error
26487                                        2
26488                                        args))))
26489                                    (values s_1 pos_1)))))))
26490                           (for-loop_0 s_0 (+ pos_0 2) 0))))))))))
26491          (if (unsafe-fx< index_0 22)
26492            (if (unsafe-fx< index_0 18)
26493              (if (unsafe-fx< index_0 16)
26494                (call-with-values
26495                 (lambda ()
26496                   (call-with-values
26497                    (lambda ()
26498                      (decode
26499                       vec_0
26500                       (add1 pos_0)
26501                       mpis_0
26502                       inspector_0
26503                       bulk-binding-registry_0
26504                       shared_0))
26505                    (case-lambda
26506                     ((k_0 next-pos_0) (values k_0 next-pos_0))
26507                     (args (raise-binding-result-arity-error 2 args)))))
26508                 (case-lambda
26509                  ((key_0 next-pos_0)
26510                   (let ((len_0 (unsafe-vector*-ref vec_0 next-pos_0)))
26511                     (call-with-values
26512                      (lambda ()
26513                        (begin
26514                          (letrec*
26515                           ((for-loop_0
26516                             (|#%name|
26517                              for-loop
26518                              (lambda (r_0 pos_1 pos_2)
26519                                (begin
26520                                  (if (< pos_2 len_0)
26521                                    (call-with-values
26522                                     (lambda ()
26523                                       (call-with-values
26524                                        (lambda ()
26525                                          (call-with-values
26526                                           (lambda ()
26527                                             (decode
26528                                              vec_0
26529                                              pos_1
26530                                              mpis_0
26531                                              inspector_0
26532                                              bulk-binding-registry_0
26533                                              shared_0))
26534                                           (case-lambda
26535                                            ((v_0 next-pos_1)
26536                                             (values
26537                                              (cons v_0 r_0)
26538                                              next-pos_1))
26539                                            (args
26540                                             (raise-binding-result-arity-error
26541                                              2
26542                                              args)))))
26543                                        (case-lambda
26544                                         ((r_1 pos_3) (values r_1 pos_3))
26545                                         (args
26546                                          (raise-binding-result-arity-error
26547                                           2
26548                                           args)))))
26549                                     (case-lambda
26550                                      ((r_1 pos_3)
26551                                       (for-loop_0 r_1 pos_3 (+ pos_2 1)))
26552                                      (args
26553                                       (raise-binding-result-arity-error
26554                                        2
26555                                        args))))
26556                                    (values r_0 pos_1)))))))
26557                           (for-loop_0 null (add1 next-pos_0) 0))))
26558                      (case-lambda
26559                       ((r_0 done-pos_0)
26560                        (values
26561                         (apply make-prefab-struct key_0 (reverse$1 r_0))
26562                         done-pos_0))
26563                       (args (raise-binding-result-arity-error 2 args))))))
26564                  (args (raise-binding-result-arity-error 2 args))))
26565                (if (unsafe-fx< index_0 17)
26566                  (values (begin-unsafe top-level-common-scope) (add1 pos_0))
26567                  (call-with-values
26568                   (lambda ()
26569                     (decode
26570                      vec_0
26571                      (add1 pos_0)
26572                      mpis_0
26573                      inspector_0
26574                      bulk-binding-registry_0
26575                      shared_0))
26576                   (case-lambda
26577                    ((kind_0 next-pos_0)
26578                     (values
26579                      (begin-unsafe
26580                       (scope1.1
26581                        (new-deserialize-scope-id!)
26582                        kind_0
26583                        empty-binding-table))
26584                      next-pos_0))
26585                    (args (raise-binding-result-arity-error 2 args))))))
26586              (if (unsafe-fx< index_0 19)
26587                (call-with-values
26588                 (lambda ()
26589                   (decode
26590                    vec_0
26591                    (add1 pos_0)
26592                    mpis_0
26593                    inspector_0
26594                    bulk-binding-registry_0
26595                    shared_0))
26596                 (case-lambda
26597                  ((id_0 next-pos_0)
26598                   (values (make-interned-scope id_0) next-pos_0))
26599                  (args (raise-binding-result-arity-error 2 args))))
26600                (if (unsafe-fx< index_0 20)
26601                  (call-with-values
26602                   (lambda ()
26603                     (decode
26604                      vec_0
26605                      (add1 pos_0)
26606                      mpis_0
26607                      inspector_0
26608                      bulk-binding-registry_0
26609                      shared_0))
26610                   (case-lambda
26611                    ((name_0 next-pos_0)
26612                     (call-with-values
26613                      (lambda ()
26614                        (decode
26615                         vec_0
26616                         next-pos_0
26617                         mpis_0
26618                         inspector_0
26619                         bulk-binding-registry_0
26620                         shared_0))
26621                      (case-lambda
26622                       ((scopes_0 next-pos_1)
26623                        (values
26624                         (deserialize-multi-scope name_0 scopes_0)
26625                         next-pos_1))
26626                       (args (raise-binding-result-arity-error 2 args)))))
26627                    (args (raise-binding-result-arity-error 2 args))))
26628                  (if (unsafe-fx< index_0 21)
26629                    (call-with-values
26630                     (lambda ()
26631                       (decode
26632                        vec_0
26633                        (add1 pos_0)
26634                        mpis_0
26635                        inspector_0
26636                        bulk-binding-registry_0
26637                        shared_0))
26638                     (case-lambda
26639                      ((phase_0 next-pos_0)
26640                       (call-with-values
26641                        (lambda ()
26642                          (decode
26643                           vec_0
26644                           next-pos_0
26645                           mpis_0
26646                           inspector_0
26647                           bulk-binding-registry_0
26648                           shared_0))
26649                        (case-lambda
26650                         ((multi-scope_0 next-pos_1)
26651                          (values
26652                           (begin-unsafe
26653                            (intern-shifted-multi-scope phase_0 multi-scope_0))
26654                           next-pos_1))
26655                         (args (raise-binding-result-arity-error 2 args)))))
26656                      (args (raise-binding-result-arity-error 2 args))))
26657                    (call-with-values
26658                     (lambda ()
26659                       (decode
26660                        vec_0
26661                        (add1 pos_0)
26662                        mpis_0
26663                        inspector_0
26664                        bulk-binding-registry_0
26665                        shared_0))
26666                     (case-lambda
26667                      ((syms_0 next-pos_0)
26668                       (call-with-values
26669                        (lambda ()
26670                          (decode
26671                           vec_0
26672                           next-pos_0
26673                           mpis_0
26674                           inspector_0
26675                           bulk-binding-registry_0
26676                           shared_0))
26677                        (case-lambda
26678                         ((bulk-bindings_0 next-pos_1)
26679                          (values
26680                           (begin-unsafe
26681                            (table-with-bulk-bindings1.1
26682                             syms_0
26683                             syms_0
26684                             bulk-bindings_0))
26685                           next-pos_1))
26686                         (args (raise-binding-result-arity-error 2 args)))))
26687                      (args (raise-binding-result-arity-error 2 args))))))))
26688            (if (unsafe-fx< index_0 26)
26689              (if (unsafe-fx< index_0 23)
26690                (call-with-values
26691                 (lambda ()
26692                   (decode
26693                    vec_0
26694                    (add1 pos_0)
26695                    mpis_0
26696                    inspector_0
26697                    bulk-binding-registry_0
26698                    shared_0))
26699                 (case-lambda
26700                  ((scopes_0 next-pos_0)
26701                   (call-with-values
26702                    (lambda ()
26703                      (decode
26704                       vec_0
26705                       next-pos_0
26706                       mpis_0
26707                       inspector_0
26708                       bulk-binding-registry_0
26709                       shared_0))
26710                    (case-lambda
26711                     ((bulk_0 next-pos_1)
26712                      (values
26713                       (begin-unsafe (bulk-binding-at2.1 scopes_0 bulk_0))
26714                       next-pos_1))
26715                     (args (raise-binding-result-arity-error 2 args)))))
26716                  (args (raise-binding-result-arity-error 2 args))))
26717                (if (unsafe-fx< index_0 24)
26718                  (call-with-values
26719                   (lambda ()
26720                     (decode
26721                      vec_0
26722                      (add1 pos_0)
26723                      mpis_0
26724                      inspector_0
26725                      bulk-binding-registry_0
26726                      shared_0))
26727                   (case-lambda
26728                    ((kind_0 next-pos_0)
26729                     (call-with-values
26730                      (lambda ()
26731                        (decode
26732                         vec_0
26733                         next-pos_0
26734                         mpis_0
26735                         inspector_0
26736                         bulk-binding-registry_0
26737                         shared_0))
26738                      (case-lambda
26739                       ((phase_0 next-pos_1)
26740                        (values
26741                         (deserialize-representative-scope kind_0 phase_0)
26742                         next-pos_1))
26743                       (args (raise-binding-result-arity-error 2 args)))))
26744                    (args (raise-binding-result-arity-error 2 args))))
26745                  (if (unsafe-fx< index_0 25)
26746                    (call-with-values
26747                     (lambda ()
26748                       (decode
26749                        vec_0
26750                        (add1 pos_0)
26751                        mpis_0
26752                        inspector_0
26753                        bulk-binding-registry_0
26754                        shared_0))
26755                     (case-lambda
26756                      ((module_0 next-pos_0)
26757                       (call-with-values
26758                        (lambda ()
26759                          (decode
26760                           vec_0
26761                           next-pos_0
26762                           mpis_0
26763                           inspector_0
26764                           bulk-binding-registry_0
26765                           shared_0))
26766                        (case-lambda
26767                         ((sym_0 next-pos_1)
26768                          (call-with-values
26769                           (lambda ()
26770                             (decode
26771                              vec_0
26772                              next-pos_1
26773                              mpis_0
26774                              inspector_0
26775                              bulk-binding-registry_0
26776                              shared_0))
26777                           (case-lambda
26778                            ((phase_0 next-pos_2)
26779                             (call-with-values
26780                              (lambda ()
26781                                (decode
26782                                 vec_0
26783                                 next-pos_2
26784                                 mpis_0
26785                                 inspector_0
26786                                 bulk-binding-registry_0
26787                                 shared_0))
26788                              (case-lambda
26789                               ((nominal-module_0 next-pos_3)
26790                                (call-with-values
26791                                 (lambda ()
26792                                   (decode
26793                                    vec_0
26794                                    next-pos_3
26795                                    mpis_0
26796                                    inspector_0
26797                                    bulk-binding-registry_0
26798                                    shared_0))
26799                                 (case-lambda
26800                                  ((nominal-phase_0 next-pos_4)
26801                                   (call-with-values
26802                                    (lambda ()
26803                                      (decode
26804                                       vec_0
26805                                       next-pos_4
26806                                       mpis_0
26807                                       inspector_0
26808                                       bulk-binding-registry_0
26809                                       shared_0))
26810                                    (case-lambda
26811                                     ((nominal-sym_0 next-pos_5)
26812                                      (call-with-values
26813                                       (lambda ()
26814                                         (decode
26815                                          vec_0
26816                                          next-pos_5
26817                                          mpis_0
26818                                          inspector_0
26819                                          bulk-binding-registry_0
26820                                          shared_0))
26821                                       (case-lambda
26822                                        ((nominal-require-phase_0 next-pos_6)
26823                                         (call-with-values
26824                                          (lambda ()
26825                                            (decode
26826                                             vec_0
26827                                             next-pos_6
26828                                             mpis_0
26829                                             inspector_0
26830                                             bulk-binding-registry_0
26831                                             shared_0))
26832                                          (case-lambda
26833                                           ((free=id_0 next-pos_7)
26834                                            (call-with-values
26835                                             (lambda ()
26836                                               (decode
26837                                                vec_0
26838                                                next-pos_7
26839                                                mpis_0
26840                                                inspector_0
26841                                                bulk-binding-registry_0
26842                                                shared_0))
26843                                             (case-lambda
26844                                              ((extra-inspector_0 next-pos_8)
26845                                               (call-with-values
26846                                                (lambda ()
26847                                                  (decode
26848                                                   vec_0
26849                                                   next-pos_8
26850                                                   mpis_0
26851                                                   inspector_0
26852                                                   bulk-binding-registry_0
26853                                                   shared_0))
26854                                                (case-lambda
26855                                                 ((extra-nominal-bindings_0
26856                                                   next-pos_9)
26857                                                  (values
26858                                                   (deserialize-full-module-binding
26859                                                    module_0
26860                                                    sym_0
26861                                                    phase_0
26862                                                    nominal-module_0
26863                                                    nominal-phase_0
26864                                                    nominal-sym_0
26865                                                    nominal-require-phase_0
26866                                                    free=id_0
26867                                                    extra-inspector_0
26868                                                    extra-nominal-bindings_0)
26869                                                   next-pos_9))
26870                                                 (args
26871                                                  (raise-binding-result-arity-error
26872                                                   2
26873                                                   args)))))
26874                                              (args
26875                                               (raise-binding-result-arity-error
26876                                                2
26877                                                args)))))
26878                                           (args
26879                                            (raise-binding-result-arity-error
26880                                             2
26881                                             args)))))
26882                                        (args
26883                                         (raise-binding-result-arity-error
26884                                          2
26885                                          args)))))
26886                                     (args
26887                                      (raise-binding-result-arity-error
26888                                       2
26889                                       args)))))
26890                                  (args
26891                                   (raise-binding-result-arity-error
26892                                    2
26893                                    args)))))
26894                               (args
26895                                (raise-binding-result-arity-error 2 args)))))
26896                            (args (raise-binding-result-arity-error 2 args)))))
26897                         (args (raise-binding-result-arity-error 2 args)))))
26898                      (args (raise-binding-result-arity-error 2 args))))
26899                    (call-with-values
26900                     (lambda ()
26901                       (decode
26902                        vec_0
26903                        (add1 pos_0)
26904                        mpis_0
26905                        inspector_0
26906                        bulk-binding-registry_0
26907                        shared_0))
26908                     (case-lambda
26909                      ((module_0 next-pos_0)
26910                       (call-with-values
26911                        (lambda ()
26912                          (decode
26913                           vec_0
26914                           next-pos_0
26915                           mpis_0
26916                           inspector_0
26917                           bulk-binding-registry_0
26918                           shared_0))
26919                        (case-lambda
26920                         ((sym_0 next-pos_1)
26921                          (call-with-values
26922                           (lambda ()
26923                             (decode
26924                              vec_0
26925                              next-pos_1
26926                              mpis_0
26927                              inspector_0
26928                              bulk-binding-registry_0
26929                              shared_0))
26930                           (case-lambda
26931                            ((phase_0 next-pos_2)
26932                             (call-with-values
26933                              (lambda ()
26934                                (decode
26935                                 vec_0
26936                                 next-pos_2
26937                                 mpis_0
26938                                 inspector_0
26939                                 bulk-binding-registry_0
26940                                 shared_0))
26941                              (case-lambda
26942                               ((nominal-module_0 next-pos_3)
26943                                (values
26944                                 (begin-unsafe
26945                                  (simple-module-binding46.1
26946                                   module_0
26947                                   phase_0
26948                                   sym_0
26949                                   nominal-module_0))
26950                                 next-pos_3))
26951                               (args
26952                                (raise-binding-result-arity-error 2 args)))))
26953                            (args (raise-binding-result-arity-error 2 args)))))
26954                         (args (raise-binding-result-arity-error 2 args)))))
26955                      (args (raise-binding-result-arity-error 2 args)))))))
26956              (if (unsafe-fx< index_0 28)
26957                (if (unsafe-fx< index_0 27)
26958                  (call-with-values
26959                   (lambda ()
26960                     (decode
26961                      vec_0
26962                      (add1 pos_0)
26963                      mpis_0
26964                      inspector_0
26965                      bulk-binding-registry_0
26966                      shared_0))
26967                   (case-lambda
26968                    ((key_0 next-pos_0)
26969                     (call-with-values
26970                      (lambda ()
26971                        (decode
26972                         vec_0
26973                         next-pos_0
26974                         mpis_0
26975                         inspector_0
26976                         bulk-binding-registry_0
26977                         shared_0))
26978                      (case-lambda
26979                       ((free=id_0 next-pos_1)
26980                        (values
26981                         (begin-unsafe
26982                          (full-local-binding1.1 #f free=id_0 key_0))
26983                         next-pos_1))
26984                       (args (raise-binding-result-arity-error 2 args)))))
26985                    (args (raise-binding-result-arity-error 2 args))))
26986                  (call-with-values
26987                   (lambda ()
26988                     (decode
26989                      vec_0
26990                      (add1 pos_0)
26991                      mpis_0
26992                      inspector_0
26993                      bulk-binding-registry_0
26994                      shared_0))
26995                   (case-lambda
26996                    ((prefix_0 next-pos_0)
26997                     (call-with-values
26998                      (lambda ()
26999                        (decode
27000                         vec_0
27001                         next-pos_0
27002                         mpis_0
27003                         inspector_0
27004                         bulk-binding-registry_0
27005                         shared_0))
27006                      (case-lambda
27007                       ((excepts_0 next-pos_1)
27008                        (call-with-values
27009                         (lambda ()
27010                           (decode
27011                            vec_0
27012                            next-pos_1
27013                            mpis_0
27014                            inspector_0
27015                            bulk-binding-registry_0
27016                            shared_0))
27017                         (case-lambda
27018                          ((mpi_0 next-pos_2)
27019                           (call-with-values
27020                            (lambda ()
27021                              (decode
27022                               vec_0
27023                               next-pos_2
27024                               mpis_0
27025                               inspector_0
27026                               bulk-binding-registry_0
27027                               shared_0))
27028                            (case-lambda
27029                             ((provide-phase-level_0 next-pos_3)
27030                              (call-with-values
27031                               (lambda ()
27032                                 (decode
27033                                  vec_0
27034                                  next-pos_3
27035                                  mpis_0
27036                                  inspector_0
27037                                  bulk-binding-registry_0
27038                                  shared_0))
27039                               (case-lambda
27040                                ((phase-shift_0 next-pos_4)
27041                                 (call-with-values
27042                                  (lambda ()
27043                                    (decode
27044                                     vec_0
27045                                     next-pos_4
27046                                     mpis_0
27047                                     inspector_0
27048                                     bulk-binding-registry_0
27049                                     shared_0))
27050                                  (case-lambda
27051                                   ((bulk-binding-registry_1 next-pos_5)
27052                                    (values
27053                                     (begin-unsafe
27054                                      (bulk-binding12.1
27055                                       #f
27056                                       prefix_0
27057                                       excepts_0
27058                                       #f
27059                                       mpi_0
27060                                       (intern-phase+space
27061                                        provide-phase-level_0)
27062                                       phase-shift_0
27063                                       bulk-binding-registry_1))
27064                                     next-pos_5))
27065                                   (args
27066                                    (raise-binding-result-arity-error
27067                                     2
27068                                     args)))))
27069                                (args
27070                                 (raise-binding-result-arity-error 2 args)))))
27071                             (args
27072                              (raise-binding-result-arity-error 2 args)))))
27073                          (args (raise-binding-result-arity-error 2 args)))))
27074                       (args (raise-binding-result-arity-error 2 args)))))
27075                    (args (raise-binding-result-arity-error 2 args)))))
27076                (if (unsafe-fx< index_0 29)
27077                  (let ((app_0 (like-ambiguous-binding1.1)))
27078                    (values app_0 (add1 pos_0)))
27079                  (if (unsafe-fx< index_0 30)
27080                    (call-with-values
27081                     (lambda ()
27082                       (decode
27083                        vec_0
27084                        (add1 pos_0)
27085                        mpis_0
27086                        inspector_0
27087                        bulk-binding-registry_0
27088                        shared_0))
27089                     (case-lambda
27090                      ((provides_0 next-pos_0)
27091                       (call-with-values
27092                        (lambda ()
27093                          (decode
27094                           vec_0
27095                           next-pos_0
27096                           mpis_0
27097                           inspector_0
27098                           bulk-binding-registry_0
27099                           shared_0))
27100                        (case-lambda
27101                         ((self_0 next-pos_1)
27102                          (call-with-values
27103                           (lambda ()
27104                             (decode
27105                              vec_0
27106                              next-pos_1
27107                              mpis_0
27108                              inspector_0
27109                              bulk-binding-registry_0
27110                              shared_0))
27111                           (case-lambda
27112                            ((prefix_0 next-pos_2)
27113                             (call-with-values
27114                              (lambda ()
27115                                (decode
27116                                 vec_0
27117                                 next-pos_2
27118                                 mpis_0
27119                                 inspector_0
27120                                 bulk-binding-registry_0
27121                                 shared_0))
27122                              (case-lambda
27123                               ((excepts_0 next-pos_3)
27124                                (call-with-values
27125                                 (lambda ()
27126                                   (decode
27127                                    vec_0
27128                                    next-pos_3
27129                                    mpis_0
27130                                    inspector_0
27131                                    bulk-binding-registry_0
27132                                    shared_0))
27133                                 (case-lambda
27134                                  ((mpi_0 next-pos_4)
27135                                   (call-with-values
27136                                    (lambda ()
27137                                      (decode
27138                                       vec_0
27139                                       next-pos_4
27140                                       mpis_0
27141                                       inspector_0
27142                                       bulk-binding-registry_0
27143                                       shared_0))
27144                                    (case-lambda
27145                                     ((provide-phase-level_0 next-pos_5)
27146                                      (call-with-values
27147                                       (lambda ()
27148                                         (decode
27149                                          vec_0
27150                                          next-pos_5
27151                                          mpis_0
27152                                          inspector_0
27153                                          bulk-binding-registry_0
27154                                          shared_0))
27155                                       (case-lambda
27156                                        ((phase-shift_0 next-pos_6)
27157                                         (call-with-values
27158                                          (lambda ()
27159                                            (decode
27160                                             vec_0
27161                                             next-pos_6
27162                                             mpis_0
27163                                             inspector_0
27164                                             bulk-binding-registry_0
27165                                             shared_0))
27166                                          (case-lambda
27167                                           ((bulk-binding-registry_1
27168                                             next-pos_7)
27169                                            (values
27170                                             (begin-unsafe
27171                                              (bulk-binding12.1
27172                                               provides_0
27173                                               prefix_0
27174                                               excepts_0
27175                                               self_0
27176                                               mpi_0
27177                                               (intern-phase+space
27178                                                provide-phase-level_0)
27179                                               phase-shift_0
27180                                               bulk-binding-registry_1))
27181                                             next-pos_7))
27182                                           (args
27183                                            (raise-binding-result-arity-error
27184                                             2
27185                                             args)))))
27186                                        (args
27187                                         (raise-binding-result-arity-error
27188                                          2
27189                                          args)))))
27190                                     (args
27191                                      (raise-binding-result-arity-error
27192                                       2
27193                                       args)))))
27194                                  (args
27195                                   (raise-binding-result-arity-error
27196                                    2
27197                                    args)))))
27198                               (args
27199                                (raise-binding-result-arity-error 2 args)))))
27200                            (args (raise-binding-result-arity-error 2 args)))))
27201                         (args (raise-binding-result-arity-error 2 args)))))
27202                      (args (raise-binding-result-arity-error 2 args))))
27203                    (call-with-values
27204                     (lambda ()
27205                       (decode
27206                        vec_0
27207                        (add1 pos_0)
27208                        mpis_0
27209                        inspector_0
27210                        bulk-binding-registry_0
27211                        shared_0))
27212                     (case-lambda
27213                      ((binding_0 next-pos_0)
27214                       (call-with-values
27215                        (lambda ()
27216                          (decode
27217                           vec_0
27218                           next-pos_0
27219                           mpis_0
27220                           inspector_0
27221                           bulk-binding-registry_0
27222                           shared_0))
27223                        (case-lambda
27224                         ((protected?_0 next-pos_1)
27225                          (call-with-values
27226                           (lambda ()
27227                             (decode
27228                              vec_0
27229                              next-pos_1
27230                              mpis_0
27231                              inspector_0
27232                              bulk-binding-registry_0
27233                              shared_0))
27234                           (case-lambda
27235                            ((syntax?_0 next-pos_2)
27236                             (values
27237                              (begin-unsafe
27238                               (provided1.1 binding_0 protected?_0 syntax?_0))
27239                              next-pos_2))
27240                            (args (raise-binding-result-arity-error 2 args)))))
27241                         (args (raise-binding-result-arity-error 2 args)))))
27242                      (args
27243                       (raise-binding-result-arity-error 2 args))))))))))))))
27244(define decode-fill!
27245  (lambda (v_0 vec_0 pos_0 mpis_0 inspector_0 bulk-binding-registry_0 shared_0)
27246    (let ((tmp_0 (unsafe-vector*-ref vec_0 pos_0)))
27247      (if (eq? tmp_0 #f)
27248        (add1 pos_0)
27249        (if (eq? tmp_0 kw2531)
27250          (call-with-values
27251           (lambda ()
27252             (decode
27253              vec_0
27254              (add1 pos_0)
27255              mpis_0
27256              inspector_0
27257              bulk-binding-registry_0
27258              shared_0))
27259           (case-lambda
27260            ((c_0 next-pos_0) (begin (set-box! v_0 c_0) next-pos_0))
27261            (args (raise-binding-result-arity-error 2 args))))
27262          (if (eq? tmp_0 kw3046)
27263            (let ((len_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
27264              (begin
27265                (letrec*
27266                 ((for-loop_0
27267                   (|#%name|
27268                    for-loop
27269                    (lambda (pos_1 pos_2)
27270                      (begin
27271                        (if (< pos_2 len_0)
27272                          (let ((pos_3
27273                                 (let ((pos_3
27274                                        (call-with-values
27275                                         (lambda ()
27276                                           (decode
27277                                            vec_0
27278                                            pos_1
27279                                            mpis_0
27280                                            inspector_0
27281                                            bulk-binding-registry_0
27282                                            shared_0))
27283                                         (case-lambda
27284                                          ((c_0 next-pos_0)
27285                                           (begin
27286                                             (vector-set! v_0 pos_2 c_0)
27287                                             next-pos_0))
27288                                          (args
27289                                           (raise-binding-result-arity-error
27290                                            2
27291                                            args))))))
27292                                   (values pos_3))))
27293                            (for-loop_0 pos_3 (+ pos_2 1)))
27294                          pos_1))))))
27295                 (for-loop_0 (+ pos_0 2) 0))))
27296            (if (eq? tmp_0 kw2194)
27297              (let ((len_0 (unsafe-vector*-ref vec_0 (add1 pos_0))))
27298                (begin
27299                  (letrec*
27300                   ((for-loop_0
27301                     (|#%name|
27302                      for-loop
27303                      (lambda (pos_1 pos_2)
27304                        (begin
27305                          (if (< pos_2 len_0)
27306                            (let ((pos_3
27307                                   (let ((pos_3
27308                                          (call-with-values
27309                                           (lambda ()
27310                                             (decode
27311                                              vec_0
27312                                              pos_1
27313                                              mpis_0
27314                                              inspector_0
27315                                              bulk-binding-registry_0
27316                                              shared_0))
27317                                           (case-lambda
27318                                            ((key_0 next-pos_0)
27319                                             (call-with-values
27320                                              (lambda ()
27321                                                (decode
27322                                                 vec_0
27323                                                 next-pos_0
27324                                                 mpis_0
27325                                                 inspector_0
27326                                                 bulk-binding-registry_0
27327                                                 shared_0))
27328                                              (case-lambda
27329                                               ((val_0 done-pos_0)
27330                                                (begin
27331                                                  (hash-set! v_0 key_0 val_0)
27332                                                  done-pos_0))
27333                                               (args
27334                                                (raise-binding-result-arity-error
27335                                                 2
27336                                                 args)))))
27337                                            (args
27338                                             (raise-binding-result-arity-error
27339                                              2
27340                                              args))))))
27341                                     (values pos_3))))
27342                              (for-loop_0 pos_3 (+ pos_2 1)))
27343                            pos_1))))))
27344                   (for-loop_0 (+ pos_0 2) 0))))
27345              (if (eq? tmp_0 kw2576)
27346                (call-with-values
27347                 (lambda ()
27348                   (decode
27349                    vec_0
27350                    (add1 pos_0)
27351                    mpis_0
27352                    inspector_0
27353                    bulk-binding-registry_0
27354                    shared_0))
27355                 (case-lambda
27356                  ((c_0 next-pos_0)
27357                   (begin
27358                     (begin-unsafe (set-scope-binding-table! v_0 c_0))
27359                     next-pos_0))
27360                  (args (raise-binding-result-arity-error 2 args))))
27361                (if (eq? tmp_0 kw2073)
27362                  (call-with-values
27363                   (lambda ()
27364                     (decode
27365                      vec_0
27366                      (add1 pos_0)
27367                      mpis_0
27368                      inspector_0
27369                      bulk-binding-registry_0
27370                      shared_0))
27371                   (case-lambda
27372                    ((a_0 next-pos_0)
27373                     (call-with-values
27374                      (lambda ()
27375                        (decode
27376                         vec_0
27377                         next-pos_0
27378                         mpis_0
27379                         inspector_0
27380                         bulk-binding-registry_0
27381                         shared_0))
27382                      (case-lambda
27383                       ((d_0 done-pos_0)
27384                        (begin
27385                          (begin-unsafe
27386                           (begin
27387                             (begin-unsafe (set-scope-binding-table! v_0 a_0))
27388                             (set-representative-scope-owner! v_0 d_0)))
27389                          done-pos_0))
27390                       (args (raise-binding-result-arity-error 2 args)))))
27391                    (args (raise-binding-result-arity-error 2 args))))
27392                  (error
27393                   'deserialize
27394                   "bad fill encoding: ~v"
27395                   (unsafe-vector*-ref vec_0 pos_0)))))))))))
27396(define find-reachable-scopes
27397  (lambda (v_0 bulk-shifts_0)
27398    (let ((seen_0 (make-hasheq)))
27399      (let ((reachable-scopes_0 (seteq)))
27400        (let ((get-reachable-scopes_0
27401               (|#%name|
27402                get-reachable-scopes
27403                (lambda () (begin reachable-scopes_0)))))
27404          (let ((scope-triggers_0 (make-hasheq)))
27405            (begin
27406              (letrec*
27407               ((loop_0
27408                 (|#%name|
27409                  loop
27410                  (lambda (v_1 bulk-shifts_1)
27411                    (begin
27412                      (if (interned-literal? v_1)
27413                        (void)
27414                        (if (hash-ref seen_0 v_1 #f)
27415                          (void)
27416                          (begin
27417                            (hash-set! seen_0 v_1 #t)
27418                            (if (scope-with-bindings? v_1)
27419                              (begin
27420                                (set! reachable-scopes_0
27421                                  (let ((s_0 reachable-scopes_0))
27422                                    (begin-unsafe (hash-set s_0 v_1 #t))))
27423                                (|#%app|
27424                                 (reach-scopes-ref v_1)
27425                                 v_1
27426                                 bulk-shifts_1
27427                                 loop_0)
27428                                (let ((lst_0
27429                                       (hash-ref scope-triggers_0 v_1 null)))
27430                                  (begin
27431                                    (letrec*
27432                                     ((for-loop_0
27433                                       (|#%name|
27434                                        for-loop
27435                                        (lambda (lst_1)
27436                                          (begin
27437                                            (if (pair? lst_1)
27438                                              (let ((proc_0
27439                                                     (unsafe-car lst_1)))
27440                                                (let ((rest_0
27441                                                       (unsafe-cdr lst_1)))
27442                                                  (begin
27443                                                    (|#%app| proc_0 loop_0)
27444                                                    (for-loop_0 rest_0))))
27445                                              (values)))))))
27446                                     (for-loop_0 lst_0))))
27447                                (void)
27448                                (hash-remove! scope-triggers_0 v_1)
27449                                (|#%app|
27450                                 (scope-with-bindings-ref v_1)
27451                                 v_1
27452                                 get-reachable-scopes_0
27453                                 bulk-shifts_1
27454                                 loop_0
27455                                 (lambda (sc-unreachable_0 b_0)
27456                                   (let ((xform_0
27457                                          (lambda (l_0) (cons b_0 l_0))))
27458                                     (begin-unsafe
27459                                      (do-hash-update
27460                                       'hash-update!
27461                                       #t
27462                                       hash-set!
27463                                       scope-triggers_0
27464                                       sc-unreachable_0
27465                                       xform_0
27466                                       null))))))
27467                              (if (reach-scopes? v_1)
27468                                (|#%app|
27469                                 (reach-scopes-ref v_1)
27470                                 v_1
27471                                 bulk-shifts_1
27472                                 loop_0)
27473                                (if (pair? v_1)
27474                                  (begin
27475                                    (loop_0 (car v_1) bulk-shifts_1)
27476                                    (loop_0 (cdr v_1) bulk-shifts_1))
27477                                  (if (vector? v_1)
27478                                    (begin
27479                                      (call-with-values
27480                                       (lambda ()
27481                                         (begin
27482                                           (check-vector v_1)
27483                                           (values
27484                                            v_1
27485                                            (unsafe-vector-length v_1))))
27486                                       (case-lambda
27487                                        ((vec_0 len_0)
27488                                         (begin
27489                                           #f
27490                                           (letrec*
27491                                            ((for-loop_0
27492                                              (|#%name|
27493                                               for-loop
27494                                               (lambda (pos_0)
27495                                                 (begin
27496                                                   (if (unsafe-fx< pos_0 len_0)
27497                                                     (let ((e_0
27498                                                            (unsafe-vector-ref
27499                                                             vec_0
27500                                                             pos_0)))
27501                                                       (begin
27502                                                         (loop_0
27503                                                          e_0
27504                                                          bulk-shifts_1)
27505                                                         (for-loop_0
27506                                                          (unsafe-fx+
27507                                                           1
27508                                                           pos_0))))
27509                                                     (values)))))))
27510                                            (for-loop_0 0))))
27511                                        (args
27512                                         (raise-binding-result-arity-error
27513                                          2
27514                                          args))))
27515                                      (void))
27516                                    (if (box? v_1)
27517                                      (loop_0 (unbox v_1) bulk-shifts_1)
27518                                      (if (hash? v_1)
27519                                        (begin
27520                                          (begin
27521                                            (letrec*
27522                                             ((for-loop_0
27523                                               (|#%name|
27524                                                for-loop
27525                                                (lambda (i_0)
27526                                                  (begin
27527                                                    (if i_0
27528                                                      (call-with-values
27529                                                       (lambda ()
27530                                                         (hash-iterate-key+value
27531                                                          v_1
27532                                                          i_0))
27533                                                       (case-lambda
27534                                                        ((k_0 v_2)
27535                                                         (begin
27536                                                           (begin
27537                                                             (loop_0
27538                                                              k_0
27539                                                              bulk-shifts_1)
27540                                                             (loop_0
27541                                                              v_2
27542                                                              bulk-shifts_1))
27543                                                           (for-loop_0
27544                                                            (hash-iterate-next
27545                                                             v_1
27546                                                             i_0))))
27547                                                        (args
27548                                                         (raise-binding-result-arity-error
27549                                                          2
27550                                                          args))))
27551                                                      (values)))))))
27552                                             (for-loop_0
27553                                              (hash-iterate-first v_1))))
27554                                          (void))
27555                                        (if (prefab-struct-key v_1)
27556                                          (begin
27557                                            (call-with-values
27558                                             (lambda ()
27559                                               (unsafe-normalise-inputs
27560                                                unsafe-vector-length
27561                                                (struct->vector v_1)
27562                                                1
27563                                                #f
27564                                                1))
27565                                             (case-lambda
27566                                              ((v*_0 start*_0 stop*_0 step*_0)
27567                                               (begin
27568                                                 #t
27569                                                 (letrec*
27570                                                  ((for-loop_0
27571                                                    (|#%name|
27572                                                     for-loop
27573                                                     (lambda (idx_0)
27574                                                       (begin
27575                                                         (if (unsafe-fx<
27576                                                              idx_0
27577                                                              stop*_0)
27578                                                           (let ((e_0
27579                                                                  (unsafe-vector-ref
27580                                                                   v*_0
27581                                                                   idx_0)))
27582                                                             (begin
27583                                                               (loop_0
27584                                                                e_0
27585                                                                bulk-shifts_1)
27586                                                               (for-loop_0
27587                                                                (unsafe-fx+
27588                                                                 idx_0
27589                                                                 1))))
27590                                                           (values)))))))
27591                                                  (for-loop_0 start*_0))))
27592                                              (args
27593                                               (raise-binding-result-arity-error
27594                                                4
27595                                                args))))
27596                                            (void))
27597                                          (if (srcloc? v_1)
27598                                            (loop_0
27599                                             (srcloc-source v_1)
27600                                             bulk-shifts_1)
27601                                            (void)))))))))))))))))
27602               (loop_0 v_0 bulk-shifts_0))
27603              reachable-scopes_0)))))))
27604(define deserialize-imports
27605  '(deserialize-module-path-indexes
27606    syntax-module-path-index-shift
27607    syntax-shift-phase-level
27608    module-use
27609    deserialize))
27610(define syntax-module-path-index-shift/no-keywords
27611  (let ((syntax-module-path-index-shift_0
27612         (|#%name|
27613          syntax-module-path-index-shift
27614          (lambda (s39_0 from-mpi40_0 to-mpi41_0 inspector38_0)
27615            (begin
27616              (syntax-module-path-index-shift.1
27617               #f
27618               s39_0
27619               from-mpi40_0
27620               to-mpi41_0
27621               inspector38_0))))))
27622    (|#%name|
27623     syntax-module-path-index-shift
27624     (case-lambda
27625      ((s_0 from-mpi_0 to-mpi_0)
27626       (begin (syntax-module-path-index-shift_0 s_0 from-mpi_0 to-mpi_0 #f)))
27627      ((s_0 from-mpi_0 to-mpi_0 inspector38_0)
27628       (syntax-module-path-index-shift_0
27629        s_0
27630        from-mpi_0
27631        to-mpi_0
27632        inspector38_0))))))
27633(define deserialize-instance
27634  (make-instance
27635   'deserialize
27636   #f
27637   'consistent
27638   'deserialize-module-path-indexes
27639   deserialize-module-path-indexes
27640   'syntax-module-path-index-shift
27641   syntax-module-path-index-shift/no-keywords
27642   'syntax-shift-phase-level
27643   syntax-shift-phase-level$1
27644   'module-use
27645   module-use1.1
27646   'deserialize
27647   deserialize))
27648(define finish_2891
27649  (make-struct-type-install-properties
27650   '(parsed)
27651   1
27652   0
27653   #f
27654   (list (cons prop:authentic #t))
27655   #f
27656   #f
27657   '(0)
27658   #f
27659   'parsed))
27660(define struct:parsed
27661  (make-record-type-descriptor*
27662   'parsed
27663   #f
27664   (|#%nongenerative-uid| parsed)
27665   #f
27666   #f
27667   1
27668   0))
27669(define effect_3056 (finish_2891 struct:parsed))
27670(define parsed1.1
27671  (|#%name|
27672   parsed
27673   (record-constructor
27674    (make-record-constructor-descriptor struct:parsed #f #f))))
27675(define parsed? (|#%name| parsed? (record-predicate struct:parsed)))
27676(define parsed-s (|#%name| parsed-s (record-accessor struct:parsed 0)))
27677(define finish_2783
27678  (make-struct-type-install-properties
27679   '(parsed-id)
27680   2
27681   0
27682   struct:parsed
27683   (list (cons prop:authentic #t))
27684   (current-inspector)
27685   #f
27686   '(0 1)
27687   #f
27688   'parsed-id))
27689(define struct:parsed-id
27690  (make-record-type-descriptor*
27691   'parsed-id
27692   struct:parsed
27693   (|#%nongenerative-uid| parsed-id)
27694   #f
27695   #f
27696   2
27697   0))
27698(define effect_2596 (finish_2783 struct:parsed-id))
27699(define parsed-id2.1
27700  (|#%name|
27701   parsed-id
27702   (record-constructor
27703    (make-record-constructor-descriptor struct:parsed-id #f #f))))
27704(define parsed-id? (|#%name| parsed-id? (record-predicate struct:parsed-id)))
27705(define parsed-id-binding
27706  (|#%name| parsed-id-binding (record-accessor struct:parsed-id 0)))
27707(define parsed-id-inspector
27708  (|#%name| parsed-id-inspector (record-accessor struct:parsed-id 1)))
27709(define finish_2627
27710  (make-struct-type-install-properties
27711   '(parsed-primitive-id)
27712   0
27713   0
27714   struct:parsed-id
27715   (list (cons prop:authentic #t))
27716   (current-inspector)
27717   #f
27718   '()
27719   #f
27720   'parsed-primitive-id))
27721(define struct:parsed-primitive-id
27722  (make-record-type-descriptor*
27723   'parsed-primitive-id
27724   struct:parsed-id
27725   (|#%nongenerative-uid| parsed-primitive-id)
27726   #f
27727   #f
27728   0
27729   0))
27730(define effect_2448 (finish_2627 struct:parsed-primitive-id))
27731(define parsed-primitive-id3.1
27732  (|#%name|
27733   parsed-primitive-id
27734   (record-constructor
27735    (make-record-constructor-descriptor struct:parsed-primitive-id #f #f))))
27736(define parsed-primitive-id?
27737  (|#%name|
27738   parsed-primitive-id?
27739   (record-predicate struct:parsed-primitive-id)))
27740(define finish_2584
27741  (make-struct-type-install-properties
27742   '(parsed-top-id)
27743   0
27744   0
27745   struct:parsed-id
27746   (list (cons prop:authentic #t))
27747   (current-inspector)
27748   #f
27749   '()
27750   #f
27751   'parsed-top-id))
27752(define struct:parsed-top-id
27753  (make-record-type-descriptor*
27754   'parsed-top-id
27755   struct:parsed-id
27756   (|#%nongenerative-uid| parsed-top-id)
27757   #f
27758   #f
27759   0
27760   0))
27761(define effect_2581 (finish_2584 struct:parsed-top-id))
27762(define parsed-top-id4.1
27763  (|#%name|
27764   parsed-top-id
27765   (record-constructor
27766    (make-record-constructor-descriptor struct:parsed-top-id #f #f))))
27767(define parsed-top-id?
27768  (|#%name| parsed-top-id? (record-predicate struct:parsed-top-id)))
27769(define finish_2495
27770  (make-struct-type-install-properties
27771   '(parsed-lambda)
27772   2
27773   0
27774   struct:parsed
27775   (list (cons prop:authentic #t))
27776   (current-inspector)
27777   #f
27778   '(0 1)
27779   #f
27780   'parsed-lambda))
27781(define struct:parsed-lambda
27782  (make-record-type-descriptor*
27783   'parsed-lambda
27784   struct:parsed
27785   (|#%nongenerative-uid| parsed-lambda)
27786   #f
27787   #f
27788   2
27789   0))
27790(define effect_2349 (finish_2495 struct:parsed-lambda))
27791(define parsed-lambda5.1
27792  (|#%name|
27793   parsed-lambda
27794   (record-constructor
27795    (make-record-constructor-descriptor struct:parsed-lambda #f #f))))
27796(define parsed-lambda?
27797  (|#%name| parsed-lambda? (record-predicate struct:parsed-lambda)))
27798(define parsed-lambda-keys
27799  (|#%name| parsed-lambda-keys (record-accessor struct:parsed-lambda 0)))
27800(define parsed-lambda-body
27801  (|#%name| parsed-lambda-body (record-accessor struct:parsed-lambda 1)))
27802(define finish_2679
27803  (make-struct-type-install-properties
27804   '(parsed-case-lambda)
27805   1
27806   0
27807   struct:parsed
27808   (list (cons prop:authentic #t))
27809   (current-inspector)
27810   #f
27811   '(0)
27812   #f
27813   'parsed-case-lambda))
27814(define struct:parsed-case-lambda
27815  (make-record-type-descriptor*
27816   'parsed-case-lambda
27817   struct:parsed
27818   (|#%nongenerative-uid| parsed-case-lambda)
27819   #f
27820   #f
27821   1
27822   0))
27823(define effect_2437 (finish_2679 struct:parsed-case-lambda))
27824(define parsed-case-lambda6.1
27825  (|#%name|
27826   parsed-case-lambda
27827   (record-constructor
27828    (make-record-constructor-descriptor struct:parsed-case-lambda #f #f))))
27829(define parsed-case-lambda?
27830  (|#%name| parsed-case-lambda? (record-predicate struct:parsed-case-lambda)))
27831(define parsed-case-lambda-clauses
27832  (|#%name|
27833   parsed-case-lambda-clauses
27834   (record-accessor struct:parsed-case-lambda 0)))
27835(define finish_2548
27836  (make-struct-type-install-properties
27837   '(parsed-app)
27838   2
27839   0
27840   struct:parsed
27841   (list (cons prop:authentic #t))
27842   (current-inspector)
27843   #f
27844   '(0 1)
27845   #f
27846   'parsed-app))
27847(define struct:parsed-app
27848  (make-record-type-descriptor*
27849   'parsed-app
27850   struct:parsed
27851   (|#%nongenerative-uid| parsed-app)
27852   #f
27853   #f
27854   2
27855   0))
27856(define effect_2862 (finish_2548 struct:parsed-app))
27857(define parsed-app7.1
27858  (|#%name|
27859   parsed-app
27860   (record-constructor
27861    (make-record-constructor-descriptor struct:parsed-app #f #f))))
27862(define parsed-app?
27863  (|#%name| parsed-app? (record-predicate struct:parsed-app)))
27864(define parsed-app-rator
27865  (|#%name| parsed-app-rator (record-accessor struct:parsed-app 0)))
27866(define parsed-app-rands
27867  (|#%name| parsed-app-rands (record-accessor struct:parsed-app 1)))
27868(define finish_2663
27869  (make-struct-type-install-properties
27870   '(parsed-if)
27871   3
27872   0
27873   struct:parsed
27874   (list (cons prop:authentic #t))
27875   (current-inspector)
27876   #f
27877   '(0 1 2)
27878   #f
27879   'parsed-if))
27880(define struct:parsed-if
27881  (make-record-type-descriptor*
27882   'parsed-if
27883   struct:parsed
27884   (|#%nongenerative-uid| parsed-if)
27885   #f
27886   #f
27887   3
27888   0))
27889(define effect_2506 (finish_2663 struct:parsed-if))
27890(define parsed-if8.1
27891  (|#%name|
27892   parsed-if
27893   (record-constructor
27894    (make-record-constructor-descriptor struct:parsed-if #f #f))))
27895(define parsed-if? (|#%name| parsed-if? (record-predicate struct:parsed-if)))
27896(define parsed-if-tst
27897  (|#%name| parsed-if-tst (record-accessor struct:parsed-if 0)))
27898(define parsed-if-thn
27899  (|#%name| parsed-if-thn (record-accessor struct:parsed-if 1)))
27900(define parsed-if-els
27901  (|#%name| parsed-if-els (record-accessor struct:parsed-if 2)))
27902(define finish_3030
27903  (make-struct-type-install-properties
27904   '(parsed-set!)
27905   2
27906   0
27907   struct:parsed
27908   (list (cons prop:authentic #t))
27909   (current-inspector)
27910   #f
27911   '(0 1)
27912   #f
27913   'parsed-set!))
27914(define struct:parsed-set!
27915  (make-record-type-descriptor*
27916   'parsed-set!
27917   struct:parsed
27918   (|#%nongenerative-uid| parsed-set!)
27919   #f
27920   #f
27921   2
27922   0))
27923(define effect_2747 (finish_3030 struct:parsed-set!))
27924(define parsed-set!9.1
27925  (|#%name|
27926   parsed-set!
27927   (record-constructor
27928    (make-record-constructor-descriptor struct:parsed-set! #f #f))))
27929(define parsed-set!?
27930  (|#%name| parsed-set!? (record-predicate struct:parsed-set!)))
27931(define parsed-set!-id
27932  (|#%name| parsed-set!-id (record-accessor struct:parsed-set! 0)))
27933(define parsed-set!-rhs
27934  (|#%name| parsed-set!-rhs (record-accessor struct:parsed-set! 1)))
27935(define finish_2301
27936  (make-struct-type-install-properties
27937   '(parsed-with-continuation-mark)
27938   3
27939   0
27940   struct:parsed
27941   (list (cons prop:authentic #t))
27942   (current-inspector)
27943   #f
27944   '(0 1 2)
27945   #f
27946   'parsed-with-continuation-mark))
27947(define struct:parsed-with-continuation-mark
27948  (make-record-type-descriptor*
27949   'parsed-with-continuation-mark
27950   struct:parsed
27951   (|#%nongenerative-uid| parsed-with-continuation-mark)
27952   #f
27953   #f
27954   3
27955   0))
27956(define effect_2564 (finish_2301 struct:parsed-with-continuation-mark))
27957(define parsed-with-continuation-mark10.1
27958  (|#%name|
27959   parsed-with-continuation-mark
27960   (record-constructor
27961    (make-record-constructor-descriptor
27962     struct:parsed-with-continuation-mark
27963     #f
27964     #f))))
27965(define parsed-with-continuation-mark?
27966  (|#%name|
27967   parsed-with-continuation-mark?
27968   (record-predicate struct:parsed-with-continuation-mark)))
27969(define parsed-with-continuation-mark-key
27970  (|#%name|
27971   parsed-with-continuation-mark-key
27972   (record-accessor struct:parsed-with-continuation-mark 0)))
27973(define parsed-with-continuation-mark-val
27974  (|#%name|
27975   parsed-with-continuation-mark-val
27976   (record-accessor struct:parsed-with-continuation-mark 1)))
27977(define parsed-with-continuation-mark-body
27978  (|#%name|
27979   parsed-with-continuation-mark-body
27980   (record-accessor struct:parsed-with-continuation-mark 2)))
27981(define finish_2388
27982  (make-struct-type-install-properties
27983   '(|parsed-#%variable-reference|)
27984   1
27985   0
27986   struct:parsed
27987   (list (cons prop:authentic #t))
27988   (current-inspector)
27989   #f
27990   '(0)
27991   #f
27992   '|parsed-#%variable-reference|))
27993(define |struct:parsed-#%variable-reference|
27994  (make-record-type-descriptor*
27995   '|parsed-#%variable-reference|
27996   struct:parsed
27997   (|#%nongenerative-uid| |parsed-#%variable-reference|)
27998   #f
27999   #f
28000   1
28001   0))
28002(define effect_3025 (finish_2388 |struct:parsed-#%variable-reference|))
28003(define |parsed-#%variable-reference11.1|
28004  (|#%name|
28005   |parsed-#%variable-reference|
28006   (record-constructor
28007    (make-record-constructor-descriptor
28008     |struct:parsed-#%variable-reference|
28009     #f
28010     #f))))
28011(define |parsed-#%variable-reference?|
28012  (|#%name|
28013   |parsed-#%variable-reference?|
28014   (record-predicate |struct:parsed-#%variable-reference|)))
28015(define |parsed-#%variable-reference-id|
28016  (|#%name|
28017   |parsed-#%variable-reference-id|
28018   (record-accessor |struct:parsed-#%variable-reference| 0)))
28019(define finish_2060
28020  (make-struct-type-install-properties
28021   '(parsed-begin)
28022   1
28023   0
28024   struct:parsed
28025   (list (cons prop:authentic #t))
28026   (current-inspector)
28027   #f
28028   '(0)
28029   #f
28030   'parsed-begin))
28031(define struct:parsed-begin
28032  (make-record-type-descriptor*
28033   'parsed-begin
28034   struct:parsed
28035   (|#%nongenerative-uid| parsed-begin)
28036   #f
28037   #f
28038   1
28039   0))
28040(define effect_2189 (finish_2060 struct:parsed-begin))
28041(define parsed-begin12.1
28042  (|#%name|
28043   parsed-begin
28044   (record-constructor
28045    (make-record-constructor-descriptor struct:parsed-begin #f #f))))
28046(define parsed-begin?
28047  (|#%name| parsed-begin? (record-predicate struct:parsed-begin)))
28048(define parsed-begin-body
28049  (|#%name| parsed-begin-body (record-accessor struct:parsed-begin 0)))
28050(define finish_2062
28051  (make-struct-type-install-properties
28052   '(parsed-begin0)
28053   1
28054   0
28055   struct:parsed
28056   (list (cons prop:authentic #t))
28057   (current-inspector)
28058   #f
28059   '(0)
28060   #f
28061   'parsed-begin0))
28062(define struct:parsed-begin0
28063  (make-record-type-descriptor*
28064   'parsed-begin0
28065   struct:parsed
28066   (|#%nongenerative-uid| parsed-begin0)
28067   #f
28068   #f
28069   1
28070   0))
28071(define effect_2190 (finish_2062 struct:parsed-begin0))
28072(define parsed-begin013.1
28073  (|#%name|
28074   parsed-begin0
28075   (record-constructor
28076    (make-record-constructor-descriptor struct:parsed-begin0 #f #f))))
28077(define parsed-begin0?
28078  (|#%name| parsed-begin0? (record-predicate struct:parsed-begin0)))
28079(define parsed-begin0-body
28080  (|#%name| parsed-begin0-body (record-accessor struct:parsed-begin0 0)))
28081(define finish_2790
28082  (make-struct-type-install-properties
28083   '(parsed-quote)
28084   1
28085   0
28086   struct:parsed
28087   (list (cons prop:authentic #t))
28088   (current-inspector)
28089   #f
28090   '(0)
28091   #f
28092   'parsed-quote))
28093(define struct:parsed-quote
28094  (make-record-type-descriptor*
28095   'parsed-quote
28096   struct:parsed
28097   (|#%nongenerative-uid| parsed-quote)
28098   #f
28099   #f
28100   1
28101   0))
28102(define effect_2174 (finish_2790 struct:parsed-quote))
28103(define parsed-quote14.1
28104  (|#%name|
28105   parsed-quote
28106   (record-constructor
28107    (make-record-constructor-descriptor struct:parsed-quote #f #f))))
28108(define parsed-quote?
28109  (|#%name| parsed-quote? (record-predicate struct:parsed-quote)))
28110(define parsed-quote-datum
28111  (|#%name| parsed-quote-datum (record-accessor struct:parsed-quote 0)))
28112(define finish_2149
28113  (make-struct-type-install-properties
28114   '(parsed-quote-syntax)
28115   1
28116   0
28117   struct:parsed
28118   (list (cons prop:authentic #t))
28119   (current-inspector)
28120   #f
28121   '(0)
28122   #f
28123   'parsed-quote-syntax))
28124(define struct:parsed-quote-syntax
28125  (make-record-type-descriptor*
28126   'parsed-quote-syntax
28127   struct:parsed
28128   (|#%nongenerative-uid| parsed-quote-syntax)
28129   #f
28130   #f
28131   1
28132   0))
28133(define effect_3320 (finish_2149 struct:parsed-quote-syntax))
28134(define parsed-quote-syntax15.1
28135  (|#%name|
28136   parsed-quote-syntax
28137   (record-constructor
28138    (make-record-constructor-descriptor struct:parsed-quote-syntax #f #f))))
28139(define parsed-quote-syntax?
28140  (|#%name|
28141   parsed-quote-syntax?
28142   (record-predicate struct:parsed-quote-syntax)))
28143(define parsed-quote-syntax-datum
28144  (|#%name|
28145   parsed-quote-syntax-datum
28146   (record-accessor struct:parsed-quote-syntax 0)))
28147(define finish_2373
28148  (make-struct-type-install-properties
28149   '(parsed-let_-values)
28150   3
28151   0
28152   struct:parsed
28153   (list (cons prop:authentic #t))
28154   (current-inspector)
28155   #f
28156   '(0 1 2)
28157   #f
28158   'parsed-let_-values))
28159(define struct:parsed-let_-values
28160  (make-record-type-descriptor*
28161   'parsed-let_-values
28162   struct:parsed
28163   (|#%nongenerative-uid| parsed-let_-values)
28164   #f
28165   #f
28166   3
28167   0))
28168(define effect_2494 (finish_2373 struct:parsed-let_-values))
28169(define parsed-let_-values16.1
28170  (|#%name|
28171   parsed-let_-values
28172   (record-constructor
28173    (make-record-constructor-descriptor struct:parsed-let_-values #f #f))))
28174(define parsed-let_-values?
28175  (|#%name| parsed-let_-values? (record-predicate struct:parsed-let_-values)))
28176(define parsed-let_-values-idss
28177  (|#%name|
28178   parsed-let_-values-idss
28179   (record-accessor struct:parsed-let_-values 0)))
28180(define parsed-let_-values-clauses
28181  (|#%name|
28182   parsed-let_-values-clauses
28183   (record-accessor struct:parsed-let_-values 1)))
28184(define parsed-let_-values-body
28185  (|#%name|
28186   parsed-let_-values-body
28187   (record-accessor struct:parsed-let_-values 2)))
28188(define finish_2586
28189  (make-struct-type-install-properties
28190   '(parsed-let-values)
28191   0
28192   0
28193   struct:parsed-let_-values
28194   (list (cons prop:authentic #t))
28195   (current-inspector)
28196   #f
28197   '()
28198   #f
28199   'parsed-let-values))
28200(define struct:parsed-let-values
28201  (make-record-type-descriptor*
28202   'parsed-let-values
28203   struct:parsed-let_-values
28204   (|#%nongenerative-uid| parsed-let-values)
28205   #f
28206   #f
28207   0
28208   0))
28209(define effect_2429 (finish_2586 struct:parsed-let-values))
28210(define parsed-let-values17.1
28211  (|#%name|
28212   parsed-let-values
28213   (record-constructor
28214    (make-record-constructor-descriptor struct:parsed-let-values #f #f))))
28215(define parsed-let-values?
28216  (|#%name| parsed-let-values? (record-predicate struct:parsed-let-values)))
28217(define finish_2434
28218  (make-struct-type-install-properties
28219   '(parsed-letrec-values)
28220   0
28221   0
28222   struct:parsed-let_-values
28223   (list (cons prop:authentic #t))
28224   (current-inspector)
28225   #f
28226   '()
28227   #f
28228   'parsed-letrec-values))
28229(define struct:parsed-letrec-values
28230  (make-record-type-descriptor*
28231   'parsed-letrec-values
28232   struct:parsed-let_-values
28233   (|#%nongenerative-uid| parsed-letrec-values)
28234   #f
28235   #f
28236   0
28237   0))
28238(define effect_2573 (finish_2434 struct:parsed-letrec-values))
28239(define parsed-letrec-values18.1
28240  (|#%name|
28241   parsed-letrec-values
28242   (record-constructor
28243    (make-record-constructor-descriptor struct:parsed-letrec-values #f #f))))
28244(define parsed-letrec-values?
28245  (|#%name|
28246   parsed-letrec-values?
28247   (record-predicate struct:parsed-letrec-values)))
28248(define finish_2907
28249  (make-struct-type-install-properties
28250   '(parsed-define-values)
28251   3
28252   0
28253   struct:parsed
28254   (list (cons prop:authentic #t))
28255   (current-inspector)
28256   #f
28257   '(0 1 2)
28258   #f
28259   'parsed-define-values))
28260(define struct:parsed-define-values
28261  (make-record-type-descriptor*
28262   'parsed-define-values
28263   struct:parsed
28264   (|#%nongenerative-uid| parsed-define-values)
28265   #f
28266   #f
28267   3
28268   0))
28269(define effect_2826 (finish_2907 struct:parsed-define-values))
28270(define parsed-define-values19.1
28271  (|#%name|
28272   parsed-define-values
28273   (record-constructor
28274    (make-record-constructor-descriptor struct:parsed-define-values #f #f))))
28275(define parsed-define-values?
28276  (|#%name|
28277   parsed-define-values?
28278   (record-predicate struct:parsed-define-values)))
28279(define parsed-define-values-ids
28280  (|#%name|
28281   parsed-define-values-ids
28282   (record-accessor struct:parsed-define-values 0)))
28283(define parsed-define-values-syms
28284  (|#%name|
28285   parsed-define-values-syms
28286   (record-accessor struct:parsed-define-values 1)))
28287(define parsed-define-values-rhs
28288  (|#%name|
28289   parsed-define-values-rhs
28290   (record-accessor struct:parsed-define-values 2)))
28291(define finish_3035
28292  (make-struct-type-install-properties
28293   '(parsed-define-syntaxes)
28294   3
28295   0
28296   struct:parsed
28297   (list (cons prop:authentic #t))
28298   (current-inspector)
28299   #f
28300   '(0 1 2)
28301   #f
28302   'parsed-define-syntaxes))
28303(define struct:parsed-define-syntaxes
28304  (make-record-type-descriptor*
28305   'parsed-define-syntaxes
28306   struct:parsed
28307   (|#%nongenerative-uid| parsed-define-syntaxes)
28308   #f
28309   #f
28310   3
28311   0))
28312(define effect_2530 (finish_3035 struct:parsed-define-syntaxes))
28313(define parsed-define-syntaxes20.1
28314  (|#%name|
28315   parsed-define-syntaxes
28316   (record-constructor
28317    (make-record-constructor-descriptor struct:parsed-define-syntaxes #f #f))))
28318(define parsed-define-syntaxes?
28319  (|#%name|
28320   parsed-define-syntaxes?
28321   (record-predicate struct:parsed-define-syntaxes)))
28322(define parsed-define-syntaxes-ids
28323  (|#%name|
28324   parsed-define-syntaxes-ids
28325   (record-accessor struct:parsed-define-syntaxes 0)))
28326(define parsed-define-syntaxes-syms
28327  (|#%name|
28328   parsed-define-syntaxes-syms
28329   (record-accessor struct:parsed-define-syntaxes 1)))
28330(define parsed-define-syntaxes-rhs
28331  (|#%name|
28332   parsed-define-syntaxes-rhs
28333   (record-accessor struct:parsed-define-syntaxes 2)))
28334(define finish_2438
28335  (make-struct-type-install-properties
28336   '(parsed-begin-for-syntax)
28337   1
28338   0
28339   struct:parsed
28340   (list (cons prop:authentic #t))
28341   (current-inspector)
28342   #f
28343   '(0)
28344   #f
28345   'parsed-begin-for-syntax))
28346(define struct:parsed-begin-for-syntax
28347  (make-record-type-descriptor*
28348   'parsed-begin-for-syntax
28349   struct:parsed
28350   (|#%nongenerative-uid| parsed-begin-for-syntax)
28351   #f
28352   #f
28353   1
28354   0))
28355(define effect_2361 (finish_2438 struct:parsed-begin-for-syntax))
28356(define parsed-begin-for-syntax21.1
28357  (|#%name|
28358   parsed-begin-for-syntax
28359   (record-constructor
28360    (make-record-constructor-descriptor
28361     struct:parsed-begin-for-syntax
28362     #f
28363     #f))))
28364(define parsed-begin-for-syntax?
28365  (|#%name|
28366   parsed-begin-for-syntax?
28367   (record-predicate struct:parsed-begin-for-syntax)))
28368(define parsed-begin-for-syntax-body
28369  (|#%name|
28370   parsed-begin-for-syntax-body
28371   (record-accessor struct:parsed-begin-for-syntax 0)))
28372(define finish_2594
28373  (make-struct-type-install-properties
28374   '(|parsed-#%declare|)
28375   0
28376   0
28377   struct:parsed
28378   (list (cons prop:authentic #t))
28379   (current-inspector)
28380   #f
28381   '()
28382   #f
28383   '|parsed-#%declare|))
28384(define |struct:parsed-#%declare|
28385  (make-record-type-descriptor*
28386   '|parsed-#%declare|
28387   struct:parsed
28388   (|#%nongenerative-uid| |parsed-#%declare|)
28389   #f
28390   #f
28391   0
28392   0))
28393(define effect_2603 (finish_2594 |struct:parsed-#%declare|))
28394(define |parsed-#%declare22.1|
28395  (|#%name|
28396   |parsed-#%declare|
28397   (record-constructor
28398    (make-record-constructor-descriptor |struct:parsed-#%declare| #f #f))))
28399(define |parsed-#%declare?|
28400  (|#%name| |parsed-#%declare?| (record-predicate |struct:parsed-#%declare|)))
28401(define finish_2046
28402  (make-struct-type-install-properties
28403   '(parsed-require)
28404   0
28405   0
28406   struct:parsed
28407   (list (cons prop:authentic #t))
28408   (current-inspector)
28409   #f
28410   '()
28411   #f
28412   'parsed-require))
28413(define struct:parsed-require
28414  (make-record-type-descriptor*
28415   'parsed-require
28416   struct:parsed
28417   (|#%nongenerative-uid| parsed-require)
28418   #f
28419   #f
28420   0
28421   0))
28422(define effect_2194 (finish_2046 struct:parsed-require))
28423(define parsed-require23.1
28424  (|#%name|
28425   parsed-require
28426   (record-constructor
28427    (make-record-constructor-descriptor struct:parsed-require #f #f))))
28428(define parsed-require?
28429  (|#%name| parsed-require? (record-predicate struct:parsed-require)))
28430(define finish_3025
28431  (make-struct-type-install-properties
28432   '(|parsed-#%module-begin|)
28433   1
28434   0
28435   struct:parsed
28436   (list (cons prop:authentic #t))
28437   (current-inspector)
28438   #f
28439   '(0)
28440   #f
28441   '|parsed-#%module-begin|))
28442(define |struct:parsed-#%module-begin|
28443  (make-record-type-descriptor*
28444   '|parsed-#%module-begin|
28445   struct:parsed
28446   (|#%nongenerative-uid| |parsed-#%module-begin|)
28447   #f
28448   #f
28449   1
28450   0))
28451(define effect_2515 (finish_3025 |struct:parsed-#%module-begin|))
28452(define |parsed-#%module-begin24.1|
28453  (|#%name|
28454   |parsed-#%module-begin|
28455   (record-constructor
28456    (make-record-constructor-descriptor
28457     |struct:parsed-#%module-begin|
28458     #f
28459     #f))))
28460(define |parsed-#%module-begin?|
28461  (|#%name|
28462   |parsed-#%module-begin?|
28463   (record-predicate |struct:parsed-#%module-begin|)))
28464(define |parsed-#%module-begin-body|
28465  (|#%name|
28466   |parsed-#%module-begin-body|
28467   (record-accessor |struct:parsed-#%module-begin| 0)))
28468(define finish_2674
28469  (make-struct-type-install-properties
28470   '(parsed-module)
28471   10
28472   0
28473   struct:parsed
28474   (list (cons prop:authentic #t))
28475   (current-inspector)
28476   #f
28477   '(0 1 2 3 4 5 6 7 8 9)
28478   #f
28479   'parsed-module))
28480(define struct:parsed-module
28481  (make-record-type-descriptor*
28482   'parsed-module
28483   struct:parsed
28484   (|#%nongenerative-uid| parsed-module)
28485   #f
28486   #f
28487   10
28488   0))
28489(define effect_2433 (finish_2674 struct:parsed-module))
28490(define parsed-module25.1
28491  (|#%name|
28492   parsed-module
28493   (record-constructor
28494    (make-record-constructor-descriptor struct:parsed-module #f #f))))
28495(define parsed-module?
28496  (|#%name| parsed-module? (record-predicate struct:parsed-module)))
28497(define parsed-module-star?
28498  (|#%name| parsed-module-star? (record-accessor struct:parsed-module 0)))
28499(define parsed-module-name-id
28500  (|#%name| parsed-module-name-id (record-accessor struct:parsed-module 1)))
28501(define parsed-module-self
28502  (|#%name| parsed-module-self (record-accessor struct:parsed-module 2)))
28503(define parsed-module-requires
28504  (|#%name| parsed-module-requires (record-accessor struct:parsed-module 3)))
28505(define parsed-module-provides
28506  (|#%name| parsed-module-provides (record-accessor struct:parsed-module 4)))
28507(define parsed-module-root-ctx-simple?
28508  (|#%name|
28509   parsed-module-root-ctx-simple?
28510   (record-accessor struct:parsed-module 5)))
28511(define parsed-module-encoded-root-ctx
28512  (|#%name|
28513   parsed-module-encoded-root-ctx
28514   (record-accessor struct:parsed-module 6)))
28515(define parsed-module-body
28516  (|#%name| parsed-module-body (record-accessor struct:parsed-module 7)))
28517(define parsed-module-compiled-module
28518  (|#%name|
28519   parsed-module-compiled-module
28520   (record-accessor struct:parsed-module 8)))
28521(define parsed-module-compiled-submodules
28522  (|#%name|
28523   parsed-module-compiled-submodules
28524   (record-accessor struct:parsed-module 9)))
28525(define add-space-scope
28526  (lambda (stx_0 space_0)
28527    (if space_0 (add-scope stx_0 (make-interned-scope space_0)) stx_0)))
28528(define remove-space-scope
28529  (lambda (stx_0 space_0)
28530    (if space_0 (remove-scope stx_0 (make-interned-scope space_0)) stx_0)))
28531(define module-path->mpi.1
28532  (|#%name|
28533   module-path->mpi
28534   (lambda (declared-submodule-names1_0 mod-path3_0 self4_0)
28535     (begin
28536       (if (if (list? mod-path3_0)
28537             (if (= 2 (length mod-path3_0))
28538               (if (eq? 'quote (car mod-path3_0))
28539                 (if (symbol? (cadr mod-path3_0))
28540                   (hash-ref declared-submodule-names1_0 (cadr mod-path3_0) #f)
28541                   #f)
28542                 #f)
28543               #f)
28544             #f)
28545         (1/module-path-index-join
28546          (list 'submod "." (cadr mod-path3_0))
28547          self4_0)
28548         (if (if (list? mod-path3_0)
28549               (if (eq? 'submod (car mod-path3_0))
28550                 (let ((mod-path_0 (cadr mod-path3_0)))
28551                   (if (list? mod-path_0)
28552                     (if (= 2 (length mod-path_0))
28553                       (if (eq? 'quote (car mod-path_0))
28554                         (if (symbol? (cadr mod-path_0))
28555                           (hash-ref
28556                            declared-submodule-names1_0
28557                            (cadr mod-path_0)
28558                            #f)
28559                           #f)
28560                         #f)
28561                       #f)
28562                     #f))
28563                 #f)
28564               #f)
28565           (1/module-path-index-join
28566            (let ((app_0 (cadr (cadr mod-path3_0))))
28567              (list* 'submod "." app_0 (cddr mod-path3_0)))
28568            self4_0)
28569           (1/module-path-index-join mod-path3_0 self4_0)))))))
28570(define module-path->mpi/context
28571  (lambda (mod-path_0 ctx_0)
28572    (let ((temp7_0
28573           (namespace-mpi
28574            (begin-unsafe
28575             (expand-context/inner-namespace
28576              (root-expand-context/outer-inner ctx_0))))))
28577      (let ((temp8_0
28578             (begin-unsafe
28579              (expand-context/inner-declared-submodule-names
28580               (root-expand-context/outer-inner ctx_0)))))
28581        (module-path->mpi.1 temp8_0 mod-path_0 temp7_0)))))
28582(define syntax-mapped-names
28583  (lambda (s_0 phase_0)
28584    (let ((s-scs_0 (syntax-scope-set s_0 phase_0)))
28585      (begin
28586        (letrec*
28587         ((for-loop_0
28588           (|#%name|
28589            for-loop
28590            (lambda (syms_0 i_0)
28591              (begin
28592                (if i_0
28593                  (let ((sc_0 (unsafe-immutable-hash-iterate-key s-scs_0 i_0)))
28594                    (let ((syms_1
28595                           (let ((syms_1
28596                                  (set-union
28597                                   syms_0
28598                                   (binding-table-symbols
28599                                    (scope-binding-table sc_0)
28600                                    s-scs_0
28601                                    s_0
28602                                    null))))
28603                             (values syms_1))))
28604                      (for-loop_0
28605                       syms_1
28606                       (unsafe-immutable-hash-iterate-next s-scs_0 i_0))))
28607                  syms_0))))))
28608         (for-loop_0
28609          (seteq)
28610          (unsafe-immutable-hash-iterate-first s-scs_0)))))))
28611(define finish_2310
28612  (make-struct-type-install-properties
28613   '(requires+provides)
28614   10
28615   0
28616   #f
28617   (list (cons prop:authentic #t))
28618   (current-inspector)
28619   #f
28620   '(0 1 2 3 4 5 6 7)
28621   #f
28622   'requires+provides))
28623(define struct:requires+provides
28624  (make-record-type-descriptor*
28625   'requires+provides
28626   #f
28627   (|#%nongenerative-uid| requires+provides)
28628   #f
28629   #f
28630   10
28631   768))
28632(define effect_3171 (finish_2310 struct:requires+provides))
28633(define requires+provides1.1
28634  (|#%name|
28635   requires+provides
28636   (record-constructor
28637    (make-record-constructor-descriptor struct:requires+provides #f #f))))
28638(define requires+provides?
28639  (|#%name| requires+provides? (record-predicate struct:requires+provides)))
28640(define requires+provides-self
28641  (|#%name|
28642   requires+provides-self
28643   (record-accessor struct:requires+provides 0)))
28644(define requires+provides-require-mpis
28645  (|#%name|
28646   requires+provides-require-mpis
28647   (record-accessor struct:requires+provides 1)))
28648(define requires+provides-require-mpis-in-order
28649  (|#%name|
28650   requires+provides-require-mpis-in-order
28651   (record-accessor struct:requires+provides 2)))
28652(define requires+provides-requires
28653  (|#%name|
28654   requires+provides-requires
28655   (record-accessor struct:requires+provides 3)))
28656(define requires+provides-provides
28657  (|#%name|
28658   requires+provides-provides
28659   (record-accessor struct:requires+provides 4)))
28660(define requires+provides-phase-to-defined-syms
28661  (|#%name|
28662   requires+provides-phase-to-defined-syms
28663   (record-accessor struct:requires+provides 5)))
28664(define requires+provides-also-required
28665  (|#%name|
28666   requires+provides-also-required
28667   (record-accessor struct:requires+provides 6)))
28668(define requires+provides-spaces
28669  (|#%name|
28670   requires+provides-spaces
28671   (record-accessor struct:requires+provides 7)))
28672(define requires+provides-can-cross-phase-persistent?
28673  (|#%name|
28674   requires+provides-can-cross-phase-persistent?
28675   (record-accessor struct:requires+provides 8)))
28676(define requires+provides-all-bindings-simple?
28677  (|#%name|
28678   requires+provides-all-bindings-simple?
28679   (record-accessor struct:requires+provides 9)))
28680(define set-requires+provides-can-cross-phase-persistent?!
28681  (|#%name|
28682   set-requires+provides-can-cross-phase-persistent?!
28683   (record-mutator struct:requires+provides 8)))
28684(define set-requires+provides-all-bindings-simple?!
28685  (|#%name|
28686   set-requires+provides-all-bindings-simple?!
28687   (record-mutator struct:requires+provides 9)))
28688(define finish_2532
28689  (make-struct-type-install-properties
28690   '(required)
28691   4
28692   0
28693   #f
28694   (list (cons prop:authentic #t))
28695   (current-inspector)
28696   #f
28697   '(0 1 2 3)
28698   #f
28699   'required))
28700(define struct:required
28701  (make-record-type-descriptor*
28702   'required
28703   #f
28704   (|#%nongenerative-uid| required)
28705   #f
28706   #f
28707   4
28708   0))
28709(define effect_2757 (finish_2532 struct:required))
28710(define required2.1
28711  (|#%name|
28712   required
28713   (record-constructor
28714    (make-record-constructor-descriptor struct:required #f #f))))
28715(define required? (|#%name| required? (record-predicate struct:required)))
28716(define required-id (|#%name| required-id (record-accessor struct:required 0)))
28717(define required-phase+space
28718  (|#%name| required-phase+space (record-accessor struct:required 1)))
28719(define required-can-be-shadowed?
28720  (|#%name| required-can-be-shadowed? (record-accessor struct:required 2)))
28721(define required-as-transformer?
28722  (|#%name| required-as-transformer? (record-accessor struct:required 3)))
28723(define finish_2664
28724  (make-struct-type-install-properties
28725   '(bulk-required)
28726   5
28727   0
28728   #f
28729   (list (cons prop:authentic #t))
28730   (current-inspector)
28731   #f
28732   '(0 1 2 3 4)
28733   #f
28734   'bulk-required))
28735(define struct:bulk-required
28736  (make-record-type-descriptor*
28737   'bulk-required
28738   #f
28739   (|#%nongenerative-uid| bulk-required)
28740   #f
28741   #f
28742   5
28743   0))
28744(define effect_3099 (finish_2664 struct:bulk-required))
28745(define bulk-required3.1
28746  (|#%name|
28747   bulk-required
28748   (record-constructor
28749    (make-record-constructor-descriptor struct:bulk-required #f #f))))
28750(define bulk-required?
28751  (|#%name| bulk-required? (record-predicate struct:bulk-required)))
28752(define bulk-required-provides
28753  (|#%name| bulk-required-provides (record-accessor struct:bulk-required 0)))
28754(define bulk-required-prefix-len
28755  (|#%name| bulk-required-prefix-len (record-accessor struct:bulk-required 1)))
28756(define bulk-required-s
28757  (|#%name| bulk-required-s (record-accessor struct:bulk-required 2)))
28758(define bulk-required-provide-phase+space
28759  (|#%name|
28760   bulk-required-provide-phase+space
28761   (record-accessor struct:bulk-required 3)))
28762(define bulk-required-can-be-shadowed?
28763  (|#%name|
28764   bulk-required-can-be-shadowed?
28765   (record-accessor struct:bulk-required 4)))
28766(define make-requires+provides.1
28767  (|#%name|
28768   make-requires+provides
28769   (lambda (copy-requires4_0 self6_0)
28770     (begin
28771       (let ((app_0
28772              (if copy-requires4_0
28773                (requires+provides-require-mpis copy-requires4_0)
28774                (make-module-path-index-intern-table))))
28775         (let ((app_1
28776                (if copy-requires4_0
28777                  (hash-copy
28778                   (requires+provides-require-mpis-in-order copy-requires4_0))
28779                  (make-hasheqv))))
28780           (let ((app_2 (make-hasheq)))
28781             (let ((app_3 (make-hasheqv)))
28782               (let ((app_4 (make-hasheqv)))
28783                 (let ((app_5 (make-hasheq)))
28784                   (requires+provides1.1
28785                    self6_0
28786                    app_0
28787                    app_1
28788                    app_2
28789                    app_3
28790                    app_4
28791                    app_5
28792                    (make-hasheq)
28793                    #t
28794                    #t)))))))))))
28795(define requires+provides-reset!
28796  (lambda (r+p_0)
28797    (begin
28798      (hash-clear! (requires+provides-requires r+p_0))
28799      (hash-clear! (requires+provides-provides r+p_0))
28800      (hash-clear! (requires+provides-phase-to-defined-syms r+p_0))
28801      (hash-clear! (requires+provides-also-required r+p_0))
28802      (hash-clear! (requires+provides-spaces r+p_0)))))
28803(define intern-mpi
28804  (lambda (r+p_0 mpi_0)
28805    (intern-module-path-index! (requires+provides-require-mpis r+p_0) mpi_0)))
28806(define add-required-space!
28807  (lambda (r+p_0 space_0)
28808    (if space_0
28809      (hash-set! (requires+provides-spaces r+p_0) space_0 #t)
28810      (void))))
28811(define add-required-module!
28812  (lambda (r+p_0 mod-name_0 phase+space-shift_0 is-cross-phase-persistent?_0)
28813    (let ((mpi_0
28814           (begin-unsafe
28815            (intern-module-path-index!
28816             (requires+provides-require-mpis r+p_0)
28817             mod-name_0))))
28818      (begin
28819        (if (hash-ref
28820             (hash-ref (requires+provides-requires r+p_0) mpi_0 hash2589)
28821             phase+space-shift_0
28822             #f)
28823          (void)
28824          (begin
28825            (let ((ht_0 (requires+provides-require-mpis-in-order r+p_0)))
28826              (let ((key_0
28827                     (phase+space-shift-phase-level phase+space-shift_0)))
28828                (let ((xform_0 (lambda (l_0) (cons mpi_0 l_0))))
28829                  (let ((key_1 key_0) (ht_1 ht_0))
28830                    (begin-unsafe
28831                     (do-hash-update
28832                      'hash-update!
28833                      #t
28834                      hash-set!
28835                      ht_1
28836                      key_1
28837                      xform_0
28838                      null))))))
28839            (let ((app_0
28840                   (hash-ref!
28841                    (requires+provides-requires r+p_0)
28842                    mpi_0
28843                    make-hasheqv)))
28844              (hash-set! app_0 phase+space-shift_0 (make-hasheq)))))
28845        (if is-cross-phase-persistent?_0
28846          (void)
28847          (set-requires+provides-can-cross-phase-persistent?! r+p_0 #f))
28848        mpi_0))))
28849(define add-defined-or-required-id!.1
28850  (|#%name|
28851   add-defined-or-required-id!
28852   (lambda (as-transformer?9_0
28853            can-be-shadowed?8_0
28854            r+p12_0
28855            id13_0
28856            phase+space14_0
28857            binding15_0)
28858     (begin
28859       (begin
28860         (if (eqv?
28861              phase+space14_0
28862              (let ((p+s_0 (module-binding-nominal-phase+space binding15_0)))
28863                (let ((level_0
28864                       (module-binding-nominal-require-phase+space-shift
28865                        binding15_0)))
28866                  (let ((p+s_1 p+s_0))
28867                    (begin-unsafe
28868                     (intern-phase+space (phase+space+$1 p+s_1 level_0)))))))
28869           (void)
28870           (error
28871            "internal error: binding phase+space does not match nominal info"))
28872         (let ((temp102_0 (module-binding-nominal-module binding15_0)))
28873           (let ((temp103_0
28874                  (module-binding-nominal-require-phase+space-shift
28875                   binding15_0)))
28876             (let ((temp102_1 temp102_0))
28877               (add-defined-or-required-id-at-nominal!.1
28878                as-transformer?9_0
28879                can-be-shadowed?8_0
28880                temp102_1
28881                temp103_0
28882                r+p12_0
28883                id13_0
28884                phase+space14_0)))))))))
28885(define add-defined-or-required-id-at-nominal!.1
28886  (|#%name|
28887   add-defined-or-required-id-at-nominal!
28888   (lambda (as-transformer?20_0
28889            can-be-shadowed?19_0
28890            nominal-module17_0
28891            nominal-require-phase+space-shift18_0
28892            r+p25_0
28893            id26_0
28894            phase+space27_0)
28895     (begin
28896       (let ((at-mod_0
28897              (hash-ref!
28898               (requires+provides-requires r+p25_0)
28899               (begin-unsafe
28900                (intern-module-path-index!
28901                 (requires+provides-require-mpis r+p25_0)
28902                 nominal-module17_0))
28903               make-hasheqv)))
28904         (let ((sym-to-reqds_0
28905                (hash-ref!
28906                 at-mod_0
28907                 nominal-require-phase+space-shift18_0
28908                 make-hasheq)))
28909           (let ((sym_0 (syntax-e$1 id26_0)))
28910             (hash-set!
28911              sym-to-reqds_0
28912              sym_0
28913              (let ((app_0
28914                     (required2.1
28915                      id26_0
28916                      phase+space27_0
28917                      can-be-shadowed?19_0
28918                      as-transformer?20_0)))
28919                (cons-ish app_0 (hash-ref sym-to-reqds_0 sym_0 null)))))))))))
28920(define add-bulk-required-ids!.1
28921  (|#%name|
28922   add-bulk-required-ids!
28923   (lambda (accum-update-nominals35_0
28924            can-be-shadowed?33_0
28925            check-and-remove?34_0
28926            excepts30_0
28927            in32_0
28928            prefix29_0
28929            symbols-accum31_0
28930            who36_0
28931            r+p45_0
28932            s46_0
28933            self47_0
28934            nominal-module48_0
28935            phase-level49_0
28936            provides50_0
28937            provide-phase+space51_0)
28938     (begin
28939       (let ((phase+space_0
28940              (begin-unsafe
28941               (intern-phase+space
28942                (phase+space+$1 provide-phase+space51_0 phase-level49_0)))))
28943         (let ((phase_0 (phase+space-phase phase+space_0)))
28944           (let ((space_0 (phase+space-space phase+space_0)))
28945             (let ((s-at-space_0 (add-space-scope s46_0 space_0)))
28946               (let ((shortcut-table_0
28947                      (if check-and-remove?34_0
28948                        (if (> (hash-count provides50_0) 64)
28949                          (syntax-mapped-names s-at-space_0 phase_0)
28950                          #f)
28951                        #f)))
28952                 (let ((mpi_0
28953                        (begin-unsafe
28954                         (intern-module-path-index!
28955                          (requires+provides-require-mpis r+p45_0)
28956                          nominal-module48_0))))
28957                   (let ((at-mod_0
28958                          (hash-ref!
28959                           (requires+provides-requires r+p45_0)
28960                           mpi_0
28961                           make-hasheqv)))
28962                     (let ((sym-to-reqds_0
28963                            (hash-ref! at-mod_0 phase-level49_0 make-hasheq)))
28964                       (let ((prefix-len_0
28965                              (if prefix29_0
28966                                (string-length (symbol->string prefix29_0))
28967                                0)))
28968                         (let ((br_0
28969                                (bulk-required3.1
28970                                 provides50_0
28971                                 prefix-len_0
28972                                 s46_0
28973                                 provide-phase+space51_0
28974                                 can-be-shadowed?33_0)))
28975                           (begin
28976                             (letrec*
28977                              ((for-loop_0
28978                                (|#%name|
28979                                 for-loop
28980                                 (lambda (any-already-defined?_0 i_0)
28981                                   (begin
28982                                     (if i_0
28983                                       (call-with-values
28984                                        (lambda ()
28985                                          (hash-iterate-key+value
28986                                           provides50_0
28987                                           i_0))
28988                                        (case-lambda
28989                                         ((out-sym_0 binding/p_0)
28990                                          (let ((any-already-defined?_1
28991                                                 (if (not
28992                                                      (symbol-interned?
28993                                                       out-sym_0))
28994                                                   any-already-defined?_0
28995                                                   (let ((any-already-defined?_1
28996                                                          (begin
28997                                                            (if symbols-accum31_0
28998                                                              (hash-set!
28999                                                               symbols-accum31_0
29000                                                               out-sym_0
29001                                                               #t)
29002                                                              (void))
29003                                                            (if (hash-ref
29004                                                                 excepts30_0
29005                                                                 out-sym_0
29006                                                                 #f)
29007                                                              #f
29008                                                              (let ((sym_0
29009                                                                     (if (not
29010                                                                          prefix29_0)
29011                                                                       out-sym_0
29012                                                                       (string->symbol
29013                                                                        (let ((app_0
29014                                                                               (symbol->string
29015                                                                                prefix29_0)))
29016                                                                          (string-append
29017                                                                           app_0
29018                                                                           (symbol->string
29019                                                                            out-sym_0)))))))
29020                                                                (let ((bound-status_0
29021                                                                       (if (if check-and-remove?34_0
29022                                                                             (let ((or-part_0
29023                                                                                    (not
29024                                                                                     shortcut-table_0)))
29025                                                                               (if or-part_0
29026                                                                                 or-part_0
29027                                                                                 (hash-ref
29028                                                                                  shortcut-table_0
29029                                                                                  sym_0
29030                                                                                  #f)))
29031                                                                             #f)
29032                                                                         (let ((id_0
29033                                                                                (datum->syntax$1
29034                                                                                 s-at-space_0
29035                                                                                 sym_0
29036                                                                                 s-at-space_0)))
29037                                                                           (begin
29038                                                                             (adjust-shadow-requires!
29039                                                                              r+p45_0
29040                                                                              id_0
29041                                                                              phase_0
29042                                                                              space_0)
29043                                                                             (let ((temp113_0
29044                                                                                    (lambda ()
29045                                                                                      (provide-binding-to-require-binding.1
29046                                                                                       mpi_0
29047                                                                                       phase-level49_0
29048                                                                                       provide-phase+space51_0
29049                                                                                       self47_0
29050                                                                                       binding/p_0
29051                                                                                       sym_0))))
29052                                                                               (check-not-defined.1
29053                                                                                accum-update-nominals35_0
29054                                                                                #t
29055                                                                                #t
29056                                                                                in32_0
29057                                                                                #t
29058                                                                                temp113_0
29059                                                                                who36_0
29060                                                                                r+p45_0
29061                                                                                id_0
29062                                                                                phase_0
29063                                                                                space_0))))
29064                                                                         #f)))
29065                                                                  (let ((already-defined?_0
29066                                                                         (eq?
29067                                                                          bound-status_0
29068                                                                          'defined)))
29069                                                                    (begin
29070                                                                      (if already-defined?_0
29071                                                                        (void)
29072                                                                        (hash-set!
29073                                                                         sym-to-reqds_0
29074                                                                         sym_0
29075                                                                         (cons-ish
29076                                                                          br_0
29077                                                                          (hash-ref
29078                                                                           sym-to-reqds_0
29079                                                                           sym_0
29080                                                                           null))))
29081                                                                      (if any-already-defined?_0
29082                                                                        any-already-defined?_0
29083                                                                        already-defined?_0)))))))))
29084                                                     (values
29085                                                      any-already-defined?_1)))))
29086                                            (for-loop_0
29087                                             any-already-defined?_1
29088                                             (hash-iterate-next
29089                                              provides50_0
29090                                              i_0))))
29091                                         (args
29092                                          (raise-binding-result-arity-error
29093                                           2
29094                                           args))))
29095                                       any-already-defined?_0))))))
29096                              (for-loop_0
29097                               #f
29098                               (hash-iterate-first
29099                                provides50_0))))))))))))))))))
29100(define bulk-required->required
29101  (lambda (br_0 nominal-module_0 phase+space-shift_0 sym_0)
29102    (let ((prefix-len_0 (bulk-required-prefix-len br_0)))
29103      (let ((out-sym_0
29104             (if (zero? prefix-len_0)
29105               sym_0
29106               (string->symbol
29107                (substring (symbol->string sym_0) prefix-len_0)))))
29108        (let ((binding/p_0 (hash-ref (bulk-required-provides br_0) out-sym_0)))
29109          (let ((p+s_0 (bulk-required-provide-phase+space br_0)))
29110            (let ((phase+space_0
29111                   (begin-unsafe
29112                    (intern-phase+space
29113                     (phase+space+$1 p+s_0 phase+space-shift_0)))))
29114              (let ((app_0
29115                     (let ((app_0
29116                            (datum->syntax$1 (bulk-required-s br_0) sym_0)))
29117                       (add-space-scope
29118                        app_0
29119                        (phase+space-space phase+space_0)))))
29120                (required2.1
29121                 app_0
29122                 phase+space_0
29123                 (bulk-required-can-be-shadowed? br_0)
29124                 (provided-as-transformer? binding/p_0))))))))))
29125(define normalize-required
29126  (lambda (r_0 mod-name_0 phase+space-shift_0 sym_0)
29127    (if (bulk-required? r_0)
29128      (bulk-required->required r_0 mod-name_0 phase+space-shift_0 sym_0)
29129      r_0)))
29130(define add-enclosing-module-defined-and-required!.1
29131  (|#%name|
29132   add-enclosing-module-defined-and-required!
29133   (lambda (enclosing-requires+provides53_0
29134            r+p55_0
29135            enclosing-mod56_0
29136            phase-level57_0)
29137     (begin
29138       (begin
29139         (set-requires+provides-all-bindings-simple?! r+p55_0 #f)
29140         (let ((ht_0
29141                (requires+provides-requires enclosing-requires+provides53_0)))
29142           (begin
29143             (letrec*
29144              ((for-loop_0
29145                (|#%name|
29146                 for-loop
29147                 (lambda (i_0)
29148                   (begin
29149                     (if i_0
29150                       (call-with-values
29151                        (lambda () (hash-iterate-key+value ht_0 i_0))
29152                        (case-lambda
29153                         ((mod-name_0 at-mod_0)
29154                          (begin
29155                            (begin
29156                              (begin
29157                                (letrec*
29158                                 ((for-loop_1
29159                                   (|#%name|
29160                                    for-loop
29161                                    (lambda (i_1)
29162                                      (begin
29163                                        (if i_1
29164                                          (call-with-values
29165                                           (lambda ()
29166                                             (hash-iterate-key+value
29167                                              at-mod_0
29168                                              i_1))
29169                                           (case-lambda
29170                                            ((phase+space-shift_0 at-phase_0)
29171                                             (call-with-values
29172                                              (lambda ()
29173                                                (begin
29174                                                  (letrec*
29175                                                   ((for-loop_2
29176                                                     (|#%name|
29177                                                      for-loop
29178                                                      (lambda (i_2)
29179                                                        (begin
29180                                                          (if i_2
29181                                                            (call-with-values
29182                                                             (lambda ()
29183                                                               (hash-iterate-key+value
29184                                                                at-phase_0
29185                                                                i_2))
29186                                                             (case-lambda
29187                                                              ((sym_0 reqds_0)
29188                                                               (call-with-values
29189                                                                (lambda ()
29190                                                                  (begin
29191                                                                    (letrec*
29192                                                                     ((for-loop_3
29193                                                                       (|#%name|
29194                                                                        for-loop
29195                                                                        (lambda (lst_0)
29196                                                                          (begin
29197                                                                            (if (not
29198                                                                                 (null?
29199                                                                                  lst_0))
29200                                                                              (let ((reqd/maybe-bulk_0
29201                                                                                     (if (pair?
29202                                                                                          lst_0)
29203                                                                                       (car
29204                                                                                        lst_0)
29205                                                                                       lst_0)))
29206                                                                                (let ((rest_0
29207                                                                                       (if (pair?
29208                                                                                            lst_0)
29209                                                                                         (cdr
29210                                                                                          lst_0)
29211                                                                                         null)))
29212                                                                                  (let ((reqd/maybe-bulk_1
29213                                                                                         reqd/maybe-bulk_0))
29214                                                                                    (begin
29215                                                                                      (let ((reqd_0
29216                                                                                             (begin-unsafe
29217                                                                                              (if (bulk-required?
29218                                                                                                   reqd/maybe-bulk_1)
29219                                                                                                (bulk-required->required
29220                                                                                                 reqd/maybe-bulk_1
29221                                                                                                 mod-name_0
29222                                                                                                 phase+space-shift_0
29223                                                                                                 sym_0)
29224                                                                                                reqd/maybe-bulk_1))))
29225                                                                                        (let ((temp124_0
29226                                                                                               (syntax-shift-phase-level$1
29227                                                                                                (let ((temp130_0
29228                                                                                                       (required-id
29229                                                                                                        reqd_0)))
29230                                                                                                  (let ((temp131_0
29231                                                                                                         (requires+provides-self
29232                                                                                                          enclosing-requires+provides53_0)))
29233                                                                                                    (syntax-module-path-index-shift.1
29234                                                                                                     #f
29235                                                                                                     temp130_0
29236                                                                                                     temp131_0
29237                                                                                                     enclosing-mod56_0
29238                                                                                                     #f)))
29239                                                                                                phase-level57_0)))
29240                                                                                          (let ((temp125_0
29241                                                                                                 (let ((p+s_0
29242                                                                                                        (required-phase+space
29243                                                                                                         reqd_0)))
29244                                                                                                   (begin-unsafe
29245                                                                                                    (intern-phase+space
29246                                                                                                     (phase+space+$1
29247                                                                                                      p+s_0
29248                                                                                                      phase-level57_0))))))
29249                                                                                            (let ((temp129_0
29250                                                                                                   (required-as-transformer?
29251                                                                                                    reqd_0)))
29252                                                                                              (let ((temp125_1
29253                                                                                                     temp125_0)
29254                                                                                                    (temp124_1
29255                                                                                                     temp124_0))
29256                                                                                                (add-defined-or-required-id-at-nominal!.1
29257                                                                                                 temp129_0
29258                                                                                                 #t
29259                                                                                                 enclosing-mod56_0
29260                                                                                                 phase-level57_0
29261                                                                                                 r+p55_0
29262                                                                                                 temp124_1
29263                                                                                                 temp125_1))))))
29264                                                                                      (for-loop_3
29265                                                                                       rest_0)))))
29266                                                                              (values)))))))
29267                                                                     (for-loop_3
29268                                                                      reqds_0))))
29269                                                                (case-lambda
29270                                                                 (()
29271                                                                  (for-loop_2
29272                                                                   (hash-iterate-next
29273                                                                    at-phase_0
29274                                                                    i_2)))
29275                                                                 (args
29276                                                                  (raise-binding-result-arity-error
29277                                                                   0
29278                                                                   args)))))
29279                                                              (args
29280                                                               (raise-binding-result-arity-error
29281                                                                2
29282                                                                args))))
29283                                                            (values)))))))
29284                                                   (for-loop_2
29285                                                    (hash-iterate-first
29286                                                     at-phase_0)))))
29287                                              (case-lambda
29288                                               (()
29289                                                (for-loop_1
29290                                                 (hash-iterate-next
29291                                                  at-mod_0
29292                                                  i_1)))
29293                                               (args
29294                                                (raise-binding-result-arity-error
29295                                                 0
29296                                                 args)))))
29297                                            (args
29298                                             (raise-binding-result-arity-error
29299                                              2
29300                                              args))))
29301                                          (values)))))))
29302                                 (for-loop_1 (hash-iterate-first at-mod_0))))
29303                              (void))
29304                            (for-loop_0 (hash-iterate-next ht_0 i_0))))
29305                         (args (raise-binding-result-arity-error 2 args))))
29306                       (values)))))))
29307              (for-loop_0 (hash-iterate-first ht_0)))))
29308         (void))))))
29309(define remove-required-id!
29310  (lambda (r+p_0 id_0 phase_0)
29311    (let ((remove!_0
29312           (|#%name|
29313            remove!
29314            (lambda (bind-as-ambiguous?133_0 id135_0)
29315              (begin
29316                (let ((b_0
29317                       (resolve+shift.1
29318                        #f
29319                        #t
29320                        null
29321                        unsafe-undefined
29322                        #f
29323                        id135_0
29324                        phase_0)))
29325                  (if (if (module-binding? b_0)
29326                        (not
29327                         (eq?
29328                          (requires+provides-self r+p_0)
29329                          (module-binding-module b_0)))
29330                        #f)
29331                    (begin
29332                      (if bind-as-ambiguous?133_0
29333                        (let ((temp142_0 (like-ambiguous-binding1.1)))
29334                          (add-binding!.1 #f #f id135_0 temp142_0 phase_0))
29335                        (void))
29336                      (let ((mpi_0
29337                             (let ((mpi_0 (module-binding-nominal-module b_0)))
29338                               (begin-unsafe
29339                                (intern-module-path-index!
29340                                 (requires+provides-require-mpis r+p_0)
29341                                 mpi_0)))))
29342                        (let ((at-mod_0
29343                               (hash-ref
29344                                (requires+provides-requires r+p_0)
29345                                mpi_0
29346                                #f)))
29347                          (if at-mod_0
29348                            (let ((nominal-phase+space-shift_0
29349                                   (module-binding-nominal-require-phase+space-shift
29350                                    b_0)))
29351                              (let ((sym-to-reqds_0
29352                                     (hash-ref
29353                                      at-mod_0
29354                                      nominal-phase+space-shift_0
29355                                      #f)))
29356                                (if sym-to-reqds_0
29357                                  (let ((sym_0 (syntax-e$1 id135_0)))
29358                                    (let ((l_0
29359                                           (hash-ref
29360                                            sym-to-reqds_0
29361                                            sym_0
29362                                            null)))
29363                                      (if (null? l_0)
29364                                        (void)
29365                                        (hash-set!
29366                                         sym-to-reqds_0
29367                                         sym_0
29368                                         (remove-non-matching-requireds
29369                                          l_0
29370                                          id135_0
29371                                          phase_0
29372                                          mpi_0
29373                                          nominal-phase+space-shift_0
29374                                          sym_0)))))
29375                                  (void))))
29376                            (void)))))
29377                    (void))))))))
29378      (begin
29379        (remove!_0 #f id_0)
29380        (let ((ht_0 (requires+provides-spaces r+p_0)))
29381          (begin
29382            (letrec*
29383             ((for-loop_0
29384               (|#%name|
29385                for-loop
29386                (lambda (i_0)
29387                  (begin
29388                    (if i_0
29389                      (let ((space_0 (hash-iterate-key ht_0 i_0)))
29390                        (begin
29391                          (let ((temp144_0 (add-space-scope id_0 space_0)))
29392                            (remove!_0 #t temp144_0))
29393                          (for-loop_0 (hash-iterate-next ht_0 i_0))))
29394                      (values)))))))
29395             (for-loop_0 (hash-iterate-first ht_0)))))
29396        (void)))))
29397(define remove-non-matching-requireds
29398  (lambda (reqds_0 id_0 phase_0 mpi_0 nominal-phase+space-shift_0 sym_0)
29399    (reverse$1
29400     (begin
29401       (letrec*
29402        ((for-loop_0
29403          (|#%name|
29404           for-loop
29405           (lambda (fold-var_0 lst_0)
29406             (begin
29407               (if (not (null? lst_0))
29408                 (let ((r_0 (if (pair? lst_0) (car lst_0) lst_0)))
29409                   (let ((rest_0 (if (pair? lst_0) (cdr lst_0) null)))
29410                     (let ((r_1 r_0))
29411                       (let ((fold-var_1
29412                              (let ((id*_0
29413                                     (begin-unsafe
29414                                      (if (bulk-required? r_1)
29415                                        (bulk-required->required
29416                                         r_1
29417                                         mpi_0
29418                                         nominal-phase+space-shift_0
29419                                         sym_0)
29420                                        r_1))))
29421                                (begin
29422                                  #t
29423                                  (letrec*
29424                                   ((for-loop_1
29425                                     (|#%name|
29426                                      for-loop
29427                                      (lambda (fold-var_1)
29428                                        (begin
29429                                          (let ((fold-var_2
29430                                                 (if (if (eqv?
29431                                                          phase_0
29432                                                          (phase+space-phase
29433                                                           (required-phase+space
29434                                                            id*_0)))
29435                                                       (free-identifier=?$1
29436                                                        (required-id id*_0)
29437                                                        id_0
29438                                                        phase_0
29439                                                        phase_0)
29440                                                       #f)
29441                                                   fold-var_1
29442                                                   (let ((fold-var_2
29443                                                          (cons
29444                                                           id*_0
29445                                                           fold-var_1)))
29446                                                     (values fold-var_2)))))
29447                                            fold-var_2))))))
29448                                   (for-loop_1 fold-var_0))))))
29449                         (for-loop_0 fold-var_1 rest_0)))))
29450                 fold-var_0))))))
29451        (for-loop_0 null reqds_0))))))
29452(define check-not-defined.1
29453  (|#%name|
29454   check-not-defined
29455   (lambda (accum-update-nominals64_0
29456            allow-defined?60_0
29457            check-not-required?59_0
29458            in61_0
29459            remove-shadowed!?63_0
29460            unless-matches62_0
29461            who65_0
29462            r+p73_0
29463            id74_0
29464            phase75_0
29465            space76_0)
29466     (begin
29467       (let ((b_0
29468              (resolve+shift.1
29469               #f
29470               #t
29471               null
29472               unsafe-undefined
29473               #f
29474               id74_0
29475               phase75_0)))
29476         (let ((check-default-space_0
29477                (|#%name|
29478                 check-default-space
29479                 (lambda ()
29480                   (begin
29481                     (if (let ((or-part_0 (not space76_0)))
29482                           (if or-part_0
29483                             or-part_0
29484                             (not check-not-required?59_0)))
29485                       #f
29486                       (let ((default-b_0
29487                              (let ((temp149_0
29488                                     (remove-space-scope id74_0 space76_0)))
29489                                (resolve+shift.1
29490                                 #f
29491                                 #t
29492                                 null
29493                                 unsafe-undefined
29494                                 #f
29495                                 temp149_0
29496                                 phase75_0))))
29497                         (let ((defined?_0
29498                                (if default-b_0
29499                                  (eq?
29500                                   (requires+provides-self r+p73_0)
29501                                   (module-binding-module default-b_0))
29502                                  #f)))
29503                           (if defined?_0
29504                             (begin
29505                               (let ((temp153_0 (like-ambiguous-binding1.1)))
29506                                 (add-binding!.1
29507                                  #f
29508                                  #f
29509                                  id74_0
29510                                  temp153_0
29511                                  phase75_0))
29512                               'defined)
29513                             #f)))))))))
29514           (if (not b_0)
29515             (check-default-space_0)
29516             (if (not (module-binding? b_0))
29517               (raise-syntax-error$1 #f "identifier out of context" id74_0)
29518               (let ((defined?_0
29519                      (if b_0
29520                        (eq?
29521                         (requires+provides-self r+p73_0)
29522                         (module-binding-module b_0))
29523                        #f)))
29524                 (if (if defined?_0
29525                       (not
29526                        (let ((app_0
29527                               (hash-ref
29528                                (requires+provides-phase-to-defined-syms
29529                                 r+p73_0)
29530                                phase75_0
29531                                hash2610)))
29532                          (hash-ref app_0 (module-binding-sym b_0) #f)))
29533                       #f)
29534                   (check-default-space_0)
29535                   (let ((define-shadowing-require?_0
29536                          (if (not defined?_0)
29537                            (not check-not-required?59_0)
29538                            #f)))
29539                     (let ((mpi_0
29540                            (let ((mpi_0 (module-binding-nominal-module b_0)))
29541                              (begin-unsafe
29542                               (intern-module-path-index!
29543                                (requires+provides-require-mpis r+p73_0)
29544                                mpi_0)))))
29545                       (let ((at-mod_0
29546                              (hash-ref
29547                               (requires+provides-requires r+p73_0)
29548                               mpi_0
29549                               #f)))
29550                         (let ((ok-binding_0
29551                                (if (not define-shadowing-require?_0)
29552                                  (if (procedure? unless-matches62_0)
29553                                    (|#%app| unless-matches62_0)
29554                                    unless-matches62_0)
29555                                  #f)))
29556                           (let ((raise-already-bound_0
29557                                  (|#%name|
29558                                   raise-already-bound
29559                                   (lambda (defined?_1 where_0)
29560                                     (begin
29561                                       (let ((app_0
29562                                              (let ((app_0
29563                                                     (if defined?_1
29564                                                       "defined"
29565                                                       "required")))
29566                                                (string-append
29567                                                 "identifier already "
29568                                                 app_0
29569                                                 (if (begin-unsafe
29570                                                      (eq? phase75_0 0))
29571                                                   ""
29572                                                   (if (begin-unsafe
29573                                                        (not phase75_0))
29574                                                     " for label"
29575                                                     (if (= 1 phase75_0)
29576                                                       " for syntax"
29577                                                       (format
29578                                                        " for phase ~a"
29579                                                        phase75_0))))))))
29580                                         (raise-syntax-error$1
29581                                          who65_0
29582                                          app_0
29583                                          in61_0
29584                                          id74_0
29585                                          null
29586                                          (if (bulk-required? where_0)
29587                                            (format
29588                                             "\n  also provided by: ~.s"
29589                                             (syntax->datum$1
29590                                              (bulk-required-s where_0)))
29591                                            ""))))))))
29592                             (if (if (not at-mod_0)
29593                                   (not define-shadowing-require?_0)
29594                                   #f)
29595                               (check-default-space_0)
29596                               (if (if ok-binding_0
29597                                     (same-binding? b_0 ok-binding_0)
29598                                     #f)
29599                                 (begin
29600                                   (if (same-binding-nominals?
29601                                        b_0
29602                                        ok-binding_0)
29603                                     (void)
29604                                     (let ((update!_0
29605                                            (|#%name|
29606                                             update!
29607                                             (lambda ()
29608                                               (begin
29609                                                 (let ((temp157_0
29610                                                        (let ((temp160_0
29611                                                               (cons
29612                                                                b_0
29613                                                                (module-binding-extra-nominal-bindings
29614                                                                 b_0))))
29615                                                          (module-binding-update.1
29616                                                           unsafe-undefined
29617                                                           temp160_0
29618                                                           unsafe-undefined
29619                                                           unsafe-undefined
29620                                                           unsafe-undefined
29621                                                           unsafe-undefined
29622                                                           unsafe-undefined
29623                                                           unsafe-undefined
29624                                                           unsafe-undefined
29625                                                           unsafe-undefined
29626                                                           unsafe-undefined
29627                                                           ok-binding_0))))
29628                                                   (add-binding!.1
29629                                                    #f
29630                                                    #t
29631                                                    id74_0
29632                                                    temp157_0
29633                                                    phase75_0)))))))
29634                                       (if accum-update-nominals64_0
29635                                         (set-box!
29636                                          accum-update-nominals64_0
29637                                          (cons
29638                                           update!_0
29639                                           (unbox accum-update-nominals64_0)))
29640                                         (update!_0))))
29641                                   (if defined?_0 'defined 'required))
29642                                 (if (if defined?_0 allow-defined?60_0 #f)
29643                                   (let ((also-required_0
29644                                          (requires+provides-also-required
29645                                           r+p73_0)))
29646                                     (let ((prev-b_0
29647                                            (hash-ref
29648                                             also-required_0
29649                                             (module-binding-sym b_0)
29650                                             #f)))
29651                                       (begin
29652                                         (if (if prev-b_0
29653                                               (not
29654                                                (same-binding?
29655                                                 ok-binding_0
29656                                                 prev-b_0))
29657                                               #f)
29658                                           (raise-already-bound_0 #f #f)
29659                                           (void))
29660                                         (hash-set!
29661                                          also-required_0
29662                                          (module-binding-sym b_0)
29663                                          ok-binding_0)
29664                                         (set-requires+provides-all-bindings-simple?!
29665                                          r+p73_0
29666                                          #f)
29667                                         'defined)))
29668                                   (let ((nominal-phase+space-shift_0
29669                                          (module-binding-nominal-require-phase+space-shift
29670                                           b_0)))
29671                                     (let ((sym-to-reqds_0
29672                                            (hash-ref
29673                                             at-mod_0
29674                                             nominal-phase+space-shift_0
29675                                             hash2610)))
29676                                       (let ((reqds_0
29677                                              (hash-ref
29678                                               sym-to-reqds_0
29679                                               (syntax-e$1 id74_0)
29680                                               null)))
29681                                         (let ((only-can-can-shadow-require?_0
29682                                                (begin
29683                                                  (letrec*
29684                                                   ((for-loop_0
29685                                                     (|#%name|
29686                                                      for-loop
29687                                                      (lambda (only-can-can-shadow-require?_0
29688                                                               lst_0)
29689                                                        (begin
29690                                                          (if (not
29691                                                               (null? lst_0))
29692                                                            (let ((r_0
29693                                                                   (if (pair?
29694                                                                        lst_0)
29695                                                                     (car
29696                                                                      lst_0)
29697                                                                     lst_0)))
29698                                                              (let ((rest_0
29699                                                                     (if (pair?
29700                                                                          lst_0)
29701                                                                       (cdr
29702                                                                        lst_0)
29703                                                                       null)))
29704                                                                (let ((r_1
29705                                                                       r_0))
29706                                                                  (let ((only-can-can-shadow-require?_1
29707                                                                         (let ((only-can-can-shadow-require?_1
29708                                                                                (if (if (bulk-required?
29709                                                                                         r_1)
29710                                                                                      (bulk-required-can-be-shadowed?
29711                                                                                       r_1)
29712                                                                                      (required-can-be-shadowed?
29713                                                                                       r_1))
29714                                                                                  (begin
29715                                                                                    (set-requires+provides-all-bindings-simple?!
29716                                                                                     r+p73_0
29717                                                                                     #f)
29718                                                                                    only-can-can-shadow-require?_0)
29719                                                                                  (if define-shadowing-require?_0
29720                                                                                    #f
29721                                                                                    (raise-already-bound_0
29722                                                                                     defined?_0
29723                                                                                     r_1)))))
29724                                                                           (values
29725                                                                            only-can-can-shadow-require?_1))))
29726                                                                    (for-loop_0
29727                                                                     only-can-can-shadow-require?_1
29728                                                                     rest_0)))))
29729                                                            only-can-can-shadow-require?_0))))))
29730                                                   (for-loop_0 #t reqds_0)))))
29731                                           (begin
29732                                             (if define-shadowing-require?_0
29733                                               (begin
29734                                                 (set-requires+provides-all-bindings-simple?!
29735                                                  r+p73_0
29736                                                  #f)
29737                                                 (if only-can-can-shadow-require?_0
29738                                                   (void)
29739                                                   (hash-set!
29740                                                    (requires+provides-also-required
29741                                                     r+p73_0)
29742                                                    (module-binding-sym b_0)
29743                                                    b_0)))
29744                                               (if (if remove-shadowed!?63_0
29745                                                     (not (null? reqds_0))
29746                                                     #f)
29747                                                 (let ((app_0
29748                                                        (syntax-e$1 id74_0)))
29749                                                   (hash-set!
29750                                                    sym-to-reqds_0
29751                                                    app_0
29752                                                    (remove-non-matching-requireds
29753                                                     reqds_0
29754                                                     id74_0
29755                                                     phase75_0
29756                                                     mpi_0
29757                                                     nominal-phase+space-shift_0
29758                                                     (syntax-e$1 id74_0))))
29759                                                 (void)))
29760                                             #f)))))))))))))))))))))))
29761(define adjust-shadow-requires!
29762  (lambda (r+p_0 id_0 phase_0 space_0)
29763    (if space_0
29764      (void)
29765      (begin
29766        (let ((ht_0 (requires+provides-spaces r+p_0)))
29767          (begin
29768            (letrec*
29769             ((for-loop_0
29770               (|#%name|
29771                for-loop
29772                (lambda (i_0)
29773                  (begin
29774                    (if i_0
29775                      (let ((space_1 (hash-iterate-key ht_0 i_0)))
29776                        (begin
29777                          (let ((space-id_0 (add-space-scope id_0 space_1)))
29778                            (let ((b_0
29779                                   (resolve+shift.1
29780                                    #f
29781                                    #t
29782                                    null
29783                                    unsafe-undefined
29784                                    #f
29785                                    space-id_0
29786                                    phase_0)))
29787                              (if (if (module-binding? b_0)
29788                                    (not
29789                                     (eq?
29790                                      (requires+provides-self r+p_0)
29791                                      (module-binding-module b_0)))
29792                                    #f)
29793                                (let ((mpi_0
29794                                       (let ((mpi_0
29795                                              (module-binding-nominal-module
29796                                               b_0)))
29797                                         (begin-unsafe
29798                                          (intern-module-path-index!
29799                                           (requires+provides-require-mpis
29800                                            r+p_0)
29801                                           mpi_0)))))
29802                                  (let ((at-mod_0
29803                                         (hash-ref
29804                                          (requires+provides-requires r+p_0)
29805                                          mpi_0
29806                                          #f)))
29807                                    (let ((nominal-phase+space-shift_0
29808                                           (module-binding-nominal-require-phase+space-shift
29809                                            b_0)))
29810                                      (let ((sym-to-reqds_0
29811                                             (hash-ref
29812                                              at-mod_0
29813                                              nominal-phase+space-shift_0
29814                                              hash2610)))
29815                                        (let ((reqds_0
29816                                               (hash-ref
29817                                                sym-to-reqds_0
29818                                                (syntax-e$1 id_0)
29819                                                null)))
29820                                          (if (begin
29821                                                (letrec*
29822                                                 ((for-loop_1
29823                                                   (|#%name|
29824                                                    for-loop
29825                                                    (lambda (result_0 lst_0)
29826                                                      (begin
29827                                                        (if (not (null? lst_0))
29828                                                          (let ((r_0
29829                                                                 (if (pair?
29830                                                                      lst_0)
29831                                                                   (car lst_0)
29832                                                                   lst_0)))
29833                                                            (let ((rest_0
29834                                                                   (if (pair?
29835                                                                        lst_0)
29836                                                                     (cdr
29837                                                                      lst_0)
29838                                                                     null)))
29839                                                              (let ((r_1 r_0))
29840                                                                (let ((result_1
29841                                                                       (let ((result_1
29842                                                                              (if (bulk-required?
29843                                                                                   r_1)
29844                                                                                (bulk-required-can-be-shadowed?
29845                                                                                 r_1)
29846                                                                                (required-can-be-shadowed?
29847                                                                                 r_1))))
29848                                                                         (values
29849                                                                          result_1))))
29850                                                                  (if (if (not
29851                                                                           (let ((x_0
29852                                                                                  (list
29853                                                                                   r_1)))
29854                                                                             (not
29855                                                                              result_1)))
29856                                                                        #t
29857                                                                        #f)
29858                                                                    (for-loop_1
29859                                                                     result_1
29860                                                                     rest_0)
29861                                                                    result_1)))))
29862                                                          result_0))))))
29863                                                 (for-loop_1 #t reqds_0)))
29864                                            (begin
29865                                              (let ((app_0 (syntax-e$1 id_0)))
29866                                                (hash-set!
29867                                                 sym-to-reqds_0
29868                                                 app_0
29869                                                 (remove-non-matching-requireds
29870                                                  reqds_0
29871                                                  space-id_0
29872                                                  phase_0
29873                                                  mpi_0
29874                                                  nominal-phase+space-shift_0
29875                                                  (syntax-e$1 id_0))))
29876                                              (let ((temp165_0
29877                                                     (like-ambiguous-binding1.1)))
29878                                                (add-binding!.1
29879                                                 #f
29880                                                 #f
29881                                                 space-id_0
29882                                                 temp165_0
29883                                                 phase_0)))
29884                                            (void)))))))
29885                                (void))))
29886                          (for-loop_0 (hash-iterate-next ht_0 i_0))))
29887                      (values)))))))
29888             (for-loop_0 (hash-iterate-first ht_0)))))
29889        (void)))))
29890(define add-defined-syms!.1
29891  (|#%name|
29892   add-defined-syms!
29893   (lambda (as-transformer?78_0 r+p80_0 syms81_0 phase82_0)
29894     (begin
29895       (let ((phase-to-defined-syms_0
29896              (requires+provides-phase-to-defined-syms r+p80_0)))
29897         (let ((defined-syms_0
29898                (hash-ref phase-to-defined-syms_0 phase82_0 hash2610)))
29899           (let ((new-defined-syms_0
29900                  (begin
29901                    (letrec*
29902                     ((for-loop_0
29903                       (|#%name|
29904                        for-loop
29905                        (lambda (defined-syms_1 lst_0)
29906                          (begin
29907                            (if (pair? lst_0)
29908                              (let ((sym_0 (unsafe-car lst_0)))
29909                                (let ((rest_0 (unsafe-cdr lst_0)))
29910                                  (let ((defined-syms_2
29911                                         (let ((defined-syms_2
29912                                                (hash-set
29913                                                 defined-syms_1
29914                                                 sym_0
29915                                                 (if as-transformer?78_0
29916                                                   'transformer
29917                                                   'variable))))
29918                                           (values defined-syms_2))))
29919                                    (for-loop_0 defined-syms_2 rest_0))))
29920                              defined-syms_1))))))
29921                     (for-loop_0 defined-syms_0 syms81_0)))))
29922             (hash-set!
29923              phase-to-defined-syms_0
29924              phase82_0
29925              new-defined-syms_0))))))))
29926(define defined-sym-kind
29927  (lambda (r+p_0 sym_0 phase_0)
29928    (let ((phase-to-defined-syms_0
29929           (requires+provides-phase-to-defined-syms r+p_0)))
29930      (let ((defined-syms_0
29931             (hash-ref phase-to-defined-syms_0 phase_0 hash2610)))
29932        (hash-ref defined-syms_0 sym_0 #f)))))
29933(define extract-module-requires
29934  (lambda (r+p_0 mod-name_0 phase+space-shift_0)
29935    (let ((mpi_0
29936           (begin-unsafe
29937            (intern-module-path-index!
29938             (requires+provides-require-mpis r+p_0)
29939             mod-name_0))))
29940      (let ((at-mod_0 (hash-ref (requires+provides-requires r+p_0) mpi_0 #f)))
29941        (if at-mod_0
29942          (reverse$1
29943           (let ((ht_0 (hash-ref at-mod_0 phase+space-shift_0 hash2610)))
29944             (begin
29945               (letrec*
29946                ((for-loop_0
29947                  (|#%name|
29948                   for-loop
29949                   (lambda (fold-var_0 i_0)
29950                     (begin
29951                       (if i_0
29952                         (call-with-values
29953                          (lambda () (hash-iterate-key+value ht_0 i_0))
29954                          (case-lambda
29955                           ((sym_0 reqds_0)
29956                            (let ((fold-var_1
29957                                   (begin
29958                                     (letrec*
29959                                      ((for-loop_1
29960                                        (|#%name|
29961                                         for-loop
29962                                         (lambda (fold-var_1 lst_0)
29963                                           (begin
29964                                             (if (not (null? lst_0))
29965                                               (let ((reqd_0
29966                                                      (if (pair? lst_0)
29967                                                        (car lst_0)
29968                                                        lst_0)))
29969                                                 (let ((rest_0
29970                                                        (if (pair? lst_0)
29971                                                          (cdr lst_0)
29972                                                          null)))
29973                                                   (let ((reqd_1 reqd_0))
29974                                                     (let ((fold-var_2
29975                                                            (let ((fold-var_2
29976                                                                   (cons
29977                                                                    (begin-unsafe
29978                                                                     (if (bulk-required?
29979                                                                          reqd_1)
29980                                                                       (bulk-required->required
29981                                                                        reqd_1
29982                                                                        mpi_0
29983                                                                        phase+space-shift_0
29984                                                                        sym_0)
29985                                                                       reqd_1))
29986                                                                    fold-var_1)))
29987                                                              (values
29988                                                               fold-var_2))))
29989                                                       (for-loop_1
29990                                                        fold-var_2
29991                                                        rest_0)))))
29992                                               fold-var_1))))))
29993                                      (for-loop_1 fold-var_0 reqds_0)))))
29994                              (for-loop_0
29995                               fold-var_1
29996                               (hash-iterate-next ht_0 i_0))))
29997                           (args (raise-binding-result-arity-error 2 args))))
29998                         fold-var_0))))))
29999                (for-loop_0 null (hash-iterate-first ht_0))))))
30000          #f)))))
30001(define extract-module-definitions
30002  (lambda (r+p_0)
30003    (let ((or-part_0
30004           (extract-module-requires r+p_0 (requires+provides-self r+p_0) 0)))
30005      (if or-part_0 or-part_0 null))))
30006(define extract-all-module-requires
30007  (lambda (r+p_0 mod-name_0 phase+space-shift_0)
30008    (let ((self_0 (requires+provides-self r+p_0)))
30009      (let ((requires_0 (requires+provides-requires r+p_0)))
30010        (call-with-escape-continuation
30011         (lambda (esc_0)
30012           (reverse$1
30013            (let ((lst_0
30014                   (if mod-name_0
30015                     (list
30016                      (begin-unsafe
30017                       (intern-module-path-index!
30018                        (requires+provides-require-mpis r+p_0)
30019                        mod-name_0)))
30020                     (hash-keys requires_0))))
30021              (begin
30022                (letrec*
30023                 ((for-loop_0
30024                   (|#%name|
30025                    for-loop
30026                    (lambda (fold-var_0 lst_1)
30027                      (begin
30028                        (if (pair? lst_1)
30029                          (let ((mod-name_1 (unsafe-car lst_1)))
30030                            (let ((rest_0 (unsafe-cdr lst_1)))
30031                              (let ((fold-var_1
30032                                     (if (eq? mod-name_1 self_0)
30033                                       fold-var_0
30034                                       (let ((id*_0
30035                                              (hash-ref
30036                                               requires_0
30037                                               mod-name_1
30038                                               hash2589)))
30039                                         (begin
30040                                           #t
30041                                           (letrec*
30042                                            ((for-loop_1
30043                                              (|#%name|
30044                                               for-loop
30045                                               (lambda (fold-var_1)
30046                                                 (begin
30047                                                   (let ((fold-var_2
30048                                                          (let ((lst_2
30049                                                                 (if (eq?
30050                                                                      phase+space-shift_0
30051                                                                      'all)
30052                                                                   (hash-keys
30053                                                                    id*_0)
30054                                                                   (list
30055                                                                    phase+space-shift_0))))
30056                                                            (begin
30057                                                              (letrec*
30058                                                               ((for-loop_2
30059                                                                 (|#%name|
30060                                                                  for-loop
30061                                                                  (lambda (fold-var_2
30062                                                                           lst_3)
30063                                                                    (begin
30064                                                                      (if (pair?
30065                                                                           lst_3)
30066                                                                        (let ((phase+space-shift_1
30067                                                                               (unsafe-car
30068                                                                                lst_3)))
30069                                                                          (let ((rest_1
30070                                                                                 (unsafe-cdr
30071                                                                                  lst_3)))
30072                                                                            (let ((fold-var_3
30073                                                                                   (let ((ht_0
30074                                                                                          (hash-ref
30075                                                                                           id*_0
30076                                                                                           phase+space-shift_1
30077                                                                                           (lambda ()
30078                                                                                             (|#%app|
30079                                                                                              esc_0
30080                                                                                              #f)))))
30081                                                                                     (begin
30082                                                                                       (letrec*
30083                                                                                        ((for-loop_3
30084                                                                                          (|#%name|
30085                                                                                           for-loop
30086                                                                                           (lambda (fold-var_3
30087                                                                                                    i_0)
30088                                                                                             (begin
30089                                                                                               (if i_0
30090                                                                                                 (call-with-values
30091                                                                                                  (lambda ()
30092                                                                                                    (hash-iterate-key+value
30093                                                                                                     ht_0
30094                                                                                                     i_0))
30095                                                                                                  (case-lambda
30096                                                                                                   ((sym_0
30097                                                                                                     reqds_0)
30098                                                                                                    (let ((fold-var_4
30099                                                                                                           (begin
30100                                                                                                             (letrec*
30101                                                                                                              ((for-loop_4
30102                                                                                                                (|#%name|
30103                                                                                                                 for-loop
30104                                                                                                                 (lambda (fold-var_4
30105                                                                                                                          lst_4)
30106                                                                                                                   (begin
30107                                                                                                                     (if (not
30108                                                                                                                          (null?
30109                                                                                                                           lst_4))
30110                                                                                                                       (let ((reqd_0
30111                                                                                                                              (if (pair?
30112                                                                                                                                   lst_4)
30113                                                                                                                                (car
30114                                                                                                                                 lst_4)
30115                                                                                                                                lst_4)))
30116                                                                                                                         (let ((rest_2
30117                                                                                                                                (if (pair?
30118                                                                                                                                     lst_4)
30119                                                                                                                                  (cdr
30120                                                                                                                                   lst_4)
30121                                                                                                                                  null)))
30122                                                                                                                           (let ((reqd_1
30123                                                                                                                                  reqd_0))
30124                                                                                                                             (let ((fold-var_5
30125                                                                                                                                    (let ((fold-var_5
30126                                                                                                                                           (cons
30127                                                                                                                                            (begin-unsafe
30128                                                                                                                                             (if (bulk-required?
30129                                                                                                                                                  reqd_1)
30130                                                                                                                                               (bulk-required->required
30131                                                                                                                                                reqd_1
30132                                                                                                                                                mod-name_1
30133                                                                                                                                                phase+space-shift_1
30134                                                                                                                                                sym_0)
30135                                                                                                                                               reqd_1))
30136                                                                                                                                            fold-var_4)))
30137                                                                                                                                      (values
30138                                                                                                                                       fold-var_5))))
30139                                                                                                                               (for-loop_4
30140                                                                                                                                fold-var_5
30141                                                                                                                                rest_2)))))
30142                                                                                                                       fold-var_4))))))
30143                                                                                                              (for-loop_4
30144                                                                                                               fold-var_3
30145                                                                                                               reqds_0)))))
30146                                                                                                      (for-loop_3
30147                                                                                                       fold-var_4
30148                                                                                                       (hash-iterate-next
30149                                                                                                        ht_0
30150                                                                                                        i_0))))
30151                                                                                                   (args
30152                                                                                                    (raise-binding-result-arity-error
30153                                                                                                     2
30154                                                                                                     args))))
30155                                                                                                 fold-var_3))))))
30156                                                                                        (for-loop_3
30157                                                                                         fold-var_2
30158                                                                                         (hash-iterate-first
30159                                                                                          ht_0)))))))
30160                                                                              (for-loop_2
30161                                                                               fold-var_3
30162                                                                               rest_1))))
30163                                                                        fold-var_2))))))
30164                                                               (for-loop_2
30165                                                                fold-var_1
30166                                                                lst_2))))))
30167                                                     fold-var_2))))))
30168                                            (for-loop_1 fold-var_0)))))))
30169                                (for-loop_0 fold-var_1 rest_0))))
30170                          fold-var_0))))))
30171                 (for-loop_0 null lst_0)))))))))))
30172(define add-provide!.1
30173  (|#%name|
30174   add-provide!
30175   (lambda (as-protected?84_0
30176            as-transformer?85_0
30177            r+p88_0
30178            sym89_0
30179            phase+space90_0
30180            binding91_0
30181            immed-binding92_0
30182            id93_0
30183            orig-s94_0)
30184     (begin
30185       (begin
30186         (if (if as-protected?84_0
30187               (not
30188                (eq?
30189                 (module-binding-module immed-binding92_0)
30190                 (requires+provides-self r+p88_0)))
30191               #f)
30192           (raise-syntax-error$1
30193            #f
30194            "cannot protect required identifier in re-provide"
30195            sym89_0)
30196           (void))
30197         (let ((ht_0 (requires+provides-provides r+p88_0)))
30198           (let ((xform_0
30199                  (lambda (at-phase_0)
30200                    (let ((b/p_0 (hash-ref at-phase_0 sym89_0 #f)))
30201                      (let ((b_0 (provided-as-binding b/p_0)))
30202                        (if (not b_0)
30203                          (let ((plain-binding_0
30204                                 (if (binding-free=id binding91_0)
30205                                   (module-binding-update.1
30206                                    unsafe-undefined
30207                                    unsafe-undefined
30208                                    unsafe-undefined
30209                                    #f
30210                                    unsafe-undefined
30211                                    unsafe-undefined
30212                                    unsafe-undefined
30213                                    unsafe-undefined
30214                                    unsafe-undefined
30215                                    unsafe-undefined
30216                                    unsafe-undefined
30217                                    binding91_0)
30218                                   binding91_0)))
30219                            (hash-set
30220                             at-phase_0
30221                             sym89_0
30222                             (if (if as-protected?84_0
30223                                   as-protected?84_0
30224                                   as-transformer?85_0)
30225                               (provided1.1
30226                                plain-binding_0
30227                                as-protected?84_0
30228                                as-transformer?85_0)
30229                               plain-binding_0)))
30230                          (if (same-binding? b_0 binding91_0)
30231                            at-phase_0
30232                            (raise-syntax-error$1
30233                             #f
30234                             "identifier already provided (as a different binding)"
30235                             orig-s94_0
30236                             id93_0))))))))
30237             (let ((default_0 hash2610))
30238               (begin-unsafe
30239                (do-hash-update
30240                 'hash-update!
30241                 #t
30242                 hash-set!
30243                 ht_0
30244                 phase+space90_0
30245                 xform_0
30246                 default_0))))))))))
30247(define extract-requires-and-provides
30248  (lambda (r+p_0 old-self_0 new-self_0)
30249    (let ((extract-requires_0
30250           (|#%name|
30251            extract-requires
30252            (lambda ()
30253              (begin
30254                (let ((phase-to-mpis-in-order_0
30255                       (requires+provides-require-mpis-in-order r+p_0)))
30256                  (let ((phases-in-order_0
30257                         (let ((temp169_0
30258                                (hash-keys phase-to-mpis-in-order_0)))
30259                           (sort.1 #f #f temp169_0 phase<?))))
30260                    (reverse$1
30261                     (begin
30262                       (letrec*
30263                        ((for-loop_0
30264                          (|#%name|
30265                           for-loop
30266                           (lambda (fold-var_0 lst_0)
30267                             (begin
30268                               (if (pair? lst_0)
30269                                 (let ((phase_0 (unsafe-car lst_0)))
30270                                   (let ((rest_0 (unsafe-cdr lst_0)))
30271                                     (let ((fold-var_1
30272                                            (let ((fold-var_1
30273                                                   (cons
30274                                                    (cons
30275                                                     phase_0
30276                                                     (reverse$1
30277                                                      (let ((lst_1
30278                                                             (reverse$1
30279                                                              (hash-ref
30280                                                               phase-to-mpis-in-order_0
30281                                                               phase_0))))
30282                                                        (begin
30283                                                          (letrec*
30284                                                           ((for-loop_1
30285                                                             (|#%name|
30286                                                              for-loop
30287                                                              (lambda (fold-var_1
30288                                                                       lst_2)
30289                                                                (begin
30290                                                                  (if (pair?
30291                                                                       lst_2)
30292                                                                    (let ((mpi_0
30293                                                                           (unsafe-car
30294                                                                            lst_2)))
30295                                                                      (let ((rest_1
30296                                                                             (unsafe-cdr
30297                                                                              lst_2)))
30298                                                                        (let ((fold-var_2
30299                                                                               (if (eq?
30300                                                                                    mpi_0
30301                                                                                    old-self_0)
30302                                                                                 fold-var_1
30303                                                                                 (let ((fold-var_2
30304                                                                                        (cons
30305                                                                                         (module-path-index-shift
30306                                                                                          mpi_0
30307                                                                                          old-self_0
30308                                                                                          new-self_0)
30309                                                                                         fold-var_1)))
30310                                                                                   (values
30311                                                                                    fold-var_2)))))
30312                                                                          (for-loop_1
30313                                                                           fold-var_2
30314                                                                           rest_1))))
30315                                                                    fold-var_1))))))
30316                                                           (for-loop_1
30317                                                            null
30318                                                            lst_1))))))
30319                                                    fold-var_0)))
30320                                              (values fold-var_1))))
30321                                       (for-loop_0 fold-var_1 rest_0))))
30322                                 fold-var_0))))))
30323                        (for-loop_0 null phases-in-order_0)))))))))))
30324      (let ((extract-provides_0
30325             (|#%name|
30326              extract-provides
30327              (lambda ()
30328                (begin
30329                  (shift-provides-module-path-index
30330                   (requires+provides-provides r+p_0)
30331                   old-self_0
30332                   new-self_0))))))
30333        (let ((app_0 (extract-requires_0)))
30334          (values app_0 (extract-provides_0)))))))
30335(define shift-provides-module-path-index
30336  (lambda (provides_0 from-mpi_0 to-mpi_0)
30337    (begin
30338      (letrec*
30339       ((for-loop_0
30340         (|#%name|
30341          for-loop
30342          (lambda (table_0 i_0)
30343            (begin
30344              (if i_0
30345                (call-with-values
30346                 (lambda () (hash-iterate-key+value provides_0 i_0))
30347                 (case-lambda
30348                  ((phase+space_0 at-phase_0)
30349                   (let ((table_1
30350                          (let ((table_1
30351                                 (call-with-values
30352                                  (lambda ()
30353                                    (values
30354                                     phase+space_0
30355                                     (begin
30356                                       (letrec*
30357                                        ((for-loop_1
30358                                          (|#%name|
30359                                           for-loop
30360                                           (lambda (table_1 i_1)
30361                                             (begin
30362                                               (if i_1
30363                                                 (call-with-values
30364                                                  (lambda ()
30365                                                    (hash-iterate-key+value
30366                                                     at-phase_0
30367                                                     i_1))
30368                                                  (case-lambda
30369                                                   ((sym_0 binding_0)
30370                                                    (let ((table_2
30371                                                           (let ((table_2
30372                                                                  (call-with-values
30373                                                                   (lambda ()
30374                                                                     (values
30375                                                                      sym_0
30376                                                                      (if (eq?
30377                                                                           from-mpi_0
30378                                                                           to-mpi_0)
30379                                                                        binding_0
30380                                                                        (letrec*
30381                                                                         ((loop_0
30382                                                                           (|#%name|
30383                                                                            loop
30384                                                                            (lambda (binding_1)
30385                                                                              (begin
30386                                                                                (if (provided?
30387                                                                                     binding_1)
30388                                                                                  (provided1.1
30389                                                                                   (loop_0
30390                                                                                    (provided-binding
30391                                                                                     binding_1))
30392                                                                                   (provided-protected?
30393                                                                                    binding_1)
30394                                                                                   (provided-syntax?
30395                                                                                    binding_1))
30396                                                                                  (binding-module-path-index-shift
30397                                                                                   binding_1
30398                                                                                   from-mpi_0
30399                                                                                   to-mpi_0)))))))
30400                                                                         (loop_0
30401                                                                          binding_0)))))
30402                                                                   (case-lambda
30403                                                                    ((key_0
30404                                                                      val_0)
30405                                                                     (hash-set
30406                                                                      table_1
30407                                                                      key_0
30408                                                                      val_0))
30409                                                                    (args
30410                                                                     (raise-binding-result-arity-error
30411                                                                      2
30412                                                                      args))))))
30413                                                             (values
30414                                                              table_2))))
30415                                                      (for-loop_1
30416                                                       table_2
30417                                                       (hash-iterate-next
30418                                                        at-phase_0
30419                                                        i_1))))
30420                                                   (args
30421                                                    (raise-binding-result-arity-error
30422                                                     2
30423                                                     args))))
30424                                                 table_1))))))
30425                                        (for-loop_1
30426                                         hash2610
30427                                         (hash-iterate-first at-phase_0))))))
30428                                  (case-lambda
30429                                   ((key_0 val_0)
30430                                    (hash-set table_0 key_0 val_0))
30431                                   (args
30432                                    (raise-binding-result-arity-error
30433                                     2
30434                                     args))))))
30435                            (values table_1))))
30436                     (for-loop_0 table_1 (hash-iterate-next provides_0 i_0))))
30437                  (args (raise-binding-result-arity-error 2 args))))
30438                table_0))))))
30439       (for-loop_0 hash2589 (hash-iterate-first provides_0))))))
30440(define finish_2697
30441  (make-struct-type-install-properties
30442   '(adjust-only)
30443   1
30444   0
30445   #f
30446   null
30447   (current-inspector)
30448   #f
30449   '(0)
30450   #f
30451   'adjust-only))
30452(define struct:adjust-only
30453  (make-record-type-descriptor*
30454   'adjust-only
30455   #f
30456   (|#%nongenerative-uid| adjust-only)
30457   #f
30458   #f
30459   1
30460   0))
30461(define effect_2893 (finish_2697 struct:adjust-only))
30462(define adjust-only1.1
30463  (|#%name|
30464   adjust-only
30465   (record-constructor
30466    (make-record-constructor-descriptor struct:adjust-only #f #f))))
30467(define adjust-only?_2229
30468  (|#%name| adjust-only? (record-predicate struct:adjust-only)))
30469(define adjust-only?
30470  (|#%name|
30471   adjust-only?
30472   (lambda (v)
30473     (if (adjust-only?_2229 v)
30474       #t
30475       ($value
30476        (if (impersonator? v) (adjust-only?_2229 (impersonator-val v)) #f))))))
30477(define adjust-only-syms_2775
30478  (|#%name| adjust-only-syms (record-accessor struct:adjust-only 0)))
30479(define adjust-only-syms
30480  (|#%name|
30481   adjust-only-syms
30482   (lambda (s)
30483     (if (adjust-only?_2229 s)
30484       (adjust-only-syms_2775 s)
30485       ($value
30486        (impersonate-ref
30487         adjust-only-syms_2775
30488         struct:adjust-only
30489         0
30490         s
30491         'adjust-only
30492         'syms))))))
30493(define finish_2542
30494  (make-struct-type-install-properties
30495   '(adjust-prefix)
30496   1
30497   0
30498   #f
30499   null
30500   (current-inspector)
30501   #f
30502   '(0)
30503   #f
30504   'adjust-prefix))
30505(define struct:adjust-prefix
30506  (make-record-type-descriptor*
30507   'adjust-prefix
30508   #f
30509   (|#%nongenerative-uid| adjust-prefix)
30510   #f
30511   #f
30512   1
30513   0))
30514(define effect_2600 (finish_2542 struct:adjust-prefix))
30515(define adjust-prefix2.1
30516  (|#%name|
30517   adjust-prefix
30518   (record-constructor
30519    (make-record-constructor-descriptor struct:adjust-prefix #f #f))))
30520(define adjust-prefix?_2456
30521  (|#%name| adjust-prefix? (record-predicate struct:adjust-prefix)))
30522(define adjust-prefix?
30523  (|#%name|
30524   adjust-prefix?
30525   (lambda (v)
30526     (if (adjust-prefix?_2456 v)
30527       #t
30528       ($value
30529        (if (impersonator? v)
30530          (adjust-prefix?_2456 (impersonator-val v))
30531          #f))))))
30532(define adjust-prefix-sym_2592
30533  (|#%name| adjust-prefix-sym (record-accessor struct:adjust-prefix 0)))
30534(define adjust-prefix-sym
30535  (|#%name|
30536   adjust-prefix-sym
30537   (lambda (s)
30538     (if (adjust-prefix?_2456 s)
30539       (adjust-prefix-sym_2592 s)
30540       ($value
30541        (impersonate-ref
30542         adjust-prefix-sym_2592
30543         struct:adjust-prefix
30544         0
30545         s
30546         'adjust-prefix
30547         'sym))))))
30548(define finish_2348
30549  (make-struct-type-install-properties
30550   '(adjust-all-except)
30551   2
30552   0
30553   #f
30554   null
30555   (current-inspector)
30556   #f
30557   '(0 1)
30558   #f
30559   'adjust-all-except))
30560(define struct:adjust-all-except
30561  (make-record-type-descriptor*
30562   'adjust-all-except
30563   #f
30564   (|#%nongenerative-uid| adjust-all-except)
30565   #f
30566   #f
30567   2
30568   0))
30569(define effect_2205 (finish_2348 struct:adjust-all-except))
30570(define adjust-all-except3.1
30571  (|#%name|
30572   adjust-all-except
30573   (record-constructor
30574    (make-record-constructor-descriptor struct:adjust-all-except #f #f))))
30575(define adjust-all-except?_2297
30576  (|#%name| adjust-all-except? (record-predicate struct:adjust-all-except)))
30577(define adjust-all-except?
30578  (|#%name|
30579   adjust-all-except?
30580   (lambda (v)
30581     (if (adjust-all-except?_2297 v)
30582       #t
30583       ($value
30584        (if (impersonator? v)
30585          (adjust-all-except?_2297 (impersonator-val v))
30586          #f))))))
30587(define adjust-all-except-prefix-sym_2606
30588  (|#%name|
30589   adjust-all-except-prefix-sym
30590   (record-accessor struct:adjust-all-except 0)))
30591(define adjust-all-except-prefix-sym
30592  (|#%name|
30593   adjust-all-except-prefix-sym
30594   (lambda (s)
30595     (if (adjust-all-except?_2297 s)
30596       (adjust-all-except-prefix-sym_2606 s)
30597       ($value
30598        (impersonate-ref
30599         adjust-all-except-prefix-sym_2606
30600         struct:adjust-all-except
30601         0
30602         s
30603         'adjust-all-except
30604         'prefix-sym))))))
30605(define adjust-all-except-syms_3082
30606  (|#%name|
30607   adjust-all-except-syms
30608   (record-accessor struct:adjust-all-except 1)))
30609(define adjust-all-except-syms
30610  (|#%name|
30611   adjust-all-except-syms
30612   (lambda (s)
30613     (if (adjust-all-except?_2297 s)
30614       (adjust-all-except-syms_3082 s)
30615       ($value
30616        (impersonate-ref
30617         adjust-all-except-syms_3082
30618         struct:adjust-all-except
30619         1
30620         s
30621         'adjust-all-except
30622         'syms))))))
30623(define finish_2750
30624  (make-struct-type-install-properties
30625   '(adjust-rename)
30626   2
30627   0
30628   #f
30629   null
30630   (current-inspector)
30631   #f
30632   '(0 1)
30633   #f
30634   'adjust-rename))
30635(define struct:adjust-rename
30636  (make-record-type-descriptor*
30637   'adjust-rename
30638   #f
30639   (|#%nongenerative-uid| adjust-rename)
30640   #f
30641   #f
30642   2
30643   0))
30644(define effect_3082 (finish_2750 struct:adjust-rename))
30645(define adjust-rename4.1
30646  (|#%name|
30647   adjust-rename
30648   (record-constructor
30649    (make-record-constructor-descriptor struct:adjust-rename #f #f))))
30650(define adjust-rename?_2182
30651  (|#%name| adjust-rename? (record-predicate struct:adjust-rename)))
30652(define adjust-rename?
30653  (|#%name|
30654   adjust-rename?
30655   (lambda (v)
30656     (if (adjust-rename?_2182 v)
30657       #t
30658       ($value
30659        (if (impersonator? v)
30660          (adjust-rename?_2182 (impersonator-val v))
30661          #f))))))
30662(define adjust-rename-to-id_2236
30663  (|#%name| adjust-rename-to-id (record-accessor struct:adjust-rename 0)))
30664(define adjust-rename-to-id
30665  (|#%name|
30666   adjust-rename-to-id
30667   (lambda (s)
30668     (if (adjust-rename?_2182 s)
30669       (adjust-rename-to-id_2236 s)
30670       ($value
30671        (impersonate-ref
30672         adjust-rename-to-id_2236
30673         struct:adjust-rename
30674         0
30675         s
30676         'adjust-rename
30677         'to-id))))))
30678(define adjust-rename-from-sym_2159
30679  (|#%name| adjust-rename-from-sym (record-accessor struct:adjust-rename 1)))
30680(define adjust-rename-from-sym
30681  (|#%name|
30682   adjust-rename-from-sym
30683   (lambda (s)
30684     (if (adjust-rename?_2182 s)
30685       (adjust-rename-from-sym_2159 s)
30686       ($value
30687        (impersonate-ref
30688         adjust-rename-from-sym_2159
30689         struct:adjust-rename
30690         1
30691         s
30692         'adjust-rename
30693         'from-sym))))))
30694(define layers$1 '(raw phaseless spaceless justspaceless path))
30695(define parse-and-perform-requires!.1
30696  (|#%name|
30697   parse-and-perform-requires!
30698   (lambda (copy-variable-as-constant?11_0
30699            copy-variable-phase-level10_0
30700            declared-submodule-names9_0
30701            initial-require?13_0
30702            run-phase6_0
30703            run?7_0
30704            self5_0
30705            skip-variable-phase-level12_0
30706            visit?8_0
30707            who14_0
30708            reqs25_0
30709            orig-s26_0
30710            m-ns27_0
30711            phase-shift28_0
30712            requires+provides29_0)
30713     (begin
30714       (let ((run-phase_0
30715              (if (eq? run-phase6_0 unsafe-undefined)
30716                (namespace-phase m-ns27_0)
30717                run-phase6_0)))
30718         (let ((initial-require?_0 initial-require?13_0))
30719           (letrec*
30720            ((loop_0
30721              (|#%name|
30722               loop
30723               (lambda (reqs_0
30724                        top-req_0
30725                        phase-shift_0
30726                        space-level_0
30727                        just-meta_0
30728                        just-space_0
30729                        adjust_0
30730                        for-meta-ok?_0
30731                        just-meta-ok?_0
30732                        layer_0)
30733                 (begin
30734                   (begin
30735                     (letrec*
30736                      ((for-loop_0
30737                        (|#%name|
30738                         for-loop
30739                         (lambda (result_0 lst_0)
30740                           (begin
30741                             (if (pair? lst_0)
30742                               (let ((req_0 (unsafe-car lst_0)))
30743                                 (let ((rest_0 (unsafe-cdr lst_0)))
30744                                   (let ((check-nested_0
30745                                          (|#%name|
30746                                           check-nested
30747                                           (lambda (want-layer115_0 ok?114_0)
30748                                             (begin
30749                                               (if (if ok?114_0
30750                                                     (member
30751                                                      want-layer115_0
30752                                                      (member
30753                                                       layer_0
30754                                                       layers$1))
30755                                                     #f)
30756                                                 (void)
30757                                                 (raise-syntax-error$1
30758                                                  #f
30759                                                  "invalid nesting"
30760                                                  orig-s26_0
30761                                                  req_0)))))))
30762                                     (let ((result_1
30763                                            (let ((result_1
30764                                                   (let ((check-nested_1
30765                                                          (|#%name|
30766                                                           check-nested
30767                                                           (case-lambda
30768                                                            ((want-layer_0)
30769                                                             (begin
30770                                                               (check-nested_0
30771                                                                want-layer_0
30772                                                                #t)))
30773                                                            ((want-layer_0
30774                                                              ok?114_0)
30775                                                             (check-nested_0
30776                                                              want-layer_0
30777                                                              ok?114_0))))))
30778                                                     (let ((fm_0
30779                                                            (if (pair?
30780                                                                 (syntax-e$1
30781                                                                  req_0))
30782                                                              (if (identifier?
30783                                                                   (car
30784                                                                    (syntax-e$1
30785                                                                     req_0)))
30786                                                                (syntax-e$1
30787                                                                 (car
30788                                                                  (syntax-e$1
30789                                                                   req_0)))
30790                                                                #f)
30791                                                              #f)))
30792                                                       (let ((index_0
30793                                                              (if (symbol?
30794                                                                   fm_0)
30795                                                                (hash-ref
30796                                                                 hash2739
30797                                                                 fm_0
30798                                                                 (lambda () 0))
30799                                                                0)))
30800                                                         (if (unsafe-fx<
30801                                                              index_0
30802                                                              6)
30803                                                           (if (unsafe-fx<
30804                                                                index_0
30805                                                                2)
30806                                                             (if (unsafe-fx<
30807                                                                  index_0
30808                                                                  1)
30809                                                               (let ((maybe-mp_0
30810                                                                      (syntax->datum$1
30811                                                                       req_0)))
30812                                                                 (begin
30813                                                                   (if (let ((or-part_0
30814                                                                              (1/module-path?
30815                                                                               maybe-mp_0)))
30816                                                                         (if or-part_0
30817                                                                           or-part_0
30818                                                                           (1/resolved-module-path?
30819                                                                            maybe-mp_0)))
30820                                                                     (void)
30821                                                                     (raise-syntax-error$1
30822                                                                      #f
30823                                                                      "bad require spec"
30824                                                                      orig-s26_0
30825                                                                      req_0))
30826                                                                   (begin
30827                                                                     (if (if adjust_0
30828                                                                           adjust_0
30829                                                                           (not
30830                                                                            (eq?
30831                                                                             just-meta_0
30832                                                                             'all)))
30833                                                                       (set-requires+provides-all-bindings-simple?!
30834                                                                        requires+provides29_0
30835                                                                        #f)
30836                                                                       (void))
30837                                                                     (let ((mp_0
30838                                                                            (if (1/resolved-module-path?
30839                                                                                 maybe-mp_0)
30840                                                                              (resolved-module-path->module-path
30841                                                                               maybe-mp_0)
30842                                                                              maybe-mp_0)))
30843                                                                       (let ((mpi_0
30844                                                                              (module-path->mpi.1
30845                                                                               declared-submodule-names9_0
30846                                                                               mp_0
30847                                                                               self5_0)))
30848                                                                         (begin
30849                                                                           (let ((temp119_0
30850                                                                                  (if req_0
30851                                                                                    req_0
30852                                                                                    top-req_0)))
30853                                                                             (let ((initial-require?133_0
30854                                                                                    initial-require?_0))
30855                                                                               (let ((temp119_1
30856                                                                                      temp119_0))
30857                                                                                 (perform-require!.1
30858                                                                                  adjust_0
30859                                                                                  #t
30860                                                                                  #f
30861                                                                                  copy-variable-as-constant?11_0
30862                                                                                  copy-variable-phase-level10_0
30863                                                                                  initial-require?133_0
30864                                                                                  just-meta_0
30865                                                                                  just-space_0
30866                                                                                  phase-shift_0
30867                                                                                  requires+provides29_0
30868                                                                                  run-phase_0
30869                                                                                  run?7_0
30870                                                                                  skip-variable-phase-level12_0
30871                                                                                  space-level_0
30872                                                                                  visit?8_0
30873                                                                                  who14_0
30874                                                                                  mpi_0
30875                                                                                  req_0
30876                                                                                  self5_0
30877                                                                                  temp119_1
30878                                                                                  m-ns27_0))))
30879                                                                           (set! initial-require?_0
30880                                                                             #f)))))))
30881                                                               (begin
30882                                                                 (check-nested_1
30883                                                                  'raw
30884                                                                  for-meta-ok?_0)
30885                                                                 (call-with-values
30886                                                                  (lambda ()
30887                                                                    (call-with-values
30888                                                                     (lambda ()
30889                                                                       (let ((s_0
30890                                                                              (if (syntax?$1
30891                                                                                   req_0)
30892                                                                                (syntax-e$1
30893                                                                                 req_0)
30894                                                                                req_0)))
30895                                                                         (if (pair?
30896                                                                              s_0)
30897                                                                           (let ((for-meta141_0
30898                                                                                  (let ((s_1
30899                                                                                         (car
30900                                                                                          s_0)))
30901                                                                                    s_1)))
30902                                                                             (call-with-values
30903                                                                              (lambda ()
30904                                                                                (let ((s_1
30905                                                                                       (cdr
30906                                                                                        s_0)))
30907                                                                                  (let ((s_2
30908                                                                                         (if (syntax?$1
30909                                                                                              s_1)
30910                                                                                           (syntax-e$1
30911                                                                                            s_1)
30912                                                                                           s_1)))
30913                                                                                    (if (pair?
30914                                                                                         s_2)
30915                                                                                      (let ((phase-level144_0
30916                                                                                             (let ((s_3
30917                                                                                                    (car
30918                                                                                                     s_2)))
30919                                                                                               s_3)))
30920                                                                                        (let ((spec145_0
30921                                                                                               (let ((s_3
30922                                                                                                      (cdr
30923                                                                                                       s_2)))
30924                                                                                                 (let ((s_4
30925                                                                                                        (if (syntax?$1
30926                                                                                                             s_3)
30927                                                                                                          (syntax-e$1
30928                                                                                                           s_3)
30929                                                                                                          s_3)))
30930                                                                                                   (let ((flat-s_0
30931                                                                                                          (to-syntax-list.1
30932                                                                                                           s_4)))
30933                                                                                                     (if (not
30934                                                                                                          flat-s_0)
30935                                                                                                       (raise-syntax-error$1
30936                                                                                                        #f
30937                                                                                                        "bad syntax"
30938                                                                                                        req_0)
30939                                                                                                       flat-s_0))))))
30940                                                                                          (let ((phase-level144_1
30941                                                                                                 phase-level144_0))
30942                                                                                            (values
30943                                                                                             phase-level144_1
30944                                                                                             spec145_0))))
30945                                                                                      (raise-syntax-error$1
30946                                                                                       #f
30947                                                                                       "bad syntax"
30948                                                                                       req_0)))))
30949                                                                              (case-lambda
30950                                                                               ((phase-level142_0
30951                                                                                 spec143_0)
30952                                                                                (let ((for-meta141_1
30953                                                                                       for-meta141_0))
30954                                                                                  (values
30955                                                                                   for-meta141_1
30956                                                                                   phase-level142_0
30957                                                                                   spec143_0)))
30958                                                                               (args
30959                                                                                (raise-binding-result-arity-error
30960                                                                                 2
30961                                                                                 args)))))
30962                                                                           (raise-syntax-error$1
30963                                                                            #f
30964                                                                            "bad syntax"
30965                                                                            req_0))))
30966                                                                     (case-lambda
30967                                                                      ((for-meta138_0
30968                                                                        phase-level139_0
30969                                                                        spec140_0)
30970                                                                       (values
30971                                                                        #t
30972                                                                        for-meta138_0
30973                                                                        phase-level139_0
30974                                                                        spec140_0))
30975                                                                      (args
30976                                                                       (raise-binding-result-arity-error
30977                                                                        3
30978                                                                        args)))))
30979                                                                  (case-lambda
30980                                                                   ((ok?_0
30981                                                                     for-meta138_0
30982                                                                     phase-level139_0
30983                                                                     spec140_0)
30984                                                                    (let ((p_0
30985                                                                           (syntax-e$1
30986                                                                            phase-level139_0)))
30987                                                                      (begin
30988                                                                        (if (phase?
30989                                                                             p_0)
30990                                                                          (void)
30991                                                                          (raise-syntax-error$1
30992                                                                           #f
30993                                                                           "bad phase"
30994                                                                           orig-s26_0
30995                                                                           req_0))
30996                                                                        (let ((app_0
30997                                                                               (if top-req_0
30998                                                                                 top-req_0
30999                                                                                 req_0)))
31000                                                                          (loop_0
31001                                                                           spec140_0
31002                                                                           app_0
31003                                                                           (phase+
31004                                                                            phase-shift_0
31005                                                                            p_0)
31006                                                                           space-level_0
31007                                                                           just-meta_0
31008                                                                           just-space_0
31009                                                                           adjust_0
31010                                                                           #f
31011                                                                           just-meta-ok?_0
31012                                                                           'raw)))))
31013                                                                   (args
31014                                                                    (raise-binding-result-arity-error
31015                                                                     4
31016                                                                     args))))))
31017                                                             (if (unsafe-fx<
31018                                                                  index_0
31019                                                                  3)
31020                                                               (begin
31021                                                                 (check-nested_1
31022                                                                  'raw
31023                                                                  for-meta-ok?_0)
31024                                                                 (call-with-values
31025                                                                  (lambda ()
31026                                                                    (call-with-values
31027                                                                     (lambda ()
31028                                                                       (let ((s_0
31029                                                                              (if (syntax?$1
31030                                                                                   req_0)
31031                                                                                (syntax-e$1
31032                                                                                 req_0)
31033                                                                                req_0)))
31034                                                                         (if (pair?
31035                                                                              s_0)
31036                                                                           (let ((for-syntax148_0
31037                                                                                  (let ((s_1
31038                                                                                         (car
31039                                                                                          s_0)))
31040                                                                                    s_1)))
31041                                                                             (let ((spec149_0
31042                                                                                    (let ((s_1
31043                                                                                           (cdr
31044                                                                                            s_0)))
31045                                                                                      (let ((s_2
31046                                                                                             (if (syntax?$1
31047                                                                                                  s_1)
31048                                                                                               (syntax-e$1
31049                                                                                                s_1)
31050                                                                                               s_1)))
31051                                                                                        (let ((flat-s_0
31052                                                                                               (to-syntax-list.1
31053                                                                                                s_2)))
31054                                                                                          (if (not
31055                                                                                               flat-s_0)
31056                                                                                            (raise-syntax-error$1
31057                                                                                             #f
31058                                                                                             "bad syntax"
31059                                                                                             req_0)
31060                                                                                            flat-s_0))))))
31061                                                                               (let ((for-syntax148_1
31062                                                                                      for-syntax148_0))
31063                                                                                 (values
31064                                                                                  for-syntax148_1
31065                                                                                  spec149_0))))
31066                                                                           (raise-syntax-error$1
31067                                                                            #f
31068                                                                            "bad syntax"
31069                                                                            req_0))))
31070                                                                     (case-lambda
31071                                                                      ((for-syntax146_0
31072                                                                        spec147_0)
31073                                                                       (values
31074                                                                        #t
31075                                                                        for-syntax146_0
31076                                                                        spec147_0))
31077                                                                      (args
31078                                                                       (raise-binding-result-arity-error
31079                                                                        2
31080                                                                        args)))))
31081                                                                  (case-lambda
31082                                                                   ((ok?_0
31083                                                                     for-syntax146_0
31084                                                                     spec147_0)
31085                                                                    (let ((app_0
31086                                                                           (if top-req_0
31087                                                                             top-req_0
31088                                                                             req_0)))
31089                                                                      (loop_0
31090                                                                       spec147_0
31091                                                                       app_0
31092                                                                       (phase+
31093                                                                        phase-shift_0
31094                                                                        1)
31095                                                                       space-level_0
31096                                                                       just-meta_0
31097                                                                       just-space_0
31098                                                                       adjust_0
31099                                                                       #f
31100                                                                       just-meta-ok?_0
31101                                                                       'raw)))
31102                                                                   (args
31103                                                                    (raise-binding-result-arity-error
31104                                                                     3
31105                                                                     args)))))
31106                                                               (if (unsafe-fx<
31107                                                                    index_0
31108                                                                    4)
31109                                                                 (begin
31110                                                                   (check-nested_1
31111                                                                    'raw
31112                                                                    for-meta-ok?_0)
31113                                                                   (call-with-values
31114                                                                    (lambda ()
31115                                                                      (call-with-values
31116                                                                       (lambda ()
31117                                                                         (let ((s_0
31118                                                                                (if (syntax?$1
31119                                                                                     req_0)
31120                                                                                  (syntax-e$1
31121                                                                                   req_0)
31122                                                                                  req_0)))
31123                                                                           (if (pair?
31124                                                                                s_0)
31125                                                                             (let ((for-template152_0
31126                                                                                    (let ((s_1
31127                                                                                           (car
31128                                                                                            s_0)))
31129                                                                                      s_1)))
31130                                                                               (let ((spec153_0
31131                                                                                      (let ((s_1
31132                                                                                             (cdr
31133                                                                                              s_0)))
31134                                                                                        (let ((s_2
31135                                                                                               (if (syntax?$1
31136                                                                                                    s_1)
31137                                                                                                 (syntax-e$1
31138                                                                                                  s_1)
31139                                                                                                 s_1)))
31140                                                                                          (let ((flat-s_0
31141                                                                                                 (to-syntax-list.1
31142                                                                                                  s_2)))
31143                                                                                            (if (not
31144                                                                                                 flat-s_0)
31145                                                                                              (raise-syntax-error$1
31146                                                                                               #f
31147                                                                                               "bad syntax"
31148                                                                                               req_0)
31149                                                                                              flat-s_0))))))
31150                                                                                 (let ((for-template152_1
31151                                                                                        for-template152_0))
31152                                                                                   (values
31153                                                                                    for-template152_1
31154                                                                                    spec153_0))))
31155                                                                             (raise-syntax-error$1
31156                                                                              #f
31157                                                                              "bad syntax"
31158                                                                              req_0))))
31159                                                                       (case-lambda
31160                                                                        ((for-template150_0
31161                                                                          spec151_0)
31162                                                                         (values
31163                                                                          #t
31164                                                                          for-template150_0
31165                                                                          spec151_0))
31166                                                                        (args
31167                                                                         (raise-binding-result-arity-error
31168                                                                          2
31169                                                                          args)))))
31170                                                                    (case-lambda
31171                                                                     ((ok?_0
31172                                                                       for-template150_0
31173                                                                       spec151_0)
31174                                                                      (let ((app_0
31175                                                                             (if top-req_0
31176                                                                               top-req_0
31177                                                                               req_0)))
31178                                                                        (loop_0
31179                                                                         spec151_0
31180                                                                         app_0
31181                                                                         (phase+
31182                                                                          phase-shift_0
31183                                                                          -1)
31184                                                                         space-level_0
31185                                                                         just-meta_0
31186                                                                         just-space_0
31187                                                                         adjust_0
31188                                                                         #f
31189                                                                         just-meta-ok?_0
31190                                                                         'raw)))
31191                                                                     (args
31192                                                                      (raise-binding-result-arity-error
31193                                                                       3
31194                                                                       args)))))
31195                                                                 (if (unsafe-fx<
31196                                                                      index_0
31197                                                                      5)
31198                                                                   (begin
31199                                                                     (check-nested_1
31200                                                                      'raw
31201                                                                      for-meta-ok?_0)
31202                                                                     (call-with-values
31203                                                                      (lambda ()
31204                                                                        (call-with-values
31205                                                                         (lambda ()
31206                                                                           (let ((s_0
31207                                                                                  (if (syntax?$1
31208                                                                                       req_0)
31209                                                                                    (syntax-e$1
31210                                                                                     req_0)
31211                                                                                    req_0)))
31212                                                                             (if (pair?
31213                                                                                  s_0)
31214                                                                               (let ((for-label156_0
31215                                                                                      (let ((s_1
31216                                                                                             (car
31217                                                                                              s_0)))
31218                                                                                        s_1)))
31219                                                                                 (let ((spec157_0
31220                                                                                        (let ((s_1
31221                                                                                               (cdr
31222                                                                                                s_0)))
31223                                                                                          (let ((s_2
31224                                                                                                 (if (syntax?$1
31225                                                                                                      s_1)
31226                                                                                                   (syntax-e$1
31227                                                                                                    s_1)
31228                                                                                                   s_1)))
31229                                                                                            (let ((flat-s_0
31230                                                                                                   (to-syntax-list.1
31231                                                                                                    s_2)))
31232                                                                                              (if (not
31233                                                                                                   flat-s_0)
31234                                                                                                (raise-syntax-error$1
31235                                                                                                 #f
31236                                                                                                 "bad syntax"
31237                                                                                                 req_0)
31238                                                                                                flat-s_0))))))
31239                                                                                   (let ((for-label156_1
31240                                                                                          for-label156_0))
31241                                                                                     (values
31242                                                                                      for-label156_1
31243                                                                                      spec157_0))))
31244                                                                               (raise-syntax-error$1
31245                                                                                #f
31246                                                                                "bad syntax"
31247                                                                                req_0))))
31248                                                                         (case-lambda
31249                                                                          ((for-label154_0
31250                                                                            spec155_0)
31251                                                                           (values
31252                                                                            #t
31253                                                                            for-label154_0
31254                                                                            spec155_0))
31255                                                                          (args
31256                                                                           (raise-binding-result-arity-error
31257                                                                            2
31258                                                                            args)))))
31259                                                                      (case-lambda
31260                                                                       ((ok?_0
31261                                                                         for-label154_0
31262                                                                         spec155_0)
31263                                                                        (let ((app_0
31264                                                                               (if top-req_0
31265                                                                                 top-req_0
31266                                                                                 req_0)))
31267                                                                          (loop_0
31268                                                                           spec155_0
31269                                                                           app_0
31270                                                                           (phase+
31271                                                                            phase-shift_0
31272                                                                            #f)
31273                                                                           space-level_0
31274                                                                           just-meta_0
31275                                                                           just-space_0
31276                                                                           adjust_0
31277                                                                           #f
31278                                                                           just-meta-ok?_0
31279                                                                           'raw)))
31280                                                                       (args
31281                                                                        (raise-binding-result-arity-error
31282                                                                         3
31283                                                                         args)))))
31284                                                                   (begin
31285                                                                     (check-nested_1
31286                                                                      'raw
31287                                                                      just-meta-ok?_0)
31288                                                                     (call-with-values
31289                                                                      (lambda ()
31290                                                                        (call-with-values
31291                                                                         (lambda ()
31292                                                                           (let ((s_0
31293                                                                                  (if (syntax?$1
31294                                                                                       req_0)
31295                                                                                    (syntax-e$1
31296                                                                                     req_0)
31297                                                                                    req_0)))
31298                                                                             (if (pair?
31299                                                                                  s_0)
31300                                                                               (let ((just-meta161_0
31301                                                                                      (let ((s_1
31302                                                                                             (car
31303                                                                                              s_0)))
31304                                                                                        s_1)))
31305                                                                                 (call-with-values
31306                                                                                  (lambda ()
31307                                                                                    (let ((s_1
31308                                                                                           (cdr
31309                                                                                            s_0)))
31310                                                                                      (let ((s_2
31311                                                                                             (if (syntax?$1
31312                                                                                                  s_1)
31313                                                                                               (syntax-e$1
31314                                                                                                s_1)
31315                                                                                               s_1)))
31316                                                                                        (if (pair?
31317                                                                                             s_2)
31318                                                                                          (let ((phase-level164_0
31319                                                                                                 (let ((s_3
31320                                                                                                        (car
31321                                                                                                         s_2)))
31322                                                                                                   s_3)))
31323                                                                                            (let ((spec165_0
31324                                                                                                   (let ((s_3
31325                                                                                                          (cdr
31326                                                                                                           s_2)))
31327                                                                                                     (let ((s_4
31328                                                                                                            (if (syntax?$1
31329                                                                                                                 s_3)
31330                                                                                                              (syntax-e$1
31331                                                                                                               s_3)
31332                                                                                                              s_3)))
31333                                                                                                       (let ((flat-s_0
31334                                                                                                              (to-syntax-list.1
31335                                                                                                               s_4)))
31336                                                                                                         (if (not
31337                                                                                                              flat-s_0)
31338                                                                                                           (raise-syntax-error$1
31339                                                                                                            #f
31340                                                                                                            "bad syntax"
31341                                                                                                            req_0)
31342                                                                                                           flat-s_0))))))
31343                                                                                              (let ((phase-level164_1
31344                                                                                                     phase-level164_0))
31345                                                                                                (values
31346                                                                                                 phase-level164_1
31347                                                                                                 spec165_0))))
31348                                                                                          (raise-syntax-error$1
31349                                                                                           #f
31350                                                                                           "bad syntax"
31351                                                                                           req_0)))))
31352                                                                                  (case-lambda
31353                                                                                   ((phase-level162_0
31354                                                                                     spec163_0)
31355                                                                                    (let ((just-meta161_1
31356                                                                                           just-meta161_0))
31357                                                                                      (values
31358                                                                                       just-meta161_1
31359                                                                                       phase-level162_0
31360                                                                                       spec163_0)))
31361                                                                                   (args
31362                                                                                    (raise-binding-result-arity-error
31363                                                                                     2
31364                                                                                     args)))))
31365                                                                               (raise-syntax-error$1
31366                                                                                #f
31367                                                                                "bad syntax"
31368                                                                                req_0))))
31369                                                                         (case-lambda
31370                                                                          ((just-meta158_0
31371                                                                            phase-level159_0
31372                                                                            spec160_0)
31373                                                                           (values
31374                                                                            #t
31375                                                                            just-meta158_0
31376                                                                            phase-level159_0
31377                                                                            spec160_0))
31378                                                                          (args
31379                                                                           (raise-binding-result-arity-error
31380                                                                            3
31381                                                                            args)))))
31382                                                                      (case-lambda
31383                                                                       ((ok?_0
31384                                                                         just-meta158_0
31385                                                                         phase-level159_0
31386                                                                         spec160_0)
31387                                                                        (let ((p_0
31388                                                                               (syntax-e$1
31389                                                                                phase-level159_0)))
31390                                                                          (begin
31391                                                                            (if (phase?
31392                                                                                 p_0)
31393                                                                              (void)
31394                                                                              (raise-syntax-error$1
31395                                                                               #f
31396                                                                               "bad phase"
31397                                                                               orig-s26_0
31398                                                                               req_0))
31399                                                                            (loop_0
31400                                                                             spec160_0
31401                                                                             (if top-req_0
31402                                                                               top-req_0
31403                                                                               req_0)
31404                                                                             phase-shift_0
31405                                                                             space-level_0
31406                                                                             p_0
31407                                                                             just-space_0
31408                                                                             adjust_0
31409                                                                             for-meta-ok?_0
31410                                                                             #f
31411                                                                             'raw))))
31412                                                                       (args
31413                                                                        (raise-binding-result-arity-error
31414                                                                         4
31415                                                                         args)))))))))
31416                                                           (if (unsafe-fx<
31417                                                                index_0
31418                                                                9)
31419                                                             (if (unsafe-fx<
31420                                                                  index_0
31421                                                                  7)
31422                                                               (begin
31423                                                                 (check-nested_1
31424                                                                  'phaseless)
31425                                                                 (call-with-values
31426                                                                  (lambda ()
31427                                                                    (call-with-values
31428                                                                     (lambda ()
31429                                                                       (let ((s_0
31430                                                                              (if (syntax?$1
31431                                                                                   req_0)
31432                                                                                (syntax-e$1
31433                                                                                 req_0)
31434                                                                                req_0)))
31435                                                                         (if (pair?
31436                                                                              s_0)
31437                                                                           (let ((for-space169_0
31438                                                                                  (let ((s_1
31439                                                                                         (car
31440                                                                                          s_0)))
31441                                                                                    s_1)))
31442                                                                             (call-with-values
31443                                                                              (lambda ()
31444                                                                                (let ((s_1
31445                                                                                       (cdr
31446                                                                                        s_0)))
31447                                                                                  (let ((s_2
31448                                                                                         (if (syntax?$1
31449                                                                                              s_1)
31450                                                                                           (syntax-e$1
31451                                                                                            s_1)
31452                                                                                           s_1)))
31453                                                                                    (if (pair?
31454                                                                                         s_2)
31455                                                                                      (let ((space172_0
31456                                                                                             (let ((s_3
31457                                                                                                    (car
31458                                                                                                     s_2)))
31459                                                                                               s_3)))
31460                                                                                        (let ((spec173_0
31461                                                                                               (let ((s_3
31462                                                                                                      (cdr
31463                                                                                                       s_2)))
31464                                                                                                 (let ((s_4
31465                                                                                                        (if (syntax?$1
31466                                                                                                             s_3)
31467                                                                                                          (syntax-e$1
31468                                                                                                           s_3)
31469                                                                                                          s_3)))
31470                                                                                                   (let ((flat-s_0
31471                                                                                                          (to-syntax-list.1
31472                                                                                                           s_4)))
31473                                                                                                     (if (not
31474                                                                                                          flat-s_0)
31475                                                                                                       (raise-syntax-error$1
31476                                                                                                        #f
31477                                                                                                        "bad syntax"
31478                                                                                                        req_0)
31479                                                                                                       flat-s_0))))))
31480                                                                                          (let ((space172_1
31481                                                                                                 space172_0))
31482                                                                                            (values
31483                                                                                             space172_1
31484                                                                                             spec173_0))))
31485                                                                                      (raise-syntax-error$1
31486                                                                                       #f
31487                                                                                       "bad syntax"
31488                                                                                       req_0)))))
31489                                                                              (case-lambda
31490                                                                               ((space170_0
31491                                                                                 spec171_0)
31492                                                                                (let ((for-space169_1
31493                                                                                       for-space169_0))
31494                                                                                  (values
31495                                                                                   for-space169_1
31496                                                                                   space170_0
31497                                                                                   spec171_0)))
31498                                                                               (args
31499                                                                                (raise-binding-result-arity-error
31500                                                                                 2
31501                                                                                 args)))))
31502                                                                           (raise-syntax-error$1
31503                                                                            #f
31504                                                                            "bad syntax"
31505                                                                            req_0))))
31506                                                                     (case-lambda
31507                                                                      ((for-space166_0
31508                                                                        space167_0
31509                                                                        spec168_0)
31510                                                                       (values
31511                                                                        #t
31512                                                                        for-space166_0
31513                                                                        space167_0
31514                                                                        spec168_0))
31515                                                                      (args
31516                                                                       (raise-binding-result-arity-error
31517                                                                        3
31518                                                                        args)))))
31519                                                                  (case-lambda
31520                                                                   ((ok?_0
31521                                                                     for-space166_0
31522                                                                     space167_0
31523                                                                     spec168_0)
31524                                                                    (let ((space_0
31525                                                                           (syntax-e$1
31526                                                                            space167_0)))
31527                                                                      (begin
31528                                                                        (if (space?
31529                                                                             space_0)
31530                                                                          (void)
31531                                                                          (raise-syntax-error$1
31532                                                                           #f
31533                                                                           "bad space"
31534                                                                           orig-s26_0
31535                                                                           req_0))
31536                                                                        (loop_0
31537                                                                         spec168_0
31538                                                                         (if top-req_0
31539                                                                           top-req_0
31540                                                                           req_0)
31541                                                                         phase-shift_0
31542                                                                         space_0
31543                                                                         just-meta_0
31544                                                                         just-space_0
31545                                                                         adjust_0
31546                                                                         #f
31547                                                                         #f
31548                                                                         'spaceless))))
31549                                                                   (args
31550                                                                    (raise-binding-result-arity-error
31551                                                                     4
31552                                                                     args)))))
31553                                                               (if (unsafe-fx<
31554                                                                    index_0
31555                                                                    8)
31556                                                                 (begin
31557                                                                   (check-nested_1
31558                                                                    'spaceless)
31559                                                                   (call-with-values
31560                                                                    (lambda ()
31561                                                                      (call-with-values
31562                                                                       (lambda ()
31563                                                                         (let ((s_0
31564                                                                                (if (syntax?$1
31565                                                                                     req_0)
31566                                                                                  (syntax-e$1
31567                                                                                   req_0)
31568                                                                                  req_0)))
31569                                                                           (if (pair?
31570                                                                                s_0)
31571                                                                             (let ((just-space177_0
31572                                                                                    (let ((s_1
31573                                                                                           (car
31574                                                                                            s_0)))
31575                                                                                      s_1)))
31576                                                                               (call-with-values
31577                                                                                (lambda ()
31578                                                                                  (let ((s_1
31579                                                                                         (cdr
31580                                                                                          s_0)))
31581                                                                                    (let ((s_2
31582                                                                                           (if (syntax?$1
31583                                                                                                s_1)
31584                                                                                             (syntax-e$1
31585                                                                                              s_1)
31586                                                                                             s_1)))
31587                                                                                      (if (pair?
31588                                                                                           s_2)
31589                                                                                        (let ((space180_0
31590                                                                                               (let ((s_3
31591                                                                                                      (car
31592                                                                                                       s_2)))
31593                                                                                                 s_3)))
31594                                                                                          (let ((spec181_0
31595                                                                                                 (let ((s_3
31596                                                                                                        (cdr
31597                                                                                                         s_2)))
31598                                                                                                   (let ((s_4
31599                                                                                                          (if (syntax?$1
31600                                                                                                               s_3)
31601                                                                                                            (syntax-e$1
31602                                                                                                             s_3)
31603                                                                                                            s_3)))
31604                                                                                                     (let ((flat-s_0
31605                                                                                                            (to-syntax-list.1
31606                                                                                                             s_4)))
31607                                                                                                       (if (not
31608                                                                                                            flat-s_0)
31609                                                                                                         (raise-syntax-error$1
31610                                                                                                          #f
31611                                                                                                          "bad syntax"
31612                                                                                                          req_0)
31613                                                                                                         flat-s_0))))))
31614                                                                                            (let ((space180_1
31615                                                                                                   space180_0))
31616                                                                                              (values
31617                                                                                               space180_1
31618                                                                                               spec181_0))))
31619                                                                                        (raise-syntax-error$1
31620                                                                                         #f
31621                                                                                         "bad syntax"
31622                                                                                         req_0)))))
31623                                                                                (case-lambda
31624                                                                                 ((space178_0
31625                                                                                   spec179_0)
31626                                                                                  (let ((just-space177_1
31627                                                                                         just-space177_0))
31628                                                                                    (values
31629                                                                                     just-space177_1
31630                                                                                     space178_0
31631                                                                                     spec179_0)))
31632                                                                                 (args
31633                                                                                  (raise-binding-result-arity-error
31634                                                                                   2
31635                                                                                   args)))))
31636                                                                             (raise-syntax-error$1
31637                                                                              #f
31638                                                                              "bad syntax"
31639                                                                              req_0))))
31640                                                                       (case-lambda
31641                                                                        ((just-space174_0
31642                                                                          space175_0
31643                                                                          spec176_0)
31644                                                                         (values
31645                                                                          #t
31646                                                                          just-space174_0
31647                                                                          space175_0
31648                                                                          spec176_0))
31649                                                                        (args
31650                                                                         (raise-binding-result-arity-error
31651                                                                          3
31652                                                                          args)))))
31653                                                                    (case-lambda
31654                                                                     ((ok?_0
31655                                                                       just-space174_0
31656                                                                       space175_0
31657                                                                       spec176_0)
31658                                                                      (let ((space_0
31659                                                                             (syntax-e$1
31660                                                                              space175_0)))
31661                                                                        (begin
31662                                                                          (if (space?
31663                                                                               space_0)
31664                                                                            (void)
31665                                                                            (raise-syntax-error$1
31666                                                                             #f
31667                                                                             "bad space"
31668                                                                             orig-s26_0
31669                                                                             req_0))
31670                                                                          (loop_0
31671                                                                           spec176_0
31672                                                                           (if top-req_0
31673                                                                             top-req_0
31674                                                                             req_0)
31675                                                                           phase-shift_0
31676                                                                           space-level_0
31677                                                                           just-meta_0
31678                                                                           space_0
31679                                                                           adjust_0
31680                                                                           #f
31681                                                                           #f
31682                                                                           'justspaceless))))
31683                                                                     (args
31684                                                                      (raise-binding-result-arity-error
31685                                                                       4
31686                                                                       args)))))
31687                                                                 (begin
31688                                                                   (check-nested_1
31689                                                                    'justspaceless)
31690                                                                   (call-with-values
31691                                                                    (lambda ()
31692                                                                      (call-with-values
31693                                                                       (lambda ()
31694                                                                         (let ((s_0
31695                                                                                (if (syntax?$1
31696                                                                                     req_0)
31697                                                                                  (syntax-e$1
31698                                                                                   req_0)
31699                                                                                  req_0)))
31700                                                                           (if (pair?
31701                                                                                s_0)
31702                                                                             (let ((only185_0
31703                                                                                    (let ((s_1
31704                                                                                           (car
31705                                                                                            s_0)))
31706                                                                                      s_1)))
31707                                                                               (call-with-values
31708                                                                                (lambda ()
31709                                                                                  (let ((s_1
31710                                                                                         (cdr
31711                                                                                          s_0)))
31712                                                                                    (let ((s_2
31713                                                                                           (if (syntax?$1
31714                                                                                                s_1)
31715                                                                                             (syntax-e$1
31716                                                                                              s_1)
31717                                                                                             s_1)))
31718                                                                                      (if (pair?
31719                                                                                           s_2)
31720                                                                                        (let ((spec188_0
31721                                                                                               (let ((s_3
31722                                                                                                      (car
31723                                                                                                       s_2)))
31724                                                                                                 s_3)))
31725                                                                                          (let ((id189_0
31726                                                                                                 (let ((s_3
31727                                                                                                        (cdr
31728                                                                                                         s_2)))
31729                                                                                                   (let ((s_4
31730                                                                                                          (if (syntax?$1
31731                                                                                                               s_3)
31732                                                                                                            (syntax-e$1
31733                                                                                                             s_3)
31734                                                                                                            s_3)))
31735                                                                                                     (let ((flat-s_0
31736                                                                                                            (to-syntax-list.1
31737                                                                                                             s_4)))
31738                                                                                                       (if (not
31739                                                                                                            flat-s_0)
31740                                                                                                         (raise-syntax-error$1
31741                                                                                                          #f
31742                                                                                                          "bad syntax"
31743                                                                                                          req_0)
31744                                                                                                         (let ((id_0
31745                                                                                                                (begin
31746                                                                                                                  (letrec*
31747                                                                                                                   ((for-loop_1
31748                                                                                                                     (|#%name|
31749                                                                                                                      for-loop
31750                                                                                                                      (lambda (id_0
31751                                                                                                                               lst_1)
31752                                                                                                                        (begin
31753                                                                                                                          (if (pair?
31754                                                                                                                               lst_1)
31755                                                                                                                            (let ((s_5
31756                                                                                                                                   (unsafe-car
31757                                                                                                                                    lst_1)))
31758                                                                                                                              (let ((rest_1
31759                                                                                                                                     (unsafe-cdr
31760                                                                                                                                      lst_1)))
31761                                                                                                                                (let ((id_1
31762                                                                                                                                       (let ((id_1
31763                                                                                                                                              (let ((id190_0
31764                                                                                                                                                     (if (let ((or-part_0
31765                                                                                                                                                                (if (syntax?$1
31766                                                                                                                                                                     s_5)
31767                                                                                                                                                                  (symbol?
31768                                                                                                                                                                   (syntax-e$1
31769                                                                                                                                                                    s_5))
31770                                                                                                                                                                  #f)))
31771                                                                                                                                                           (if or-part_0
31772                                                                                                                                                             or-part_0
31773                                                                                                                                                             (symbol?
31774                                                                                                                                                              s_5)))
31775                                                                                                                                                       s_5
31776                                                                                                                                                       (raise-syntax-error$1
31777                                                                                                                                                        #f
31778                                                                                                                                                        "not an identifier"
31779                                                                                                                                                        req_0
31780                                                                                                                                                        s_5))))
31781                                                                                                                                                (cons
31782                                                                                                                                                 id190_0
31783                                                                                                                                                 id_0))))
31784                                                                                                                                         (values
31785                                                                                                                                          id_1))))
31786                                                                                                                                  (for-loop_1
31787                                                                                                                                   id_1
31788                                                                                                                                   rest_1))))
31789                                                                                                                            id_0))))))
31790                                                                                                                   (for-loop_1
31791                                                                                                                    null
31792                                                                                                                    flat-s_0)))))
31793                                                                                                           (reverse$1
31794                                                                                                            id_0))))))))
31795                                                                                            (let ((spec188_1
31796                                                                                                   spec188_0))
31797                                                                                              (values
31798                                                                                               spec188_1
31799                                                                                               id189_0))))
31800                                                                                        (raise-syntax-error$1
31801                                                                                         #f
31802                                                                                         "bad syntax"
31803                                                                                         req_0)))))
31804                                                                                (case-lambda
31805                                                                                 ((spec186_0
31806                                                                                   id187_0)
31807                                                                                  (let ((only185_1
31808                                                                                         only185_0))
31809                                                                                    (values
31810                                                                                     only185_1
31811                                                                                     spec186_0
31812                                                                                     id187_0)))
31813                                                                                 (args
31814                                                                                  (raise-binding-result-arity-error
31815                                                                                   2
31816                                                                                   args)))))
31817                                                                             (raise-syntax-error$1
31818                                                                              #f
31819                                                                              "bad syntax"
31820                                                                              req_0))))
31821                                                                       (case-lambda
31822                                                                        ((only182_0
31823                                                                          spec183_0
31824                                                                          id184_0)
31825                                                                         (values
31826                                                                          #t
31827                                                                          only182_0
31828                                                                          spec183_0
31829                                                                          id184_0))
31830                                                                        (args
31831                                                                         (raise-binding-result-arity-error
31832                                                                          3
31833                                                                          args)))))
31834                                                                    (case-lambda
31835                                                                     ((ok?_0
31836                                                                       only182_0
31837                                                                       spec183_0
31838                                                                       id184_0)
31839                                                                      (let ((app_0
31840                                                                             (list
31841                                                                              spec183_0)))
31842                                                                        (let ((app_1
31843                                                                               (if top-req_0
31844                                                                                 top-req_0
31845                                                                                 req_0)))
31846                                                                          (loop_0
31847                                                                           app_0
31848                                                                           app_1
31849                                                                           phase-shift_0
31850                                                                           space-level_0
31851                                                                           just-meta_0
31852                                                                           just-space_0
31853                                                                           (adjust-only1.1
31854                                                                            (ids->sym-set
31855                                                                             id184_0))
31856                                                                           #f
31857                                                                           #f
31858                                                                           'path))))
31859                                                                     (args
31860                                                                      (raise-binding-result-arity-error
31861                                                                       4
31862                                                                       args)))))))
31863                                                             (if (unsafe-fx<
31864                                                                  index_0
31865                                                                  10)
31866                                                               (begin
31867                                                                 (check-nested_1
31868                                                                  'justspaceless)
31869                                                                 (call-with-values
31870                                                                  (lambda ()
31871                                                                    (call-with-values
31872                                                                     (lambda ()
31873                                                                       (let ((s_0
31874                                                                              (if (syntax?$1
31875                                                                                   req_0)
31876                                                                                (syntax-e$1
31877                                                                                 req_0)
31878                                                                                req_0)))
31879                                                                         (if (pair?
31880                                                                              s_0)
31881                                                                           (let ((prefix194_0
31882                                                                                  (let ((s_1
31883                                                                                         (car
31884                                                                                          s_0)))
31885                                                                                    s_1)))
31886                                                                             (call-with-values
31887                                                                              (lambda ()
31888                                                                                (let ((s_1
31889                                                                                       (cdr
31890                                                                                        s_0)))
31891                                                                                  (let ((s_2
31892                                                                                         (if (syntax?$1
31893                                                                                              s_1)
31894                                                                                           (syntax-e$1
31895                                                                                            s_1)
31896                                                                                           s_1)))
31897                                                                                    (if (pair?
31898                                                                                         s_2)
31899                                                                                      (let ((id:prefix197_0
31900                                                                                             (let ((s_3
31901                                                                                                    (car
31902                                                                                                     s_2)))
31903                                                                                               (if (let ((or-part_0
31904                                                                                                          (if (syntax?$1
31905                                                                                                               s_3)
31906                                                                                                            (symbol?
31907                                                                                                             (syntax-e$1
31908                                                                                                              s_3))
31909                                                                                                            #f)))
31910                                                                                                     (if or-part_0
31911                                                                                                       or-part_0
31912                                                                                                       (symbol?
31913                                                                                                        s_3)))
31914                                                                                                 s_3
31915                                                                                                 (raise-syntax-error$1
31916                                                                                                  #f
31917                                                                                                  "not an identifier"
31918                                                                                                  req_0
31919                                                                                                  s_3)))))
31920                                                                                        (let ((spec198_0
31921                                                                                               (let ((s_3
31922                                                                                                      (cdr
31923                                                                                                       s_2)))
31924                                                                                                 (let ((s_4
31925                                                                                                        (if (syntax?$1
31926                                                                                                             s_3)
31927                                                                                                          (syntax-e$1
31928                                                                                                           s_3)
31929                                                                                                          s_3)))
31930                                                                                                   (if (pair?
31931                                                                                                        s_4)
31932                                                                                                     (let ((spec199_0
31933                                                                                                            (let ((s_5
31934                                                                                                                   (car
31935                                                                                                                    s_4)))
31936                                                                                                              s_5)))
31937                                                                                                       (call-with-values
31938                                                                                                        (lambda ()
31939                                                                                                          (let ((s_5
31940                                                                                                                 (cdr
31941                                                                                                                  s_4)))
31942                                                                                                            (let ((s_6
31943                                                                                                                   (if (syntax?$1
31944                                                                                                                        s_5)
31945                                                                                                                     (syntax-e$1
31946                                                                                                                      s_5)
31947                                                                                                                     s_5)))
31948                                                                                                              (if (null?
31949                                                                                                                   s_6)
31950                                                                                                                (values)
31951                                                                                                                (raise-syntax-error$1
31952                                                                                                                 #f
31953                                                                                                                 "bad syntax"
31954                                                                                                                 req_0)))))
31955                                                                                                        (case-lambda
31956                                                                                                         (()
31957                                                                                                          (let ((spec199_1
31958                                                                                                                 spec199_0))
31959                                                                                                            (values
31960                                                                                                             spec199_1)))
31961                                                                                                         (args
31962                                                                                                          (raise-binding-result-arity-error
31963                                                                                                           0
31964                                                                                                           args)))))
31965                                                                                                     (raise-syntax-error$1
31966                                                                                                      #f
31967                                                                                                      "bad syntax"
31968                                                                                                      req_0))))))
31969                                                                                          (let ((id:prefix197_1
31970                                                                                                 id:prefix197_0))
31971                                                                                            (values
31972                                                                                             id:prefix197_1
31973                                                                                             spec198_0))))
31974                                                                                      (raise-syntax-error$1
31975                                                                                       #f
31976                                                                                       "bad syntax"
31977                                                                                       req_0)))))
31978                                                                              (case-lambda
31979                                                                               ((id:prefix195_0
31980                                                                                 spec196_0)
31981                                                                                (let ((prefix194_1
31982                                                                                       prefix194_0))
31983                                                                                  (values
31984                                                                                   prefix194_1
31985                                                                                   id:prefix195_0
31986                                                                                   spec196_0)))
31987                                                                               (args
31988                                                                                (raise-binding-result-arity-error
31989                                                                                 2
31990                                                                                 args)))))
31991                                                                           (raise-syntax-error$1
31992                                                                            #f
31993                                                                            "bad syntax"
31994                                                                            req_0))))
31995                                                                     (case-lambda
31996                                                                      ((prefix191_0
31997                                                                        id:prefix192_0
31998                                                                        spec193_0)
31999                                                                       (values
32000                                                                        #t
32001                                                                        prefix191_0
32002                                                                        id:prefix192_0
32003                                                                        spec193_0))
32004                                                                      (args
32005                                                                       (raise-binding-result-arity-error
32006                                                                        3
32007                                                                        args)))))
32008                                                                  (case-lambda
32009                                                                   ((ok?_0
32010                                                                     prefix191_0
32011                                                                     id:prefix192_0
32012                                                                     spec193_0)
32013                                                                    (let ((app_0
32014                                                                           (list
32015                                                                            spec193_0)))
32016                                                                      (let ((app_1
32017                                                                             (if top-req_0
32018                                                                               top-req_0
32019                                                                               req_0)))
32020                                                                        (loop_0
32021                                                                         app_0
32022                                                                         app_1
32023                                                                         phase-shift_0
32024                                                                         space-level_0
32025                                                                         just-meta_0
32026                                                                         just-space_0
32027                                                                         (adjust-prefix2.1
32028                                                                          (syntax-e$1
32029                                                                           id:prefix192_0))
32030                                                                         #f
32031                                                                         #f
32032                                                                         'path))))
32033                                                                   (args
32034                                                                    (raise-binding-result-arity-error
32035                                                                     4
32036                                                                     args)))))
32037                                                               (if (unsafe-fx<
32038                                                                    index_0
32039                                                                    11)
32040                                                                 (begin
32041                                                                   (check-nested_1
32042                                                                    'justspaceless)
32043                                                                   (call-with-values
32044                                                                    (lambda ()
32045                                                                      (call-with-values
32046                                                                       (lambda ()
32047                                                                         (let ((s_0
32048                                                                                (if (syntax?$1
32049                                                                                     req_0)
32050                                                                                  (syntax-e$1
32051                                                                                   req_0)
32052                                                                                  req_0)))
32053                                                                           (if (pair?
32054                                                                                s_0)
32055                                                                             (let ((all-except203_0
32056                                                                                    (let ((s_1
32057                                                                                           (car
32058                                                                                            s_0)))
32059                                                                                      s_1)))
32060                                                                               (call-with-values
32061                                                                                (lambda ()
32062                                                                                  (let ((s_1
32063                                                                                         (cdr
32064                                                                                          s_0)))
32065                                                                                    (let ((s_2
32066                                                                                           (if (syntax?$1
32067                                                                                                s_1)
32068                                                                                             (syntax-e$1
32069                                                                                              s_1)
32070                                                                                             s_1)))
32071                                                                                      (if (pair?
32072                                                                                           s_2)
32073                                                                                        (let ((spec206_0
32074                                                                                               (let ((s_3
32075                                                                                                      (car
32076                                                                                                       s_2)))
32077                                                                                                 s_3)))
32078                                                                                          (let ((id207_0
32079                                                                                                 (let ((s_3
32080                                                                                                        (cdr
32081                                                                                                         s_2)))
32082                                                                                                   (let ((s_4
32083                                                                                                          (if (syntax?$1
32084                                                                                                               s_3)
32085                                                                                                            (syntax-e$1
32086                                                                                                             s_3)
32087                                                                                                            s_3)))
32088                                                                                                     (let ((flat-s_0
32089                                                                                                            (to-syntax-list.1
32090                                                                                                             s_4)))
32091                                                                                                       (if (not
32092                                                                                                            flat-s_0)
32093                                                                                                         (raise-syntax-error$1
32094                                                                                                          #f
32095                                                                                                          "bad syntax"
32096                                                                                                          req_0)
32097                                                                                                         (let ((id_0
32098                                                                                                                (begin
32099                                                                                                                  (letrec*
32100                                                                                                                   ((for-loop_1
32101                                                                                                                     (|#%name|
32102                                                                                                                      for-loop
32103                                                                                                                      (lambda (id_0
32104                                                                                                                               lst_1)
32105                                                                                                                        (begin
32106                                                                                                                          (if (pair?
32107                                                                                                                               lst_1)
32108                                                                                                                            (let ((s_5
32109                                                                                                                                   (unsafe-car
32110                                                                                                                                    lst_1)))
32111                                                                                                                              (let ((rest_1
32112                                                                                                                                     (unsafe-cdr
32113                                                                                                                                      lst_1)))
32114                                                                                                                                (let ((id_1
32115                                                                                                                                       (let ((id_1
32116                                                                                                                                              (let ((id208_0
32117                                                                                                                                                     (if (let ((or-part_0
32118                                                                                                                                                                (if (syntax?$1
32119                                                                                                                                                                     s_5)
32120                                                                                                                                                                  (symbol?
32121                                                                                                                                                                   (syntax-e$1
32122                                                                                                                                                                    s_5))
32123                                                                                                                                                                  #f)))
32124                                                                                                                                                           (if or-part_0
32125                                                                                                                                                             or-part_0
32126                                                                                                                                                             (symbol?
32127                                                                                                                                                              s_5)))
32128                                                                                                                                                       s_5
32129                                                                                                                                                       (raise-syntax-error$1
32130                                                                                                                                                        #f
32131                                                                                                                                                        "not an identifier"
32132                                                                                                                                                        req_0
32133                                                                                                                                                        s_5))))
32134                                                                                                                                                (cons
32135                                                                                                                                                 id208_0
32136                                                                                                                                                 id_0))))
32137                                                                                                                                         (values
32138                                                                                                                                          id_1))))
32139                                                                                                                                  (for-loop_1
32140                                                                                                                                   id_1
32141                                                                                                                                   rest_1))))
32142                                                                                                                            id_0))))))
32143                                                                                                                   (for-loop_1
32144                                                                                                                    null
32145                                                                                                                    flat-s_0)))))
32146                                                                                                           (reverse$1
32147                                                                                                            id_0))))))))
32148                                                                                            (let ((spec206_1
32149                                                                                                   spec206_0))
32150                                                                                              (values
32151                                                                                               spec206_1
32152                                                                                               id207_0))))
32153                                                                                        (raise-syntax-error$1
32154                                                                                         #f
32155                                                                                         "bad syntax"
32156                                                                                         req_0)))))
32157                                                                                (case-lambda
32158                                                                                 ((spec204_0
32159                                                                                   id205_0)
32160                                                                                  (let ((all-except203_1
32161                                                                                         all-except203_0))
32162                                                                                    (values
32163                                                                                     all-except203_1
32164                                                                                     spec204_0
32165                                                                                     id205_0)))
32166                                                                                 (args
32167                                                                                  (raise-binding-result-arity-error
32168                                                                                   2
32169                                                                                   args)))))
32170                                                                             (raise-syntax-error$1
32171                                                                              #f
32172                                                                              "bad syntax"
32173                                                                              req_0))))
32174                                                                       (case-lambda
32175                                                                        ((all-except200_0
32176                                                                          spec201_0
32177                                                                          id202_0)
32178                                                                         (values
32179                                                                          #t
32180                                                                          all-except200_0
32181                                                                          spec201_0
32182                                                                          id202_0))
32183                                                                        (args
32184                                                                         (raise-binding-result-arity-error
32185                                                                          3
32186                                                                          args)))))
32187                                                                    (case-lambda
32188                                                                     ((ok?_0
32189                                                                       all-except200_0
32190                                                                       spec201_0
32191                                                                       id202_0)
32192                                                                      (let ((app_0
32193                                                                             (list
32194                                                                              spec201_0)))
32195                                                                        (let ((app_1
32196                                                                               (if top-req_0
32197                                                                                 top-req_0
32198                                                                                 req_0)))
32199                                                                          (loop_0
32200                                                                           app_0
32201                                                                           app_1
32202                                                                           phase-shift_0
32203                                                                           space-level_0
32204                                                                           just-meta_0
32205                                                                           just-space_0
32206                                                                           (adjust-all-except3.1
32207                                                                            '||
32208                                                                            (ids->sym-set
32209                                                                             id202_0))
32210                                                                           #f
32211                                                                           #f
32212                                                                           'path))))
32213                                                                     (args
32214                                                                      (raise-binding-result-arity-error
32215                                                                       4
32216                                                                       args)))))
32217                                                                 (if (unsafe-fx<
32218                                                                      index_0
32219                                                                      12)
32220                                                                   (begin
32221                                                                     (check-nested_1
32222                                                                      'justspaceless)
32223                                                                     (call-with-values
32224                                                                      (lambda ()
32225                                                                        (call-with-values
32226                                                                         (lambda ()
32227                                                                           (let ((s_0
32228                                                                                  (if (syntax?$1
32229                                                                                       req_0)
32230                                                                                    (syntax-e$1
32231                                                                                     req_0)
32232                                                                                    req_0)))
32233                                                                             (if (pair?
32234                                                                                  s_0)
32235                                                                               (let ((prefix-all-except213_0
32236                                                                                      (let ((s_1
32237                                                                                             (car
32238                                                                                              s_0)))
32239                                                                                        s_1)))
32240                                                                                 (call-with-values
32241                                                                                  (lambda ()
32242                                                                                    (let ((s_1
32243                                                                                           (cdr
32244                                                                                            s_0)))
32245                                                                                      (let ((s_2
32246                                                                                             (if (syntax?$1
32247                                                                                                  s_1)
32248                                                                                               (syntax-e$1
32249                                                                                                s_1)
32250                                                                                               s_1)))
32251                                                                                        (if (pair?
32252                                                                                             s_2)
32253                                                                                          (let ((id:prefix217_0
32254                                                                                                 (let ((s_3
32255                                                                                                        (car
32256                                                                                                         s_2)))
32257                                                                                                   (if (let ((or-part_0
32258                                                                                                              (if (syntax?$1
32259                                                                                                                   s_3)
32260                                                                                                                (symbol?
32261                                                                                                                 (syntax-e$1
32262                                                                                                                  s_3))
32263                                                                                                                #f)))
32264                                                                                                         (if or-part_0
32265                                                                                                           or-part_0
32266                                                                                                           (symbol?
32267                                                                                                            s_3)))
32268                                                                                                     s_3
32269                                                                                                     (raise-syntax-error$1
32270                                                                                                      #f
32271                                                                                                      "not an identifier"
32272                                                                                                      req_0
32273                                                                                                      s_3)))))
32274                                                                                            (call-with-values
32275                                                                                             (lambda ()
32276                                                                                               (let ((s_3
32277                                                                                                      (cdr
32278                                                                                                       s_2)))
32279                                                                                                 (let ((s_4
32280                                                                                                        (if (syntax?$1
32281                                                                                                             s_3)
32282                                                                                                          (syntax-e$1
32283                                                                                                           s_3)
32284                                                                                                          s_3)))
32285                                                                                                   (if (pair?
32286                                                                                                        s_4)
32287                                                                                                     (let ((spec220_0
32288                                                                                                            (let ((s_5
32289                                                                                                                   (car
32290                                                                                                                    s_4)))
32291                                                                                                              s_5)))
32292                                                                                                       (let ((id221_0
32293                                                                                                              (let ((s_5
32294                                                                                                                     (cdr
32295                                                                                                                      s_4)))
32296                                                                                                                (let ((s_6
32297                                                                                                                       (if (syntax?$1
32298                                                                                                                            s_5)
32299                                                                                                                         (syntax-e$1
32300                                                                                                                          s_5)
32301                                                                                                                         s_5)))
32302                                                                                                                  (let ((flat-s_0
32303                                                                                                                         (to-syntax-list.1
32304                                                                                                                          s_6)))
32305                                                                                                                    (if (not
32306                                                                                                                         flat-s_0)
32307                                                                                                                      (raise-syntax-error$1
32308                                                                                                                       #f
32309                                                                                                                       "bad syntax"
32310                                                                                                                       req_0)
32311                                                                                                                      (let ((id_0
32312                                                                                                                             (begin
32313                                                                                                                               (letrec*
32314                                                                                                                                ((for-loop_1
32315                                                                                                                                  (|#%name|
32316                                                                                                                                   for-loop
32317                                                                                                                                   (lambda (id_0
32318                                                                                                                                            lst_1)
32319                                                                                                                                     (begin
32320                                                                                                                                       (if (pair?
32321                                                                                                                                            lst_1)
32322                                                                                                                                         (let ((s_7
32323                                                                                                                                                (unsafe-car
32324                                                                                                                                                 lst_1)))
32325                                                                                                                                           (let ((rest_1
32326                                                                                                                                                  (unsafe-cdr
32327                                                                                                                                                   lst_1)))
32328                                                                                                                                             (let ((id_1
32329                                                                                                                                                    (let ((id_1
32330                                                                                                                                                           (let ((id222_0
32331                                                                                                                                                                  (if (let ((or-part_0
32332                                                                                                                                                                             (if (syntax?$1
32333                                                                                                                                                                                  s_7)
32334                                                                                                                                                                               (symbol?
32335                                                                                                                                                                                (syntax-e$1
32336                                                                                                                                                                                 s_7))
32337                                                                                                                                                                               #f)))
32338                                                                                                                                                                        (if or-part_0
32339                                                                                                                                                                          or-part_0
32340                                                                                                                                                                          (symbol?
32341                                                                                                                                                                           s_7)))
32342                                                                                                                                                                    s_7
32343                                                                                                                                                                    (raise-syntax-error$1
32344                                                                                                                                                                     #f
32345                                                                                                                                                                     "not an identifier"
32346                                                                                                                                                                     req_0
32347                                                                                                                                                                     s_7))))
32348                                                                                                                                                             (cons
32349                                                                                                                                                              id222_0
32350                                                                                                                                                              id_0))))
32351                                                                                                                                                      (values
32352                                                                                                                                                       id_1))))
32353                                                                                                                                               (for-loop_1
32354                                                                                                                                                id_1
32355                                                                                                                                                rest_1))))
32356                                                                                                                                         id_0))))))
32357                                                                                                                                (for-loop_1
32358                                                                                                                                 null
32359                                                                                                                                 flat-s_0)))))
32360                                                                                                                        (reverse$1
32361                                                                                                                         id_0))))))))
32362                                                                                                         (let ((spec220_1
32363                                                                                                                spec220_0))
32364                                                                                                           (values
32365                                                                                                            spec220_1
32366                                                                                                            id221_0))))
32367                                                                                                     (raise-syntax-error$1
32368                                                                                                      #f
32369                                                                                                      "bad syntax"
32370                                                                                                      req_0)))))
32371                                                                                             (case-lambda
32372                                                                                              ((spec218_0
32373                                                                                                id219_0)
32374                                                                                               (let ((id:prefix217_1
32375                                                                                                      id:prefix217_0))
32376                                                                                                 (values
32377                                                                                                  id:prefix217_1
32378                                                                                                  spec218_0
32379                                                                                                  id219_0)))
32380                                                                                              (args
32381                                                                                               (raise-binding-result-arity-error
32382                                                                                                2
32383                                                                                                args)))))
32384                                                                                          (raise-syntax-error$1
32385                                                                                           #f
32386                                                                                           "bad syntax"
32387                                                                                           req_0)))))
32388                                                                                  (case-lambda
32389                                                                                   ((id:prefix214_0
32390                                                                                     spec215_0
32391                                                                                     id216_0)
32392                                                                                    (let ((prefix-all-except213_1
32393                                                                                           prefix-all-except213_0))
32394                                                                                      (values
32395                                                                                       prefix-all-except213_1
32396                                                                                       id:prefix214_0
32397                                                                                       spec215_0
32398                                                                                       id216_0)))
32399                                                                                   (args
32400                                                                                    (raise-binding-result-arity-error
32401                                                                                     3
32402                                                                                     args)))))
32403                                                                               (raise-syntax-error$1
32404                                                                                #f
32405                                                                                "bad syntax"
32406                                                                                req_0))))
32407                                                                         (case-lambda
32408                                                                          ((prefix-all-except209_0
32409                                                                            id:prefix210_0
32410                                                                            spec211_0
32411                                                                            id212_0)
32412                                                                           (values
32413                                                                            #t
32414                                                                            prefix-all-except209_0
32415                                                                            id:prefix210_0
32416                                                                            spec211_0
32417                                                                            id212_0))
32418                                                                          (args
32419                                                                           (raise-binding-result-arity-error
32420                                                                            4
32421                                                                            args)))))
32422                                                                      (case-lambda
32423                                                                       ((ok?_0
32424                                                                         prefix-all-except209_0
32425                                                                         id:prefix210_0
32426                                                                         spec211_0
32427                                                                         id212_0)
32428                                                                        (let ((app_0
32429                                                                               (list
32430                                                                                spec211_0)))
32431                                                                          (let ((app_1
32432                                                                                 (if top-req_0
32433                                                                                   top-req_0
32434                                                                                   req_0)))
32435                                                                            (loop_0
32436                                                                             app_0
32437                                                                             app_1
32438                                                                             phase-shift_0
32439                                                                             space-level_0
32440                                                                             just-meta_0
32441                                                                             just-space_0
32442                                                                             (let ((app_2
32443                                                                                    (syntax-e$1
32444                                                                                     id:prefix210_0)))
32445                                                                               (adjust-all-except3.1
32446                                                                                app_2
32447                                                                                (ids->sym-set
32448                                                                                 id212_0)))
32449                                                                             #f
32450                                                                             #f
32451                                                                             'path))))
32452                                                                       (args
32453                                                                        (raise-binding-result-arity-error
32454                                                                         5
32455                                                                         args)))))
32456                                                                   (begin
32457                                                                     (check-nested_1
32458                                                                      'justspaceless)
32459                                                                     (call-with-values
32460                                                                      (lambda ()
32461                                                                        (call-with-values
32462                                                                         (lambda ()
32463                                                                           (let ((s_0
32464                                                                                  (if (syntax?$1
32465                                                                                       req_0)
32466                                                                                    (syntax-e$1
32467                                                                                     req_0)
32468                                                                                    req_0)))
32469                                                                             (if (pair?
32470                                                                                  s_0)
32471                                                                               (let ((rename227_0
32472                                                                                      (let ((s_1
32473                                                                                             (car
32474                                                                                              s_0)))
32475                                                                                        s_1)))
32476                                                                                 (call-with-values
32477                                                                                  (lambda ()
32478                                                                                    (let ((s_1
32479                                                                                           (cdr
32480                                                                                            s_0)))
32481                                                                                      (let ((s_2
32482                                                                                             (if (syntax?$1
32483                                                                                                  s_1)
32484                                                                                               (syntax-e$1
32485                                                                                                s_1)
32486                                                                                               s_1)))
32487                                                                                        (if (pair?
32488                                                                                             s_2)
32489                                                                                          (let ((spec231_0
32490                                                                                                 (let ((s_3
32491                                                                                                        (car
32492                                                                                                         s_2)))
32493                                                                                                   s_3)))
32494                                                                                            (call-with-values
32495                                                                                             (lambda ()
32496                                                                                               (let ((s_3
32497                                                                                                      (cdr
32498                                                                                                       s_2)))
32499                                                                                                 (let ((s_4
32500                                                                                                        (if (syntax?$1
32501                                                                                                             s_3)
32502                                                                                                          (syntax-e$1
32503                                                                                                           s_3)
32504                                                                                                          s_3)))
32505                                                                                                   (if (pair?
32506                                                                                                        s_4)
32507                                                                                                     (let ((id:to234_0
32508                                                                                                            (let ((s_5
32509                                                                                                                   (car
32510                                                                                                                    s_4)))
32511                                                                                                              (if (let ((or-part_0
32512                                                                                                                         (if (syntax?$1
32513                                                                                                                              s_5)
32514                                                                                                                           (symbol?
32515                                                                                                                            (syntax-e$1
32516                                                                                                                             s_5))
32517                                                                                                                           #f)))
32518                                                                                                                    (if or-part_0
32519                                                                                                                      or-part_0
32520                                                                                                                      (symbol?
32521                                                                                                                       s_5)))
32522                                                                                                                s_5
32523                                                                                                                (raise-syntax-error$1
32524                                                                                                                 #f
32525                                                                                                                 "not an identifier"
32526                                                                                                                 req_0
32527                                                                                                                 s_5)))))
32528                                                                                                       (let ((id:from235_0
32529                                                                                                              (let ((s_5
32530                                                                                                                     (cdr
32531                                                                                                                      s_4)))
32532                                                                                                                (let ((s_6
32533                                                                                                                       (if (syntax?$1
32534                                                                                                                            s_5)
32535                                                                                                                         (syntax-e$1
32536                                                                                                                          s_5)
32537                                                                                                                         s_5)))
32538                                                                                                                  (if (pair?
32539                                                                                                                       s_6)
32540                                                                                                                    (let ((id:from236_0
32541                                                                                                                           (let ((s_7
32542                                                                                                                                  (car
32543                                                                                                                                   s_6)))
32544                                                                                                                             (if (let ((or-part_0
32545                                                                                                                                        (if (syntax?$1
32546                                                                                                                                             s_7)
32547                                                                                                                                          (symbol?
32548                                                                                                                                           (syntax-e$1
32549                                                                                                                                            s_7))
32550                                                                                                                                          #f)))
32551                                                                                                                                   (if or-part_0
32552                                                                                                                                     or-part_0
32553                                                                                                                                     (symbol?
32554                                                                                                                                      s_7)))
32555                                                                                                                               s_7
32556                                                                                                                               (raise-syntax-error$1
32557                                                                                                                                #f
32558                                                                                                                                "not an identifier"
32559                                                                                                                                req_0
32560                                                                                                                                s_7)))))
32561                                                                                                                      (call-with-values
32562                                                                                                                       (lambda ()
32563                                                                                                                         (let ((s_7
32564                                                                                                                                (cdr
32565                                                                                                                                 s_6)))
32566                                                                                                                           (let ((s_8
32567                                                                                                                                  (if (syntax?$1
32568                                                                                                                                       s_7)
32569                                                                                                                                    (syntax-e$1
32570                                                                                                                                     s_7)
32571                                                                                                                                    s_7)))
32572                                                                                                                             (if (null?
32573                                                                                                                                  s_8)
32574                                                                                                                               (values)
32575                                                                                                                               (raise-syntax-error$1
32576                                                                                                                                #f
32577                                                                                                                                "bad syntax"
32578                                                                                                                                req_0)))))
32579                                                                                                                       (case-lambda
32580                                                                                                                        (()
32581                                                                                                                         (let ((id:from236_1
32582                                                                                                                                id:from236_0))
32583                                                                                                                           (values
32584                                                                                                                            id:from236_1)))
32585                                                                                                                        (args
32586                                                                                                                         (raise-binding-result-arity-error
32587                                                                                                                          0
32588                                                                                                                          args)))))
32589                                                                                                                    (raise-syntax-error$1
32590                                                                                                                     #f
32591                                                                                                                     "bad syntax"
32592                                                                                                                     req_0))))))
32593                                                                                                         (let ((id:to234_1
32594                                                                                                                id:to234_0))
32595                                                                                                           (values
32596                                                                                                            id:to234_1
32597                                                                                                            id:from235_0))))
32598                                                                                                     (raise-syntax-error$1
32599                                                                                                      #f
32600                                                                                                      "bad syntax"
32601                                                                                                      req_0)))))
32602                                                                                             (case-lambda
32603                                                                                              ((id:to232_0
32604                                                                                                id:from233_0)
32605                                                                                               (let ((spec231_1
32606                                                                                                      spec231_0))
32607                                                                                                 (values
32608                                                                                                  spec231_1
32609                                                                                                  id:to232_0
32610                                                                                                  id:from233_0)))
32611                                                                                              (args
32612                                                                                               (raise-binding-result-arity-error
32613                                                                                                2
32614                                                                                                args)))))
32615                                                                                          (raise-syntax-error$1
32616                                                                                           #f
32617                                                                                           "bad syntax"
32618                                                                                           req_0)))))
32619                                                                                  (case-lambda
32620                                                                                   ((spec228_0
32621                                                                                     id:to229_0
32622                                                                                     id:from230_0)
32623                                                                                    (let ((rename227_1
32624                                                                                           rename227_0))
32625                                                                                      (values
32626                                                                                       rename227_1
32627                                                                                       spec228_0
32628                                                                                       id:to229_0
32629                                                                                       id:from230_0)))
32630                                                                                   (args
32631                                                                                    (raise-binding-result-arity-error
32632                                                                                     3
32633                                                                                     args)))))
32634                                                                               (raise-syntax-error$1
32635                                                                                #f
32636                                                                                "bad syntax"
32637                                                                                req_0))))
32638                                                                         (case-lambda
32639                                                                          ((rename223_0
32640                                                                            spec224_0
32641                                                                            id:to225_0
32642                                                                            id:from226_0)
32643                                                                           (values
32644                                                                            #t
32645                                                                            rename223_0
32646                                                                            spec224_0
32647                                                                            id:to225_0
32648                                                                            id:from226_0))
32649                                                                          (args
32650                                                                           (raise-binding-result-arity-error
32651                                                                            4
32652                                                                            args)))))
32653                                                                      (case-lambda
32654                                                                       ((ok?_0
32655                                                                         rename223_0
32656                                                                         spec224_0
32657                                                                         id:to225_0
32658                                                                         id:from226_0)
32659                                                                        (let ((app_0
32660                                                                               (list
32661                                                                                spec224_0)))
32662                                                                          (let ((app_1
32663                                                                                 (if top-req_0
32664                                                                                   top-req_0
32665                                                                                   req_0)))
32666                                                                            (loop_0
32667                                                                             app_0
32668                                                                             app_1
32669                                                                             phase-shift_0
32670                                                                             space-level_0
32671                                                                             just-meta_0
32672                                                                             just-space_0
32673                                                                             (adjust-rename4.1
32674                                                                              id:to225_0
32675                                                                              (syntax-e$1
32676                                                                               id:from226_0))
32677                                                                             #f
32678                                                                             #f
32679                                                                             'path))))
32680                                                                       (args
32681                                                                        (raise-binding-result-arity-error
32682                                                                         5
32683                                                                         args)))))))))))))))
32684                                              (values result_1))))
32685                                       (if (if (not
32686                                                (let ((x_0 (list req_0)))
32687                                                  (not result_1)))
32688                                             #t
32689                                             #f)
32690                                         (for-loop_0 result_1 rest_0)
32691                                         result_1)))))
32692                               result_0))))))
32693                      (for-loop_0 #t reqs_0))))))))
32694            (loop_0
32695             reqs25_0
32696             #f
32697             phase-shift28_0
32698             kw2450
32699             'all
32700             #t
32701             #f
32702             #t
32703             #t
32704             'raw))))))))
32705(define ids->sym-set
32706  (lambda (ids_0)
32707    (begin
32708      (letrec*
32709       ((for-loop_0
32710         (|#%name|
32711          for-loop
32712          (lambda (table_0 lst_0)
32713            (begin
32714              (if (pair? lst_0)
32715                (let ((id_0 (unsafe-car lst_0)))
32716                  (let ((rest_0 (unsafe-cdr lst_0)))
32717                    (let ((table_1
32718                           (let ((table_1
32719                                  (call-with-values
32720                                   (lambda () (values (syntax-e$1 id_0) #t))
32721                                   (case-lambda
32722                                    ((key_0 val_0)
32723                                     (hash-set table_0 key_0 val_0))
32724                                    (args
32725                                     (raise-binding-result-arity-error
32726                                      2
32727                                      args))))))
32728                             (values table_1))))
32729                      (for-loop_0 table_1 rest_0))))
32730                table_0))))))
32731       (for-loop_0 hash2725 ids_0)))))
32732(define perform-initial-require!.1
32733  (|#%name|
32734   perform-initial-require!
32735   (lambda (bind?31_0
32736            who32_0
32737            mod-path35_0
32738            self36_0
32739            in-stx37_0
32740            m-ns38_0
32741            requires+provides39_0)
32742     (begin
32743       (let ((temp237_0 (module-path->mpi.1 hash2610 mod-path35_0 self36_0)))
32744         (perform-require!.1
32745          #f
32746          bind?31_0
32747          #t
32748          #f
32749          #f
32750          #t
32751          'all
32752          #t
32753          0
32754          requires+provides39_0
32755          0
32756          #f
32757          #f
32758          unsafe-undefined
32759          #t
32760          who32_0
32761          temp237_0
32762          #f
32763          self36_0
32764          in-stx37_0
32765          m-ns38_0))))))
32766(define perform-require!.1
32767  (|#%name|
32768   perform-require!
32769   (lambda (adjust46_0
32770            bind?55_0
32771            can-be-shadowed?50_0
32772            copy-variable-as-constant?53_0
32773            copy-variable-phase-level52_0
32774            initial-require?51_0
32775            just-meta44_0
32776            just-space45_0
32777            phase-shift41_0
32778            requires+provides47_0
32779            run-phase43_0
32780            run?49_0
32781            skip-variable-phase-level54_0
32782            space-level42_0
32783            visit?48_0
32784            who56_0
32785            mpi73_0
32786            orig-s74_0
32787            self75_0
32788            in-stx76_0
32789            m-ns77_0)
32790     (begin
32791       (let ((space-level_0
32792              (if (eq? space-level42_0 unsafe-undefined)
32793                kw2450
32794                space-level42_0)))
32795         (begin
32796           (if log-performance?
32797             (start-performance-region 'expand 'require)
32798             (void))
32799           (begin0
32800             (let ((module-name_0
32801                    (1/module-path-index-resolve mpi73_0 #t orig-s74_0)))
32802               (let ((bind-in-stx_0
32803                      (if (adjust-rename? adjust46_0)
32804                        (adjust-rename-to-id adjust46_0)
32805                        in-stx76_0)))
32806                 (let ((done-syms_0 (if adjust46_0 (make-hash) #f)))
32807                   (let ((m_0 (namespace->module m-ns77_0 module-name_0)))
32808                     (begin
32809                       (if m_0
32810                         (void)
32811                         (begin-unsafe
32812                          (raise-arguments-error
32813                           'require
32814                           "unknown module"
32815                           "module name"
32816                           (module-name->error-string module-name_0))))
32817                       (let ((interned-mpi_0
32818                              (if requires+provides47_0
32819                                (add-required-module!
32820                                 requires+provides47_0
32821                                 mpi73_0
32822                                 (intern-phase+space-shift
32823                                  phase-shift41_0
32824                                  space-level_0)
32825                                 (module-cross-phase-persistent? m_0))
32826                                mpi73_0)))
32827                         (begin
32828                           (if visit?48_0
32829                             (namespace-module-visit!.1
32830                              run-phase43_0
32831                              m-ns77_0
32832                              interned-mpi_0
32833                              phase-shift41_0)
32834                             (void))
32835                           (begin
32836                             (if run?49_0
32837                               (namespace-module-instantiate!.1
32838                                #f
32839                                #t
32840                                run-phase43_0
32841                                hash2610
32842                                null
32843                                #f
32844                                m-ns77_0
32845                                interned-mpi_0
32846                                phase-shift41_0)
32847                               (void))
32848                             (begin
32849                               (if (not (if visit?48_0 visit?48_0 run?49_0))
32850                                 (namespace-module-make-available!.1
32851                                  run-phase43_0
32852                                  m-ns77_0
32853                                  interned-mpi_0
32854                                  phase-shift41_0)
32855                                 (void))
32856                               (let ((can-bulk-bind?_0
32857                                      (if (eq? space-level_0 kw2450)
32858                                        (if (let ((or-part_0 (not adjust46_0)))
32859                                              (if or-part_0
32860                                                or-part_0
32861                                                (let ((or-part_1
32862                                                       (adjust-prefix?
32863                                                        adjust46_0)))
32864                                                  (if or-part_1
32865                                                    or-part_1
32866                                                    (adjust-all-except?
32867                                                     adjust46_0)))))
32868                                          (not skip-variable-phase-level54_0)
32869                                          #f)
32870                                        #f)))
32871                                 (let ((bulk-prefix_0
32872                                        (if (adjust-prefix? adjust46_0)
32873                                          (adjust-prefix-sym adjust46_0)
32874                                          (if (adjust-all-except? adjust46_0)
32875                                            (adjust-all-except-prefix-sym
32876                                             adjust46_0)
32877                                            #f))))
32878                                   (let ((bulk-excepts_0
32879                                          (if (adjust-all-except? adjust46_0)
32880                                            (adjust-all-except-syms adjust46_0)
32881                                            hash2610)))
32882                                     (let ((update-nominals-box_0
32883                                            (if can-bulk-bind?_0
32884                                              (box null)
32885                                              #f)))
32886                                       (begin
32887                                         (let ((temp260_0
32888                                                (if requires+provides47_0
32889                                                  (requires+provides-self
32890                                                   requires+provides47_0)
32891                                                  #f)))
32892                                           (let ((temp261_0
32893                                                  (if (adjust-only? adjust46_0)
32894                                                    (set->list
32895                                                     (adjust-only-syms
32896                                                      adjust46_0))
32897                                                    (if (adjust-rename?
32898                                                         adjust46_0)
32899                                                      (list
32900                                                       (adjust-rename-from-sym
32901                                                        adjust46_0))
32902                                                      #f))))
32903                                             (let ((temp268_0
32904                                                    (if requires+provides47_0
32905                                                      (if can-bulk-bind?_0
32906                                                        (|#%name|
32907                                                         temp268
32908                                                         (lambda (provides_0
32909                                                                  provide-phase+space_0)
32910                                                           (begin
32911                                                             (let ((temp284_0
32912                                                                    (module-self
32913                                                                     m_0)))
32914                                                               (let ((temp291_0
32915                                                                      (if (positive?
32916                                                                           (hash-count
32917                                                                            bulk-excepts_0))
32918                                                                        done-syms_0
32919                                                                        #f)))
32920                                                                 (let ((temp293_0
32921                                                                        (not
32922                                                                         initial-require?51_0)))
32923                                                                   (let ((temp291_1
32924                                                                          temp291_0)
32925                                                                         (temp284_1
32926                                                                          temp284_0))
32927                                                                     (add-bulk-required-ids!.1
32928                                                                      update-nominals-box_0
32929                                                                      can-be-shadowed?50_0
32930                                                                      temp293_0
32931                                                                      bulk-excepts_0
32932                                                                      orig-s74_0
32933                                                                      bulk-prefix_0
32934                                                                      temp291_1
32935                                                                      who56_0
32936                                                                      requires+provides47_0
32937                                                                      bind-in-stx_0
32938                                                                      temp284_1
32939                                                                      mpi73_0
32940                                                                      phase-shift41_0
32941                                                                      provides_0
32942                                                                      provide-phase+space_0))))))))
32943                                                        #f)
32944                                                      #f)))
32945                                               (let ((temp269_0
32946                                                      (if (let ((or-part_0
32947                                                                 (not
32948                                                                  can-bulk-bind?_0)))
32949                                                            (if or-part_0
32950                                                              or-part_0
32951                                                              copy-variable-phase-level52_0))
32952                                                        (|#%name|
32953                                                         temp269
32954                                                         (lambda (binding_0
32955                                                                  as-transformer?_0)
32956                                                           (begin
32957                                                             (let ((sym_0
32958                                                                    (module-binding-nominal-sym
32959                                                                     binding_0)))
32960                                                               (let ((provide-phase+space_0
32961                                                                      (module-binding-nominal-phase+space
32962                                                                       binding_0)))
32963                                                                 (let ((provide-phase_0
32964                                                                        (phase+space-phase
32965                                                                         provide-phase+space_0)))
32966                                                                   (let ((provide-space_0
32967                                                                          (phase+space-space
32968                                                                           provide-phase+space_0)))
32969                                                                     (let ((adjusted-sym_0
32970                                                                            (if (not
32971                                                                                 (symbol-interned?
32972                                                                                  sym_0))
32973                                                                              #f
32974                                                                              (if (if skip-variable-phase-level54_0
32975                                                                                    (if (not
32976                                                                                         as-transformer?_0)
32977                                                                                      (equal?
32978                                                                                       provide-phase_0
32979                                                                                       skip-variable-phase-level54_0)
32980                                                                                      #f)
32981                                                                                    #f)
32982                                                                                #f
32983                                                                                (if (not
32984                                                                                     adjust46_0)
32985                                                                                  sym_0
32986                                                                                  (if (adjust-only?
32987                                                                                       adjust46_0)
32988                                                                                    (if (let ((s_0
32989                                                                                               (adjust-only-syms
32990                                                                                                adjust46_0)))
32991                                                                                          (begin-unsafe
32992                                                                                           (hash-ref
32993                                                                                            s_0
32994                                                                                            sym_0
32995                                                                                            #f)))
32996                                                                                      (if (hash-set!
32997                                                                                           done-syms_0
32998                                                                                           sym_0
32999                                                                                           #t)
33000                                                                                        sym_0
33001                                                                                        #f)
33002                                                                                      #f)
33003                                                                                    (if (adjust-prefix?
33004                                                                                         adjust46_0)
33005                                                                                      (string->symbol
33006                                                                                       (let ((app_0
33007                                                                                              (symbol->string
33008                                                                                               (adjust-prefix-sym
33009                                                                                                adjust46_0))))
33010                                                                                         (string-append
33011                                                                                          app_0
33012                                                                                          (symbol->string
33013                                                                                           sym_0))))
33014                                                                                      (if (adjust-all-except?
33015                                                                                           adjust46_0)
33016                                                                                        (if (not
33017                                                                                             (if (let ((s_0
33018                                                                                                        (adjust-all-except-syms
33019                                                                                                         adjust46_0)))
33020                                                                                                   (begin-unsafe
33021                                                                                                    (hash-ref
33022                                                                                                     s_0
33023                                                                                                     sym_0
33024                                                                                                     #f)))
33025                                                                                               (hash-set!
33026                                                                                                done-syms_0
33027                                                                                                sym_0
33028                                                                                                #t)
33029                                                                                               #f))
33030                                                                                          (string->symbol
33031                                                                                           (let ((app_0
33032                                                                                                  (symbol->string
33033                                                                                                   (adjust-all-except-prefix-sym
33034                                                                                                    adjust46_0))))
33035                                                                                             (string-append
33036                                                                                              app_0
33037                                                                                              (symbol->string
33038                                                                                               sym_0))))
33039                                                                                          #f)
33040                                                                                        (if (adjust-rename?
33041                                                                                             adjust46_0)
33042                                                                                          (if (eq?
33043                                                                                               sym_0
33044                                                                                               (adjust-rename-from-sym
33045                                                                                                adjust46_0))
33046                                                                                            (if (hash-set!
33047                                                                                                 done-syms_0
33048                                                                                                 sym_0
33049                                                                                                 #t)
33050                                                                                              (adjust-rename-to-id
33051                                                                                               adjust46_0)
33052                                                                                              #f)
33053                                                                                            #f)
33054                                                                                          (void))))))))))
33055                                                                       (let ((skip-bind?_0
33056                                                                              (if (if adjusted-sym_0
33057                                                                                    requires+provides47_0
33058                                                                                    #f)
33059                                                                                (let ((bind-phase_0
33060                                                                                       (phase+
33061                                                                                        phase-shift41_0
33062                                                                                        provide-phase_0)))
33063                                                                                  (let ((bind-space_0
33064                                                                                         (space+
33065                                                                                          provide-space_0
33066                                                                                          space-level_0)))
33067                                                                                    (let ((s_0
33068                                                                                           (add-space-scope
33069                                                                                            (datum->syntax$1
33070                                                                                             bind-in-stx_0
33071                                                                                             adjusted-sym_0)
33072                                                                                            bind-space_0)))
33073                                                                                      (let ((bound-status_0
33074                                                                                             (if initial-require?51_0
33075                                                                                               #f
33076                                                                                               (begin
33077                                                                                                 (adjust-shadow-requires!
33078                                                                                                  requires+provides47_0
33079                                                                                                  s_0
33080                                                                                                  bind-phase_0
33081                                                                                                  bind-space_0)
33082                                                                                                 (check-not-defined.1
33083                                                                                                  #f
33084                                                                                                  #t
33085                                                                                                  #t
33086                                                                                                  orig-s74_0
33087                                                                                                  #t
33088                                                                                                  binding_0
33089                                                                                                  who56_0
33090                                                                                                  requires+provides47_0
33091                                                                                                  s_0
33092                                                                                                  bind-phase_0
33093                                                                                                  bind-space_0)))))
33094                                                                                        (begin
33095                                                                                          (if (eq?
33096                                                                                               bound-status_0
33097                                                                                               'defined)
33098                                                                                            (void)
33099                                                                                            (let ((temp309_0
33100                                                                                                   (intern-phase+space
33101                                                                                                    bind-phase_0
33102                                                                                                    bind-space_0)))
33103                                                                                              (add-defined-or-required-id!.1
33104                                                                                               as-transformer?_0
33105                                                                                               can-be-shadowed?50_0
33106                                                                                               requires+provides47_0
33107                                                                                               s_0
33108                                                                                               temp309_0
33109                                                                                               binding_0)))
33110                                                                                          bound-status_0)))))
33111                                                                                #f)))
33112                                                                         (begin
33113                                                                           (if (if copy-variable-phase-level52_0
33114                                                                                 (if (not
33115                                                                                      as-transformer?_0)
33116                                                                                   (equal?
33117                                                                                    provide-phase_0
33118                                                                                    copy-variable-phase-level52_0)
33119                                                                                   #f)
33120                                                                                 #f)
33121                                                                             (copy-namespace-value
33122                                                                              m-ns77_0
33123                                                                              sym_0
33124                                                                              binding_0
33125                                                                              copy-variable-phase-level52_0
33126                                                                              phase-shift41_0
33127                                                                              copy-variable-as-constant?53_0)
33128                                                                             (void))
33129                                                                           (if (not
33130                                                                                skip-bind?_0)
33131                                                                             adjusted-sym_0
33132                                                                             #f)))))))))))
33133                                                        #f)))
33134                                                 (let ((temp268_1 temp268_0)
33135                                                       (temp261_1 temp261_0)
33136                                                       (temp260_1 temp260_0))
33137                                                   (bind-all-provides!.1
33138                                                    bind?55_0
33139                                                    temp268_1
33140                                                    bulk-excepts_0
33141                                                    bulk-prefix_0
33142                                                    can-bulk-bind?_0
33143                                                    temp260_1
33144                                                    temp269_0
33145                                                    orig-s74_0
33146                                                    just-meta44_0
33147                                                    just-space45_0
33148                                                    temp261_1
33149                                                    m_0
33150                                                    bind-in-stx_0
33151                                                    phase-shift41_0
33152                                                    space-level_0
33153                                                    m-ns77_0
33154                                                    interned-mpi_0
33155                                                    module-name_0
33156                                                    requires+provides47_0))))))
33157                                         (begin
33158                                           (if update-nominals-box_0
33159                                             (begin
33160                                               (let ((lst_0
33161                                                      (unbox
33162                                                       update-nominals-box_0)))
33163                                                 (begin
33164                                                   (letrec*
33165                                                    ((for-loop_0
33166                                                      (|#%name|
33167                                                       for-loop
33168                                                       (lambda (lst_1)
33169                                                         (begin
33170                                                           (if (pair? lst_1)
33171                                                             (let ((update!_0
33172                                                                    (unsafe-car
33173                                                                     lst_1)))
33174                                                               (let ((rest_0
33175                                                                      (unsafe-cdr
33176                                                                       lst_1)))
33177                                                                 (begin
33178                                                                   (|#%app|
33179                                                                    update!_0)
33180                                                                   (for-loop_0
33181                                                                    rest_0))))
33182                                                             (values)))))))
33183                                                    (for-loop_0 lst_0))))
33184                                               (void))
33185                                             (void))
33186                                           (let ((need-syms_0
33187                                                  (if (adjust-only? adjust46_0)
33188                                                    (adjust-only-syms
33189                                                     adjust46_0)
33190                                                    (if (adjust-all-except?
33191                                                         adjust46_0)
33192                                                      (adjust-all-except-syms
33193                                                       adjust46_0)
33194                                                      (if (adjust-rename?
33195                                                           adjust46_0)
33196                                                        (set
33197                                                         (adjust-rename-from-sym
33198                                                          adjust46_0))
33199                                                        #f)))))
33200                                             (if (if need-syms_0
33201                                                   (not
33202                                                    (let ((app_0
33203                                                           (begin-unsafe
33204                                                            (hash-count
33205                                                             need-syms_0))))
33206                                                      (=
33207                                                       app_0
33208                                                       (hash-count
33209                                                        done-syms_0))))
33210                                                   #f)
33211                                               (begin
33212                                                 (begin
33213                                                   (letrec*
33214                                                    ((for-loop_0
33215                                                      (|#%name|
33216                                                       for-loop
33217                                                       (lambda (i_0)
33218                                                         (begin
33219                                                           (if i_0
33220                                                             (let ((sym_0
33221                                                                    (unsafe-immutable-hash-iterate-key
33222                                                                     need-syms_0
33223                                                                     i_0)))
33224                                                               (begin
33225                                                                 (if (hash-ref
33226                                                                      done-syms_0
33227                                                                      sym_0
33228                                                                      #f)
33229                                                                   (void)
33230                                                                   (raise-syntax-error$1
33231                                                                    who56_0
33232                                                                    "not in nested spec"
33233                                                                    orig-s74_0
33234                                                                    sym_0))
33235                                                                 (for-loop_0
33236                                                                  (unsafe-immutable-hash-iterate-next
33237                                                                   need-syms_0
33238                                                                   i_0))))
33239                                                             (values)))))))
33240                                                    (for-loop_0
33241                                                     (unsafe-immutable-hash-iterate-first
33242                                                      need-syms_0))))
33243                                                 (void))
33244                                               (void))))))))))))))))))
33245             (if log-performance? (end-performance-region) (void)))))))))
33246(define bind-all-provides!.1
33247  (|#%name|
33248   bind-all-provides!
33249   (lambda (bind?84_0
33250            bulk-callback89_0
33251            bulk-excepts87_0
33252            bulk-prefix86_0
33253            can-bulk?85_0
33254            defines-mpi80_0
33255            filter88_0
33256            in79_0
33257            just-meta82_0
33258            just-space83_0
33259            only81_0
33260            m101_0
33261            in-stx102_0
33262            phase-shift103_0
33263            space-level104_0
33264            ns105_0
33265            mpi106_0
33266            module-name107_0
33267            requires+provides108_0)
33268     (begin
33269       (let ((self_0 (module-self m101_0)))
33270         (let ((phase+space-shift_0
33271                (intern-phase+space-shift phase-shift103_0 space-level104_0)))
33272           (begin
33273             (let ((ht_0 (module-provides m101_0)))
33274               (begin
33275                 (letrec*
33276                  ((for-loop_0
33277                    (|#%name|
33278                     for-loop
33279                     (lambda (i_0)
33280                       (begin
33281                         (if i_0
33282                           (call-with-values
33283                            (lambda () (hash-iterate-key+value ht_0 i_0))
33284                            (case-lambda
33285                             ((provide-phase+space_0 provides_0)
33286                              (call-with-values
33287                               (lambda ()
33288                                 (if (if (let ((or-part_0
33289                                                (eq? just-meta82_0 'all)))
33290                                           (if or-part_0
33291                                             or-part_0
33292                                             (eqv?
33293                                              just-meta82_0
33294                                              (phase+space-phase
33295                                               provide-phase+space_0))))
33296                                       (let ((or-part_0
33297                                              (eq? just-space83_0 #t)))
33298                                         (if or-part_0
33299                                           or-part_0
33300                                           (eqv?
33301                                            just-space83_0
33302                                            (phase+space-space
33303                                             provide-phase+space_0))))
33304                                       #f)
33305                                   (begin
33306                                     (let ((phase+space_0
33307                                            (begin-unsafe
33308                                             (intern-phase+space
33309                                              (phase+space+$1
33310                                               provide-phase+space_0
33311                                               phase+space-shift_0)))))
33312                                       (let ((phase_0
33313                                              (phase+space-phase
33314                                               phase+space_0)))
33315                                         (let ((space_0
33316                                                (phase+space-space
33317                                                 phase+space_0)))
33318                                           (begin
33319                                             (if requires+provides108_0
33320                                               (add-required-space!
33321                                                requires+provides108_0
33322                                                space_0)
33323                                               (void))
33324                                             (let ((need-except?_0
33325                                                    (if bulk-callback89_0
33326                                                      (|#%app|
33327                                                       bulk-callback89_0
33328                                                       provides_0
33329                                                       provide-phase+space_0)
33330                                                      #f)))
33331                                               (if bind?84_0
33332                                                 (begin
33333                                                   (if filter88_0
33334                                                     (begin
33335                                                       (let ((lst_0
33336                                                              (if only81_0
33337                                                                only81_0
33338                                                                (hash-keys
33339                                                                 provides_0))))
33340                                                         (begin
33341                                                           (letrec*
33342                                                            ((for-loop_1
33343                                                              (|#%name|
33344                                                               for-loop
33345                                                               (lambda (lst_1)
33346                                                                 (begin
33347                                                                   (if (pair?
33348                                                                        lst_1)
33349                                                                     (let ((sym_0
33350                                                                            (unsafe-car
33351                                                                             lst_1)))
33352                                                                       (let ((rest_0
33353                                                                              (unsafe-cdr
33354                                                                               lst_1)))
33355                                                                         (begin
33356                                                                           (let ((binding/p_0
33357                                                                                  (hash-ref
33358                                                                                   provides_0
33359                                                                                   sym_0
33360                                                                                   #f)))
33361                                                                             (if binding/p_0
33362                                                                               (let ((b_0
33363                                                                                      (provide-binding-to-require-binding.1
33364                                                                                       mpi106_0
33365                                                                                       phase+space-shift_0
33366                                                                                       provide-phase+space_0
33367                                                                                       self_0
33368                                                                                       binding/p_0
33369                                                                                       sym_0)))
33370                                                                                 (let ((sym_1
33371                                                                                        (|#%app|
33372                                                                                         filter88_0
33373                                                                                         b_0
33374                                                                                         (provided-as-transformer?
33375                                                                                          binding/p_0))))
33376                                                                                   (if (if sym_1
33377                                                                                         (not
33378                                                                                          can-bulk?85_0)
33379                                                                                         #f)
33380                                                                                     (let ((temp319_0
33381                                                                                            (add-space-scope
33382                                                                                             (datum->syntax$1
33383                                                                                              in-stx102_0
33384                                                                                              sym_1)
33385                                                                                             space_0)))
33386                                                                                       (add-binding!.1
33387                                                                                        #f
33388                                                                                        #f
33389                                                                                        temp319_0
33390                                                                                        b_0
33391                                                                                        phase_0))
33392                                                                                     (void))))
33393                                                                               (void)))
33394                                                                           (for-loop_1
33395                                                                            rest_0))))
33396                                                                     (values)))))))
33397                                                            (for-loop_1
33398                                                             lst_0))))
33399                                                       (void))
33400                                                     (void))
33401                                                   (if can-bulk?85_0
33402                                                     (let ((bulk-binding-registry_0
33403                                                            (namespace-bulk-binding-registry
33404                                                             ns105_0)))
33405                                                       (let ((temp322_0
33406                                                              (add-space-scope
33407                                                               in-stx102_0
33408                                                               space_0)))
33409                                                         (let ((temp323_0
33410                                                                (bulk-binding12.1
33411                                                                 (let ((or-part_0
33412                                                                        (if (not
33413                                                                             bulk-prefix86_0)
33414                                                                          (if (zero?
33415                                                                               (hash-count
33416                                                                                bulk-excepts87_0))
33417                                                                            provides_0
33418                                                                            #f)
33419                                                                          #f)))
33420                                                                   (if or-part_0
33421                                                                     or-part_0
33422                                                                     (if (not
33423                                                                          (registered-bulk-provide?
33424                                                                           bulk-binding-registry_0
33425                                                                           module-name107_0))
33426                                                                       (bulk-provides-add-prefix-remove-exceptions
33427                                                                        provides_0
33428                                                                        bulk-prefix86_0
33429                                                                        bulk-excepts87_0)
33430                                                                       #f)))
33431                                                                 bulk-prefix86_0
33432                                                                 bulk-excepts87_0
33433                                                                 self_0
33434                                                                 mpi106_0
33435                                                                 provide-phase+space_0
33436                                                                 phase-shift103_0
33437                                                                 bulk-binding-registry_0)))
33438                                                           (let ((temp326_0
33439                                                                  (if need-except?_0
33440                                                                    defines-mpi80_0
33441                                                                    #f)))
33442                                                             (let ((temp323_1
33443                                                                    temp323_0)
33444                                                                   (temp322_1
33445                                                                    temp322_0))
33446                                                               (add-bulk-binding!.1
33447                                                                in79_0
33448                                                                temp326_0
33449                                                                temp322_1
33450                                                                temp323_1
33451                                                                phase_0))))))
33452                                                     (void)))
33453                                                 (void)))))))
33454                                     (values))
33455                                   (values)))
33456                               (case-lambda
33457                                (() (for-loop_0 (hash-iterate-next ht_0 i_0)))
33458                                (args
33459                                 (raise-binding-result-arity-error 0 args)))))
33460                             (args (raise-binding-result-arity-error 2 args))))
33461                           (values)))))))
33462                  (for-loop_0 (hash-iterate-first ht_0)))))
33463             (void))))))))
33464(define require-spec-shift-for-syntax
33465  (lambda (req_0)
33466    (let ((rebuild-req_0
33467           (|#%name|
33468            rebuild-req
33469            (lambda (req_1 new-req_0)
33470              (begin (datum->syntax$1 req_1 new-req_0 req_1 req_1))))))
33471      (letrec*
33472       ((loop_0
33473         (|#%name|
33474          loop
33475          (lambda (shifted?_0)
33476            (begin
33477              (lambda (req_1)
33478                (let ((fm_0
33479                       (if (pair? (syntax-e$1 req_1))
33480                         (if (identifier? (car (syntax-e$1 req_1)))
33481                           (syntax-e$1 (car (syntax-e$1 req_1)))
33482                           #f)
33483                         #f)))
33484                  (if (eq? fm_0 'for-meta)
33485                    (call-with-values
33486                     (lambda ()
33487                       (call-with-values
33488                        (lambda ()
33489                          (let ((s_0
33490                                 (if (syntax?$1 req_1)
33491                                   (syntax-e$1 req_1)
33492                                   req_1)))
33493                            (if (pair? s_0)
33494                              (let ((for-meta330_0
33495                                     (let ((s_1 (car s_0))) s_1)))
33496                                (call-with-values
33497                                 (lambda ()
33498                                   (let ((s_1 (cdr s_0)))
33499                                     (let ((s_2
33500                                            (if (syntax?$1 s_1)
33501                                              (syntax-e$1 s_1)
33502                                              s_1)))
33503                                       (if (pair? s_2)
33504                                         (let ((phase-level333_0
33505                                                (let ((s_3 (car s_2))) s_3)))
33506                                           (let ((spec334_0
33507                                                  (let ((s_3 (cdr s_2)))
33508                                                    (let ((s_4
33509                                                           (if (syntax?$1 s_3)
33510                                                             (syntax-e$1 s_3)
33511                                                             s_3)))
33512                                                      (let ((flat-s_0
33513                                                             (to-syntax-list.1
33514                                                              s_4)))
33515                                                        (if (not flat-s_0)
33516                                                          (raise-syntax-error$1
33517                                                           #f
33518                                                           "bad syntax"
33519                                                           req_1)
33520                                                          flat-s_0))))))
33521                                             (let ((phase-level333_1
33522                                                    phase-level333_0))
33523                                               (values
33524                                                phase-level333_1
33525                                                spec334_0))))
33526                                         (raise-syntax-error$1
33527                                          #f
33528                                          "bad syntax"
33529                                          req_1)))))
33530                                 (case-lambda
33531                                  ((phase-level331_0 spec332_0)
33532                                   (let ((for-meta330_1 for-meta330_0))
33533                                     (values
33534                                      for-meta330_1
33535                                      phase-level331_0
33536                                      spec332_0)))
33537                                  (args
33538                                   (raise-binding-result-arity-error
33539                                    2
33540                                    args)))))
33541                              (raise-syntax-error$1 #f "bad syntax" req_1))))
33542                        (case-lambda
33543                         ((for-meta327_0 phase-level328_0 spec329_0)
33544                          (values #t for-meta327_0 phase-level328_0 spec329_0))
33545                         (args (raise-binding-result-arity-error 3 args)))))
33546                     (case-lambda
33547                      ((ok?_0 for-meta327_0 phase-level328_0 spec329_0)
33548                       (let ((p_0 (syntax-e$1 phase-level328_0)))
33549                         (begin
33550                           (if (phase? p_0)
33551                             (void)
33552                             (raise-syntax-error$1 #f "bad phase" req_1))
33553                           (let ((new-req_0
33554                                  (let ((app_0 (phase+ p_0 1)))
33555                                    (list*
33556                                     for-meta327_0
33557                                     app_0
33558                                     (map_1346 (loop_0 #t) spec329_0)))))
33559                             (begin-unsafe
33560                              (begin
33561                                (datum->syntax$1
33562                                 req_1
33563                                 new-req_0
33564                                 req_1
33565                                 req_1)))))))
33566                      (args (raise-binding-result-arity-error 4 args))))
33567                    (if (eq? fm_0 'for-syntax)
33568                      (call-with-values
33569                       (lambda ()
33570                         (call-with-values
33571                          (lambda ()
33572                            (let ((s_0
33573                                   (if (syntax?$1 req_1)
33574                                     (syntax-e$1 req_1)
33575                                     req_1)))
33576                              (if (pair? s_0)
33577                                (let ((for-syntax337_0
33578                                       (let ((s_1 (car s_0))) s_1)))
33579                                  (let ((spec338_0
33580                                         (let ((s_1 (cdr s_0)))
33581                                           (let ((s_2
33582                                                  (if (syntax?$1 s_1)
33583                                                    (syntax-e$1 s_1)
33584                                                    s_1)))
33585                                             (let ((flat-s_0
33586                                                    (to-syntax-list.1 s_2)))
33587                                               (if (not flat-s_0)
33588                                                 (raise-syntax-error$1
33589                                                  #f
33590                                                  "bad syntax"
33591                                                  req_1)
33592                                                 flat-s_0))))))
33593                                    (let ((for-syntax337_1 for-syntax337_0))
33594                                      (values for-syntax337_1 spec338_0))))
33595                                (raise-syntax-error$1 #f "bad syntax" req_1))))
33596                          (case-lambda
33597                           ((for-syntax335_0 spec336_0)
33598                            (values #t for-syntax335_0 spec336_0))
33599                           (args (raise-binding-result-arity-error 2 args)))))
33600                       (case-lambda
33601                        ((ok?_0 for-syntax335_0 spec336_0)
33602                         (let ((new-req_0
33603                                (list*
33604                                 'for-meta
33605                                 2
33606                                 (map_1346 (loop_0 #t) spec336_0))))
33607                           (begin-unsafe
33608                            (begin
33609                              (datum->syntax$1 req_1 new-req_0 req_1 req_1)))))
33610                        (args (raise-binding-result-arity-error 3 args))))
33611                      (if (eq? fm_0 'for-template)
33612                        (call-with-values
33613                         (lambda ()
33614                           (call-with-values
33615                            (lambda ()
33616                              (let ((s_0
33617                                     (if (syntax?$1 req_1)
33618                                       (syntax-e$1 req_1)
33619                                       req_1)))
33620                                (if (pair? s_0)
33621                                  (let ((for-template341_0
33622                                         (let ((s_1 (car s_0))) s_1)))
33623                                    (let ((spec342_0
33624                                           (let ((s_1 (cdr s_0)))
33625                                             (let ((s_2
33626                                                    (if (syntax?$1 s_1)
33627                                                      (syntax-e$1 s_1)
33628                                                      s_1)))
33629                                               (let ((flat-s_0
33630                                                      (to-syntax-list.1 s_2)))
33631                                                 (if (not flat-s_0)
33632                                                   (raise-syntax-error$1
33633                                                    #f
33634                                                    "bad syntax"
33635                                                    req_1)
33636                                                   flat-s_0))))))
33637                                      (let ((for-template341_1
33638                                             for-template341_0))
33639                                        (values for-template341_1 spec342_0))))
33640                                  (raise-syntax-error$1
33641                                   #f
33642                                   "bad syntax"
33643                                   req_1))))
33644                            (case-lambda
33645                             ((for-template339_0 spec340_0)
33646                              (values #t for-template339_0 spec340_0))
33647                             (args
33648                              (raise-binding-result-arity-error 2 args)))))
33649                         (case-lambda
33650                          ((ok?_0 for-template339_0 spec340_0)
33651                           (let ((new-req_0
33652                                  (list*
33653                                   'for-meta
33654                                   0
33655                                   (map_1346 (loop_0 #t) spec340_0))))
33656                             (begin-unsafe
33657                              (begin
33658                                (datum->syntax$1
33659                                 req_1
33660                                 new-req_0
33661                                 req_1
33662                                 req_1)))))
33663                          (args (raise-binding-result-arity-error 3 args))))
33664                        (if (eq? fm_0 'for-label)
33665                          (call-with-values
33666                           (lambda ()
33667                             (call-with-values
33668                              (lambda ()
33669                                (let ((s_0
33670                                       (if (syntax?$1 req_1)
33671                                         (syntax-e$1 req_1)
33672                                         req_1)))
33673                                  (if (pair? s_0)
33674                                    (let ((for-label345_0
33675                                           (let ((s_1 (car s_0))) s_1)))
33676                                      (let ((spec346_0
33677                                             (let ((s_1 (cdr s_0)))
33678                                               (let ((s_2
33679                                                      (if (syntax?$1 s_1)
33680                                                        (syntax-e$1 s_1)
33681                                                        s_1)))
33682                                                 (let ((flat-s_0
33683                                                        (to-syntax-list.1
33684                                                         s_2)))
33685                                                   (if (not flat-s_0)
33686                                                     (raise-syntax-error$1
33687                                                      #f
33688                                                      "bad syntax"
33689                                                      req_1)
33690                                                     flat-s_0))))))
33691                                        (let ((for-label345_1 for-label345_0))
33692                                          (values for-label345_1 spec346_0))))
33693                                    (raise-syntax-error$1
33694                                     #f
33695                                     "bad syntax"
33696                                     req_1))))
33697                              (case-lambda
33698                               ((for-label343_0 spec344_0)
33699                                (values #t for-label343_0 spec344_0))
33700                               (args
33701                                (raise-binding-result-arity-error 2 args)))))
33702                           (case-lambda
33703                            ((ok?_0 for-label343_0 spec344_0)
33704                             (let ((new-req_0
33705                                    (list*
33706                                     for-label343_0
33707                                     (map_1346 (loop_0 #t) spec344_0))))
33708                               (begin-unsafe
33709                                (begin
33710                                  (datum->syntax$1
33711                                   req_1
33712                                   new-req_0
33713                                   req_1
33714                                   req_1)))))
33715                            (args (raise-binding-result-arity-error 3 args))))
33716                          (if (eq? fm_0 'just-meta)
33717                            (call-with-values
33718                             (lambda ()
33719                               (call-with-values
33720                                (lambda ()
33721                                  (let ((s_0
33722                                         (if (syntax?$1 req_1)
33723                                           (syntax-e$1 req_1)
33724                                           req_1)))
33725                                    (if (pair? s_0)
33726                                      (let ((just-meta350_0
33727                                             (let ((s_1 (car s_0))) s_1)))
33728                                        (call-with-values
33729                                         (lambda ()
33730                                           (let ((s_1 (cdr s_0)))
33731                                             (let ((s_2
33732                                                    (if (syntax?$1 s_1)
33733                                                      (syntax-e$1 s_1)
33734                                                      s_1)))
33735                                               (if (pair? s_2)
33736                                                 (let ((phase-level353_0
33737                                                        (let ((s_3 (car s_2)))
33738                                                          s_3)))
33739                                                   (let ((spec354_0
33740                                                          (let ((s_3
33741                                                                 (cdr s_2)))
33742                                                            (let ((s_4
33743                                                                   (if (syntax?$1
33744                                                                        s_3)
33745                                                                     (syntax-e$1
33746                                                                      s_3)
33747                                                                     s_3)))
33748                                                              (let ((flat-s_0
33749                                                                     (to-syntax-list.1
33750                                                                      s_4)))
33751                                                                (if (not
33752                                                                     flat-s_0)
33753                                                                  (raise-syntax-error$1
33754                                                                   #f
33755                                                                   "bad syntax"
33756                                                                   req_1)
33757                                                                  flat-s_0))))))
33758                                                     (let ((phase-level353_1
33759                                                            phase-level353_0))
33760                                                       (values
33761                                                        phase-level353_1
33762                                                        spec354_0))))
33763                                                 (raise-syntax-error$1
33764                                                  #f
33765                                                  "bad syntax"
33766                                                  req_1)))))
33767                                         (case-lambda
33768                                          ((phase-level351_0 spec352_0)
33769                                           (let ((just-meta350_1
33770                                                  just-meta350_0))
33771                                             (values
33772                                              just-meta350_1
33773                                              phase-level351_0
33774                                              spec352_0)))
33775                                          (args
33776                                           (raise-binding-result-arity-error
33777                                            2
33778                                            args)))))
33779                                      (raise-syntax-error$1
33780                                       #f
33781                                       "bad syntax"
33782                                       req_1))))
33783                                (case-lambda
33784                                 ((just-meta347_0 phase-level348_0 spec349_0)
33785                                  (values
33786                                   #t
33787                                   just-meta347_0
33788                                   phase-level348_0
33789                                   spec349_0))
33790                                 (args
33791                                  (raise-binding-result-arity-error 3 args)))))
33792                             (case-lambda
33793                              ((ok?_0
33794                                just-meta347_0
33795                                phase-level348_0
33796                                spec349_0)
33797                               (let ((new-req_0
33798                                      (list*
33799                                       just-meta347_0
33800                                       phase-level348_0
33801                                       (map_1346 (loop_0 #f) spec349_0))))
33802                                 (begin-unsafe
33803                                  (begin
33804                                    (datum->syntax$1
33805                                     req_1
33806                                     new-req_0
33807                                     req_1
33808                                     req_1)))))
33809                              (args
33810                               (raise-binding-result-arity-error 4 args))))
33811                            (if shifted?_0
33812                              req_1
33813                              (datum->syntax$1
33814                               #f
33815                               (list 'for-syntax req_1)))))))))))))))
33816       (|#%app| (loop_0 #f) req_0)))))
33817(define copy-namespace-value
33818  (lambda (m-ns_0
33819           adjusted-sym_0
33820           binding_0
33821           phase-level_0
33822           phase-shift_0
33823           as-constant?_0)
33824    (let ((i-ns_0
33825           (let ((temp356_0
33826                  (1/module-path-index-resolve
33827                   (module-binding-module binding_0))))
33828             (let ((temp357_0
33829                    (phase+
33830                     (phase- (module-binding-phase binding_0) phase-level_0)
33831                     (namespace-phase m-ns_0))))
33832               (let ((temp356_1 temp356_0))
33833                 (namespace->module-namespace.1
33834                  #f
33835                  #t
33836                  void
33837                  m-ns_0
33838                  temp356_1
33839                  temp357_0))))))
33840      (let ((val_0
33841             (let ((app_0 (module-binding-phase binding_0)))
33842               (namespace-get-variable
33843                i-ns_0
33844                app_0
33845                (module-binding-sym binding_0)
33846                (lambda ()
33847                  (error
33848                   'namespace-require/copy
33849                   (let ((app_1
33850                          (string-append
33851                           "namespace mismatch;\n"
33852                           " variable not found\n"
33853                           "  module: ~a\n"
33854                           "  variable name: ~s\n"
33855                           "  phase level: ~s")))
33856                     (let ((app_2 (module-binding-module binding_0)))
33857                       (let ((app_3 (module-binding-sym binding_0)))
33858                         (format
33859                          app_1
33860                          app_2
33861                          app_3
33862                          (module-binding-phase binding_0)))))))))))
33863        (namespace-set-variable!
33864         m-ns_0
33865         (phase+ phase-shift_0 phase-level_0)
33866         adjusted-sym_0
33867         val_0
33868         as-constant?_0)))))
33869(define top-level-instance
33870  (make-instance
33871   'top-level
33872   #f
33873   'constant
33874   top-level-bind!-id
33875   (lambda (id_0
33876            mpi_0
33877            orig-phase_0
33878            phase-shift_0
33879            ns_0
33880            sym_0
33881            trans?_0
33882            trans-val_0)
33883     (let ((phase_0 (phase+ orig-phase_0 phase-shift_0)))
33884       (let ((b_0
33885              (let ((temp7_0
33886                     (let ((v_0 (namespace-get-root-expand-ctx ns_0)))
33887                       (begin-unsafe
33888                        (root-expand-context/outer-frame-id v_0)))))
33889                (make-module-binding.1
33890                 #f
33891                 null
33892                 temp7_0
33893                 #f
33894                 unsafe-undefined
33895                 unsafe-undefined
33896                 0
33897                 unsafe-undefined
33898                 mpi_0
33899                 phase_0
33900                 sym_0))))
33901         (begin
33902           (add-binding!.1 #f #f id_0 b_0 phase_0)
33903           (if trans?_0
33904             (if trans-val_0
33905               (maybe-install-free=id! trans-val_0 id_0 phase_0)
33906               (void))
33907             (namespace-unset-transformer! ns_0 phase_0 sym_0))))))
33908   top-level-require!-id
33909   (lambda (stx_0 ns_0)
33910     (let ((reqs_0 (cdr (syntax->list$1 stx_0))))
33911       (let ((temp13_0 (namespace-self-mpi/no-top-level ns_0)))
33912         (let ((temp14_0 (namespace-phase ns_0)))
33913           (let ((temp15_0 (make-requires+provides.1 #f #f)))
33914             (let ((temp14_1 temp14_0) (temp13_1 temp13_0))
33915               (parse-and-perform-requires!.1
33916                #f
33917                #f
33918                hash2610
33919                #t
33920                unsafe-undefined
33921                #t
33922                temp13_1
33923                #f
33924                #f
33925                'require
33926                reqs_0
33927                #f
33928                ns_0
33929                temp14_1
33930                temp15_0)))))))))
33931(define finish_2527
33932  (make-struct-type-install-properties
33933   '(compiled-in-memory)
33934   13
33935   0
33936   #f
33937   (list
33938    (cons
33939     prop:custom-write
33940     (lambda (cim_0 port_0 mode_0)
33941       (write (compiled-in-memory-linklet-directory cim_0) port_0))))
33942   (current-inspector)
33943   #f
33944   '(0 1 2 3 4 5 6 7 8 9 10 11 12)
33945   #f
33946   'compiled-in-memory))
33947(define struct:compiled-in-memory
33948  (make-record-type-descriptor*
33949   'compiled-in-memory
33950   #f
33951   (|#%nongenerative-uid| compiled-in-memory)
33952   #f
33953   #f
33954   13
33955   0))
33956(define effect_2572 (finish_2527 struct:compiled-in-memory))
33957(define compiled-in-memory1.1
33958  (|#%name|
33959   compiled-in-memory
33960   (record-constructor
33961    (make-record-constructor-descriptor struct:compiled-in-memory #f #f))))
33962(define compiled-in-memory?_2116
33963  (|#%name| compiled-in-memory? (record-predicate struct:compiled-in-memory)))
33964(define compiled-in-memory?
33965  (|#%name|
33966   compiled-in-memory?
33967   (lambda (v)
33968     (if (compiled-in-memory?_2116 v)
33969       #t
33970       ($value
33971        (if (impersonator? v)
33972          (compiled-in-memory?_2116 (impersonator-val v))
33973          #f))))))
33974(define compiled-in-memory-linklet-directory_1980
33975  (|#%name|
33976   compiled-in-memory-linklet-directory
33977   (record-accessor struct:compiled-in-memory 0)))
33978(define compiled-in-memory-linklet-directory
33979  (|#%name|
33980   compiled-in-memory-linklet-directory
33981   (lambda (s)
33982     (if (compiled-in-memory?_2116 s)
33983       (compiled-in-memory-linklet-directory_1980 s)
33984       ($value
33985        (impersonate-ref
33986         compiled-in-memory-linklet-directory_1980
33987         struct:compiled-in-memory
33988         0
33989         s
33990         'compiled-in-memory
33991         'linklet-directory))))))
33992(define compiled-in-memory-original-self_2522
33993  (|#%name|
33994   compiled-in-memory-original-self
33995   (record-accessor struct:compiled-in-memory 1)))
33996(define compiled-in-memory-original-self
33997  (|#%name|
33998   compiled-in-memory-original-self
33999   (lambda (s)
34000     (if (compiled-in-memory?_2116 s)
34001       (compiled-in-memory-original-self_2522 s)
34002       ($value
34003        (impersonate-ref
34004         compiled-in-memory-original-self_2522
34005         struct:compiled-in-memory
34006         1
34007         s
34008         'compiled-in-memory
34009         'original-self))))))
34010(define compiled-in-memory-requires_2380
34011  (|#%name|
34012   compiled-in-memory-requires
34013   (record-accessor struct:compiled-in-memory 2)))
34014(define compiled-in-memory-requires
34015  (|#%name|
34016   compiled-in-memory-requires
34017   (lambda (s)
34018     (if (compiled-in-memory?_2116 s)
34019       (compiled-in-memory-requires_2380 s)
34020       ($value
34021        (impersonate-ref
34022         compiled-in-memory-requires_2380
34023         struct:compiled-in-memory
34024         2
34025         s
34026         'compiled-in-memory
34027         'requires))))))
34028(define compiled-in-memory-provides_2636
34029  (|#%name|
34030   compiled-in-memory-provides
34031   (record-accessor struct:compiled-in-memory 3)))
34032(define compiled-in-memory-provides
34033  (|#%name|
34034   compiled-in-memory-provides
34035   (lambda (s)
34036     (if (compiled-in-memory?_2116 s)
34037       (compiled-in-memory-provides_2636 s)
34038       ($value
34039        (impersonate-ref
34040         compiled-in-memory-provides_2636
34041         struct:compiled-in-memory
34042         3
34043         s
34044         'compiled-in-memory
34045         'provides))))))
34046(define compiled-in-memory-phase-to-link-module-uses_2832
34047  (|#%name|
34048   compiled-in-memory-phase-to-link-module-uses
34049   (record-accessor struct:compiled-in-memory 4)))
34050(define compiled-in-memory-phase-to-link-module-uses
34051  (|#%name|
34052   compiled-in-memory-phase-to-link-module-uses
34053   (lambda (s)
34054     (if (compiled-in-memory?_2116 s)
34055       (compiled-in-memory-phase-to-link-module-uses_2832 s)
34056       ($value
34057        (impersonate-ref
34058         compiled-in-memory-phase-to-link-module-uses_2832
34059         struct:compiled-in-memory
34060         4
34061         s
34062         'compiled-in-memory
34063         'phase-to-link-module-uses))))))
34064(define compiled-in-memory-compile-time-inspector_2366
34065  (|#%name|
34066   compiled-in-memory-compile-time-inspector
34067   (record-accessor struct:compiled-in-memory 5)))
34068(define compiled-in-memory-compile-time-inspector
34069  (|#%name|
34070   compiled-in-memory-compile-time-inspector
34071   (lambda (s)
34072     (if (compiled-in-memory?_2116 s)
34073       (compiled-in-memory-compile-time-inspector_2366 s)
34074       ($value
34075        (impersonate-ref
34076         compiled-in-memory-compile-time-inspector_2366
34077         struct:compiled-in-memory
34078         5
34079         s
34080         'compiled-in-memory
34081         'compile-time-inspector))))))
34082(define compiled-in-memory-phase-to-link-extra-inspectorsss_2805
34083  (|#%name|
34084   compiled-in-memory-phase-to-link-extra-inspectorsss
34085   (record-accessor struct:compiled-in-memory 6)))
34086(define compiled-in-memory-phase-to-link-extra-inspectorsss
34087  (|#%name|
34088   compiled-in-memory-phase-to-link-extra-inspectorsss
34089   (lambda (s)
34090     (if (compiled-in-memory?_2116 s)
34091       (compiled-in-memory-phase-to-link-extra-inspectorsss_2805 s)
34092       ($value
34093        (impersonate-ref
34094         compiled-in-memory-phase-to-link-extra-inspectorsss_2805
34095         struct:compiled-in-memory
34096         6
34097         s
34098         'compiled-in-memory
34099         'phase-to-link-extra-inspectorsss))))))
34100(define compiled-in-memory-mpis_2702
34101  (|#%name|
34102   compiled-in-memory-mpis
34103   (record-accessor struct:compiled-in-memory 7)))
34104(define compiled-in-memory-mpis
34105  (|#%name|
34106   compiled-in-memory-mpis
34107   (lambda (s)
34108     (if (compiled-in-memory?_2116 s)
34109       (compiled-in-memory-mpis_2702 s)
34110       ($value
34111        (impersonate-ref
34112         compiled-in-memory-mpis_2702
34113         struct:compiled-in-memory
34114         7
34115         s
34116         'compiled-in-memory
34117         'mpis))))))
34118(define compiled-in-memory-syntax-literals_2316
34119  (|#%name|
34120   compiled-in-memory-syntax-literals
34121   (record-accessor struct:compiled-in-memory 8)))
34122(define compiled-in-memory-syntax-literals
34123  (|#%name|
34124   compiled-in-memory-syntax-literals
34125   (lambda (s)
34126     (if (compiled-in-memory?_2116 s)
34127       (compiled-in-memory-syntax-literals_2316 s)
34128       ($value
34129        (impersonate-ref
34130         compiled-in-memory-syntax-literals_2316
34131         struct:compiled-in-memory
34132         8
34133         s
34134         'compiled-in-memory
34135         'syntax-literals))))))
34136(define compiled-in-memory-pre-compiled-in-memorys_1964
34137  (|#%name|
34138   compiled-in-memory-pre-compiled-in-memorys
34139   (record-accessor struct:compiled-in-memory 9)))
34140(define compiled-in-memory-pre-compiled-in-memorys
34141  (|#%name|
34142   compiled-in-memory-pre-compiled-in-memorys
34143   (lambda (s)
34144     (if (compiled-in-memory?_2116 s)
34145       (compiled-in-memory-pre-compiled-in-memorys_1964 s)
34146       ($value
34147        (impersonate-ref
34148         compiled-in-memory-pre-compiled-in-memorys_1964
34149         struct:compiled-in-memory
34150         9
34151         s
34152         'compiled-in-memory
34153         'pre-compiled-in-memorys))))))
34154(define compiled-in-memory-post-compiled-in-memorys_2482
34155  (|#%name|
34156   compiled-in-memory-post-compiled-in-memorys
34157   (record-accessor struct:compiled-in-memory 10)))
34158(define compiled-in-memory-post-compiled-in-memorys
34159  (|#%name|
34160   compiled-in-memory-post-compiled-in-memorys
34161   (lambda (s)
34162     (if (compiled-in-memory?_2116 s)
34163       (compiled-in-memory-post-compiled-in-memorys_2482 s)
34164       ($value
34165        (impersonate-ref
34166         compiled-in-memory-post-compiled-in-memorys_2482
34167         struct:compiled-in-memory
34168         10
34169         s
34170         'compiled-in-memory
34171         'post-compiled-in-memorys))))))
34172(define compiled-in-memory-namespace-scopes_2598
34173  (|#%name|
34174   compiled-in-memory-namespace-scopes
34175   (record-accessor struct:compiled-in-memory 11)))
34176(define compiled-in-memory-namespace-scopes
34177  (|#%name|
34178   compiled-in-memory-namespace-scopes
34179   (lambda (s)
34180     (if (compiled-in-memory?_2116 s)
34181       (compiled-in-memory-namespace-scopes_2598 s)
34182       ($value
34183        (impersonate-ref
34184         compiled-in-memory-namespace-scopes_2598
34185         struct:compiled-in-memory
34186         11
34187         s
34188         'compiled-in-memory
34189         'namespace-scopes))))))
34190(define compiled-in-memory-purely-functional?_2374
34191  (|#%name|
34192   compiled-in-memory-purely-functional?
34193   (record-accessor struct:compiled-in-memory 12)))
34194(define compiled-in-memory-purely-functional?
34195  (|#%name|
34196   compiled-in-memory-purely-functional?
34197   (lambda (s)
34198     (if (compiled-in-memory?_2116 s)
34199       (compiled-in-memory-purely-functional?_2374 s)
34200       ($value
34201        (impersonate-ref
34202         compiled-in-memory-purely-functional?_2374
34203         struct:compiled-in-memory
34204         12
34205         s
34206         'compiled-in-memory
34207         'purely-functional?))))))
34208(define version-bytes$1 (string->bytes/utf-8 (version)))
34209(define vm-bytes$1 (linklet-virtual-machine-bytes))
34210(define datum->syntax$3 datum->syntax)
34211(define syntax-property$2 syntax-property)
34212(define syntax-span$2 syntax-span)
34213(define syntax-position$2 syntax-position)
34214(define syntax-column$2 syntax-column)
34215(define syntax-line$2 syntax-line)
34216(define syntax-source$2 syntax-source)
34217(define syntax-e$2 syntax-e)
34218(define 1/syntax? syntax?)
34219(define correlated? (lambda (e_0) (syntax? e_0)))
34220(define datum->correlated
34221  (let ((datum->correlated_0
34222         (|#%name|
34223          datum->correlated
34224          (lambda (d2_0 srcloc1_0)
34225            (begin (datum->syntax #f d2_0 srcloc1_0))))))
34226    (case-lambda
34227     ((d_0) (datum->correlated_0 d_0 #f))
34228     ((d_0 srcloc1_0) (datum->correlated_0 d_0 srcloc1_0)))))
34229(define correlated-e (lambda (e_0) (if (syntax? e_0) (syntax-e e_0) e_0)))
34230(define correlated-cadr
34231  (lambda (e_0) (car (correlated-e (cdr (correlated-e e_0))))))
34232(define correlated-length
34233  (lambda (e_0)
34234    (let ((l_0 (correlated-e e_0))) (if (list? l_0) (length l_0) #f))))
34235(define correlated->list
34236  (lambda (e_0)
34237    (letrec*
34238     ((loop_0
34239       (|#%name|
34240        loop
34241        (lambda (e_1)
34242          (begin
34243            (if (list? e_1)
34244              e_1
34245              (if (pair? e_1)
34246                (let ((app_0 (car e_1))) (cons app_0 (loop_0 (cdr e_1))))
34247                (if (null? e_1)
34248                  null
34249                  (if (syntax? e_1)
34250                    (loop_0 (syntax-e e_1))
34251                    (error 'correlated->list "not a list"))))))))))
34252     (loop_0 e_0))))
34253(define correlated-property
34254  (case-lambda
34255   ((e_0 k_0) (syntax-property e_0 k_0))
34256   ((e_0 k_0 v_0) (syntax-property e_0 k_0 v_0))))
34257(define to-syntax-list.1$1
34258  (|#%name|
34259   to-syntax-list
34260   (lambda (s_0)
34261     (begin
34262       (if (list? s_0)
34263         s_0
34264         (if (pair? s_0)
34265           (let ((r_0 (to-syntax-list.1$1 (cdr s_0))))
34266             (if r_0 (cons (car s_0) r_0) #f))
34267           (if (syntax? s_0) (to-syntax-list.1$1 (syntax-e s_0)) #f)))))))
34268(define correlated-source (lambda (s_0) (syntax-source s_0)))
34269(define correlated-line (lambda (s_0) (syntax-line s_0)))
34270(define correlated-column (lambda (s_0) (syntax-column s_0)))
34271(define correlated-position (lambda (s_0) (syntax-position s_0)))
34272(define correlated-span (lambda (s_0) (syntax-span s_0)))
34273(define finish_2248
34274  (make-struct-type-install-properties
34275   '(correlated-linklet)
34276   3
34277   0
34278   #f
34279   (list (cons prop:authentic #t))
34280   (current-inspector)
34281   #f
34282   '(0 1)
34283   #f
34284   'correlated-linklet))
34285(define struct:correlated-linklet
34286  (make-record-type-descriptor*
34287   'correlated-linklet
34288   #f
34289   (|#%nongenerative-uid| correlated-linklet)
34290   #f
34291   #f
34292   3
34293   4))
34294(define effect_2738 (finish_2248 struct:correlated-linklet))
34295(define correlated-linklet1.1
34296  (|#%name|
34297   correlated-linklet
34298   (record-constructor
34299    (make-record-constructor-descriptor struct:correlated-linklet #f #f))))
34300(define correlated-linklet?
34301  (|#%name| correlated-linklet? (record-predicate struct:correlated-linklet)))
34302(define correlated-linklet-expr
34303  (|#%name|
34304   correlated-linklet-expr
34305   (record-accessor struct:correlated-linklet 0)))
34306(define correlated-linklet-name
34307  (|#%name|
34308   correlated-linklet-name
34309   (record-accessor struct:correlated-linklet 1)))
34310(define correlated-linklet-compiled
34311  (|#%name|
34312   correlated-linklet-compiled
34313   (record-accessor struct:correlated-linklet 2)))
34314(define set-correlated-linklet-compiled!
34315  (|#%name|
34316   set-correlated-linklet-compiled!
34317   (record-mutator struct:correlated-linklet 2)))
34318(define make-correlated-linklet
34319  (lambda (expr_0 name_0) (correlated-linklet1.1 expr_0 name_0 #f)))
34320(define force-compile-linklet
34321  (lambda (l_0)
34322    (if (correlated-linklet? l_0)
34323      (let ((or-part_0 (correlated-linklet-compiled l_0)))
34324        (if or-part_0
34325          or-part_0
34326          (let ((c_0
34327                 (compile-linklet
34328                  (correlated-linklet-expr l_0)
34329                  (correlated-linklet-name l_0))))
34330            (begin (set-correlated-linklet-compiled! l_0 c_0) c_0))))
34331      l_0)))
34332(define eval-correlated-linklet
34333  (lambda (l_0)
34334    (if (correlated-linklet? l_0)
34335      (eval-linklet
34336       (compile-linklet
34337        (correlated-linklet-expr l_0)
34338        (correlated-linklet-name l_0)
34339        #f
34340        #f
34341        '()))
34342      (error
34343       'eval-correlated-linklet
34344       "cannot evaluate unknown linklet: ~s"
34345       l_0))))
34346(define correlated-linklet-vm-bytes #vu8(108 105 110 107 108 101 116))
34347(define finish_2389
34348  (make-struct-type-install-properties
34349   '(faslable-correlated)
34350   7
34351   0
34352   #f
34353   null
34354   'prefab
34355   #f
34356   '(0 1 2 3 4 5 6)
34357   #f
34358   'faslable-correlated))
34359(define struct:faslable-correlated
34360  (make-record-type-descriptor*
34361   'faslable-correlated
34362   #f
34363   (structure-type-lookup-prefab-uid
34364    'faslable-correlated
34365    #f
34366    7
34367    0
34368    #f
34369    '(0 1 2 3 4 5 6))
34370   #f
34371   #f
34372   7
34373   127))
34374(define effect_2370 (finish_2389 struct:faslable-correlated))
34375(define faslable-correlated2.1
34376  (|#%name|
34377   faslable-correlated
34378   (record-constructor
34379    (make-record-constructor-descriptor struct:faslable-correlated #f #f))))
34380(define faslable-correlated?_2779
34381  (|#%name|
34382   faslable-correlated?
34383   (record-predicate struct:faslable-correlated)))
34384(define faslable-correlated?
34385  (|#%name|
34386   faslable-correlated?
34387   (lambda (v)
34388     (if (faslable-correlated?_2779 v)
34389       #t
34390       ($value
34391        (if (impersonator? v)
34392          (faslable-correlated?_2779 (impersonator-val v))
34393          #f))))))
34394(define faslable-correlated-e_2371
34395  (|#%name|
34396   faslable-correlated-e
34397   (record-accessor struct:faslable-correlated 0)))
34398(define faslable-correlated-e
34399  (|#%name|
34400   faslable-correlated-e
34401   (lambda (s)
34402     (if (faslable-correlated?_2779 s)
34403       (faslable-correlated-e_2371 s)
34404       ($value
34405        (impersonate-ref
34406         faslable-correlated-e_2371
34407         struct:faslable-correlated
34408         0
34409         s
34410         'faslable-correlated
34411         'e))))))
34412(define faslable-correlated-source_1985
34413  (|#%name|
34414   faslable-correlated-source
34415   (record-accessor struct:faslable-correlated 1)))
34416(define faslable-correlated-source
34417  (|#%name|
34418   faslable-correlated-source
34419   (lambda (s)
34420     (if (faslable-correlated?_2779 s)
34421       (faslable-correlated-source_1985 s)
34422       ($value
34423        (impersonate-ref
34424         faslable-correlated-source_1985
34425         struct:faslable-correlated
34426         1
34427         s
34428         'faslable-correlated
34429         'source))))))
34430(define faslable-correlated-position_2283
34431  (|#%name|
34432   faslable-correlated-position
34433   (record-accessor struct:faslable-correlated 2)))
34434(define faslable-correlated-position
34435  (|#%name|
34436   faslable-correlated-position
34437   (lambda (s)
34438     (if (faslable-correlated?_2779 s)
34439       (faslable-correlated-position_2283 s)
34440       ($value
34441        (impersonate-ref
34442         faslable-correlated-position_2283
34443         struct:faslable-correlated
34444         2
34445         s
34446         'faslable-correlated
34447         'position))))))
34448(define faslable-correlated-line_2531
34449  (|#%name|
34450   faslable-correlated-line
34451   (record-accessor struct:faslable-correlated 3)))
34452(define faslable-correlated-line
34453  (|#%name|
34454   faslable-correlated-line
34455   (lambda (s)
34456     (if (faslable-correlated?_2779 s)
34457       (faslable-correlated-line_2531 s)
34458       ($value
34459        (impersonate-ref
34460         faslable-correlated-line_2531
34461         struct:faslable-correlated
34462         3
34463         s
34464         'faslable-correlated
34465         'line))))))
34466(define faslable-correlated-column_2707
34467  (|#%name|
34468   faslable-correlated-column
34469   (record-accessor struct:faslable-correlated 4)))
34470(define faslable-correlated-column
34471  (|#%name|
34472   faslable-correlated-column
34473   (lambda (s)
34474     (if (faslable-correlated?_2779 s)
34475       (faslable-correlated-column_2707 s)
34476       ($value
34477        (impersonate-ref
34478         faslable-correlated-column_2707
34479         struct:faslable-correlated
34480         4
34481         s
34482         'faslable-correlated
34483         'column))))))
34484(define faslable-correlated-span_2176
34485  (|#%name|
34486   faslable-correlated-span
34487   (record-accessor struct:faslable-correlated 5)))
34488(define faslable-correlated-span
34489  (|#%name|
34490   faslable-correlated-span
34491   (lambda (s)
34492     (if (faslable-correlated?_2779 s)
34493       (faslable-correlated-span_2176 s)
34494       ($value
34495        (impersonate-ref
34496         faslable-correlated-span_2176
34497         struct:faslable-correlated
34498         5
34499         s
34500         'faslable-correlated
34501         'span))))))
34502(define faslable-correlated-props_2838
34503  (|#%name|
34504   faslable-correlated-props
34505   (record-accessor struct:faslable-correlated 6)))
34506(define faslable-correlated-props
34507  (|#%name|
34508   faslable-correlated-props
34509   (lambda (s)
34510     (if (faslable-correlated?_2779 s)
34511       (faslable-correlated-props_2838 s)
34512       ($value
34513        (impersonate-ref
34514         faslable-correlated-props_2838
34515         struct:faslable-correlated
34516         6
34517         s
34518         'faslable-correlated
34519         'props))))))
34520(define finish_2803
34521  (make-struct-type-install-properties
34522   '(faslable-correlated-linklet)
34523   2
34524   0
34525   #f
34526   null
34527   'prefab
34528   #f
34529   '(0 1)
34530   #f
34531   'faslable-correlated-linklet))
34532(define struct:faslable-correlated-linklet
34533  (make-record-type-descriptor*
34534   'faslable-correlated-linklet
34535   #f
34536   (structure-type-lookup-prefab-uid
34537    'faslable-correlated-linklet
34538    #f
34539    2
34540    0
34541    #f
34542    '(0 1))
34543   #f
34544   #f
34545   2
34546   3))
34547(define effect_2374 (finish_2803 struct:faslable-correlated-linklet))
34548(define faslable-correlated-linklet3.1
34549  (|#%name|
34550   faslable-correlated-linklet
34551   (record-constructor
34552    (make-record-constructor-descriptor
34553     struct:faslable-correlated-linklet
34554     #f
34555     #f))))
34556(define faslable-correlated-linklet?_2542
34557  (|#%name|
34558   faslable-correlated-linklet?
34559   (record-predicate struct:faslable-correlated-linklet)))
34560(define faslable-correlated-linklet?
34561  (|#%name|
34562   faslable-correlated-linklet?
34563   (lambda (v)
34564     (if (faslable-correlated-linklet?_2542 v)
34565       #t
34566       ($value
34567        (if (impersonator? v)
34568          (faslable-correlated-linklet?_2542 (impersonator-val v))
34569          #f))))))
34570(define faslable-correlated-linklet-expr_2739
34571  (|#%name|
34572   faslable-correlated-linklet-expr
34573   (record-accessor struct:faslable-correlated-linklet 0)))
34574(define faslable-correlated-linklet-expr
34575  (|#%name|
34576   faslable-correlated-linklet-expr
34577   (lambda (s)
34578     (if (faslable-correlated-linklet?_2542 s)
34579       (faslable-correlated-linklet-expr_2739 s)
34580       ($value
34581        (impersonate-ref
34582         faslable-correlated-linklet-expr_2739
34583         struct:faslable-correlated-linklet
34584         0
34585         s
34586         'faslable-correlated-linklet
34587         'expr))))))
34588(define faslable-correlated-linklet-name_2691
34589  (|#%name|
34590   faslable-correlated-linklet-name
34591   (record-accessor struct:faslable-correlated-linklet 1)))
34592(define faslable-correlated-linklet-name
34593  (|#%name|
34594   faslable-correlated-linklet-name
34595   (lambda (s)
34596     (if (faslable-correlated-linklet?_2542 s)
34597       (faslable-correlated-linklet-name_2691 s)
34598       ($value
34599        (impersonate-ref
34600         faslable-correlated-linklet-name_2691
34601         struct:faslable-correlated-linklet
34602         1
34603         s
34604         'faslable-correlated-linklet
34605         'name))))))
34606(define write-correlated-linklet-bundle-hash
34607  (lambda (ht_0 o_0)
34608    (let ((temp7_0 (->faslable ht_0)))
34609      (s-exp->fasl.1 #f #f #f #f temp7_0 o_0))))
34610(define ->faslable
34611  (lambda (v_0)
34612    (if (pair? v_0)
34613      (let ((a_0 (->faslable (car v_0))))
34614        (let ((d_0 (->faslable (cdr v_0))))
34615          (if (if (eq? a_0 (car v_0)) (eq? d_0 (cdr v_0)) #f)
34616            v_0
34617            (cons a_0 d_0))))
34618      (if (begin-unsafe (syntax? v_0))
34619        (let ((app_0 (->faslable (correlated-e v_0))))
34620          (let ((app_1 (begin-unsafe (syntax-source v_0))))
34621            (let ((app_2 (begin-unsafe (syntax-position v_0))))
34622              (let ((app_3 (begin-unsafe (syntax-line v_0))))
34623                (let ((app_4 (begin-unsafe (syntax-column v_0))))
34624                  (let ((app_5 (begin-unsafe (syntax-span v_0))))
34625                    (faslable-correlated2.1
34626                     app_0
34627                     app_1
34628                     app_2
34629                     app_3
34630                     app_4
34631                     app_5
34632                     (let ((lst_0
34633                            '(inferred-name
34634                              undefined-error-name
34635                              method-arity-error
34636                              compiler-hint:cross-module-inline)))
34637                       (begin
34638                         (letrec*
34639                          ((for-loop_0
34640                            (|#%name|
34641                             for-loop
34642                             (lambda (ht_0 lst_1)
34643                               (begin
34644                                 (if (pair? lst_1)
34645                                   (let ((k_0 (unsafe-car lst_1)))
34646                                     (let ((rest_0 (unsafe-cdr lst_1)))
34647                                       (let ((ht_1
34648                                              (let ((ht_1
34649                                                     (let ((p_0
34650                                                            (begin-unsafe
34651                                                             (syntax-property
34652                                                              v_0
34653                                                              k_0))))
34654                                                       (if p_0
34655                                                         (hash-set
34656                                                          (if ht_0
34657                                                            ht_0
34658                                                            hash2610)
34659                                                          k_0
34660                                                          p_0)
34661                                                         ht_0))))
34662                                                (values ht_1))))
34663                                         (for-loop_0 ht_1 rest_0))))
34664                                   ht_0))))))
34665                          (for-loop_0 #f lst_0)))))))))))
34666        (if (hash? v_0)
34667          (if (hash-eq? v_0)
34668            (begin
34669              (letrec*
34670               ((for-loop_0
34671                 (|#%name|
34672                  for-loop
34673                  (lambda (table_0 i_0)
34674                    (begin
34675                      (if i_0
34676                        (call-with-values
34677                         (lambda () (hash-iterate-key+value v_0 i_0))
34678                         (case-lambda
34679                          ((key_0 value_0)
34680                           (let ((table_1
34681                                  (let ((table_1
34682                                         (call-with-values
34683                                          (lambda ()
34684                                            (let ((app_0 (->faslable key_0)))
34685                                              (values
34686                                               app_0
34687                                               (->faslable value_0))))
34688                                          (case-lambda
34689                                           ((key_1 val_0)
34690                                            (hash-set table_0 key_1 val_0))
34691                                           (args
34692                                            (raise-binding-result-arity-error
34693                                             2
34694                                             args))))))
34695                                    (values table_1))))
34696                             (for-loop_0 table_1 (hash-iterate-next v_0 i_0))))
34697                          (args (raise-binding-result-arity-error 2 args))))
34698                        table_0))))))
34699               (for-loop_0 hash2610 (hash-iterate-first v_0))))
34700            (if (hash-eqv? v_0)
34701              (begin
34702                (letrec*
34703                 ((for-loop_0
34704                   (|#%name|
34705                    for-loop
34706                    (lambda (table_0 i_0)
34707                      (begin
34708                        (if i_0
34709                          (call-with-values
34710                           (lambda () (hash-iterate-key+value v_0 i_0))
34711                           (case-lambda
34712                            ((key_0 value_0)
34713                             (let ((table_1
34714                                    (let ((table_1
34715                                           (call-with-values
34716                                            (lambda ()
34717                                              (let ((app_0 (->faslable key_0)))
34718                                                (values
34719                                                 app_0
34720                                                 (->faslable value_0))))
34721                                            (case-lambda
34722                                             ((key_1 val_0)
34723                                              (hash-set table_0 key_1 val_0))
34724                                             (args
34725                                              (raise-binding-result-arity-error
34726                                               2
34727                                               args))))))
34728                                      (values table_1))))
34729                               (for-loop_0
34730                                table_1
34731                                (hash-iterate-next v_0 i_0))))
34732                            (args (raise-binding-result-arity-error 2 args))))
34733                          table_0))))))
34734                 (for-loop_0 hash2589 (hash-iterate-first v_0))))
34735              (begin
34736                (letrec*
34737                 ((for-loop_0
34738                   (|#%name|
34739                    for-loop
34740                    (lambda (table_0 i_0)
34741                      (begin
34742                        (if i_0
34743                          (call-with-values
34744                           (lambda () (hash-iterate-key+value v_0 i_0))
34745                           (case-lambda
34746                            ((key_0 value_0)
34747                             (let ((table_1
34748                                    (let ((table_1
34749                                           (call-with-values
34750                                            (lambda ()
34751                                              (let ((app_0 (->faslable key_0)))
34752                                                (values
34753                                                 app_0
34754                                                 (->faslable value_0))))
34755                                            (case-lambda
34756                                             ((key_1 val_0)
34757                                              (hash-set table_0 key_1 val_0))
34758                                             (args
34759                                              (raise-binding-result-arity-error
34760                                               2
34761                                               args))))))
34762                                      (values table_1))))
34763                               (for-loop_0
34764                                table_1
34765                                (hash-iterate-next v_0 i_0))))
34766                            (args (raise-binding-result-arity-error 2 args))))
34767                          table_0))))))
34768                 (for-loop_0 hash2725 (hash-iterate-first v_0))))))
34769          (if (correlated-linklet? v_0)
34770            (let ((app_0 (->faslable (correlated-linklet-expr v_0))))
34771              (faslable-correlated-linklet3.1
34772               app_0
34773               (->faslable (correlated-linklet-name v_0))))
34774            v_0))))))
34775(define read-correlated-linklet-bundle-hash
34776  (lambda (in_0) (faslable-> (fasl->s-exp.1 #t unsafe-undefined #f in_0))))
34777(define faslable->
34778  (lambda (v_0)
34779    (if (pair? v_0)
34780      (let ((a_0 (faslable-> (car v_0))))
34781        (let ((d_0 (faslable-> (cdr v_0))))
34782          (if (if (eq? a_0 (car v_0)) (eq? d_0 (cdr v_0)) #f)
34783            v_0
34784            (cons a_0 d_0))))
34785      (if (faslable-correlated? v_0)
34786        (let ((props_0 (faslable-correlated-props v_0)))
34787          (let ((c_0
34788                 (let ((app_0 (faslable-> (faslable-correlated-e v_0))))
34789                   (datum->correlated
34790                    app_0
34791                    (let ((app_1 (faslable-correlated-source v_0)))
34792                      (let ((app_2 (faslable-correlated-line v_0)))
34793                        (let ((app_3 (faslable-correlated-column v_0)))
34794                          (let ((app_4 (faslable-correlated-position v_0)))
34795                            (vector
34796                             app_1
34797                             app_2
34798                             app_3
34799                             app_4
34800                             (faslable-correlated-span v_0))))))))))
34801            (if props_0
34802              (begin
34803                (letrec*
34804                 ((for-loop_0
34805                   (|#%name|
34806                    for-loop
34807                    (lambda (c_1 i_0)
34808                      (begin
34809                        (if i_0
34810                          (call-with-values
34811                           (lambda () (hash-iterate-key+value props_0 i_0))
34812                           (case-lambda
34813                            ((k_0 p_0)
34814                             (let ((c_2
34815                                    (let ((c_2
34816                                           (begin-unsafe
34817                                            (syntax-property c_1 k_0 p_0))))
34818                                      (values c_2))))
34819                               (for-loop_0
34820                                c_2
34821                                (hash-iterate-next props_0 i_0))))
34822                            (args (raise-binding-result-arity-error 2 args))))
34823                          c_1))))))
34824                 (for-loop_0 c_0 (hash-iterate-first props_0))))
34825              c_0)))
34826        (if (hash? v_0)
34827          (if (hash-eq? v_0)
34828            (begin
34829              (letrec*
34830               ((for-loop_0
34831                 (|#%name|
34832                  for-loop
34833                  (lambda (table_0 i_0)
34834                    (begin
34835                      (if i_0
34836                        (call-with-values
34837                         (lambda () (hash-iterate-key+value v_0 i_0))
34838                         (case-lambda
34839                          ((key_0 value_0)
34840                           (let ((table_1
34841                                  (let ((table_1
34842                                         (call-with-values
34843                                          (lambda ()
34844                                            (let ((app_0 (faslable-> key_0)))
34845                                              (values
34846                                               app_0
34847                                               (faslable-> value_0))))
34848                                          (case-lambda
34849                                           ((key_1 val_0)
34850                                            (hash-set table_0 key_1 val_0))
34851                                           (args
34852                                            (raise-binding-result-arity-error
34853                                             2
34854                                             args))))))
34855                                    (values table_1))))
34856                             (for-loop_0 table_1 (hash-iterate-next v_0 i_0))))
34857                          (args (raise-binding-result-arity-error 2 args))))
34858                        table_0))))))
34859               (for-loop_0 hash2610 (hash-iterate-first v_0))))
34860            (if (hash-eqv? v_0)
34861              (begin
34862                (letrec*
34863                 ((for-loop_0
34864                   (|#%name|
34865                    for-loop
34866                    (lambda (table_0 i_0)
34867                      (begin
34868                        (if i_0
34869                          (call-with-values
34870                           (lambda () (hash-iterate-key+value v_0 i_0))
34871                           (case-lambda
34872                            ((key_0 value_0)
34873                             (let ((table_1
34874                                    (let ((table_1
34875                                           (call-with-values
34876                                            (lambda ()
34877                                              (let ((app_0 (faslable-> key_0)))
34878                                                (values
34879                                                 app_0
34880                                                 (faslable-> value_0))))
34881                                            (case-lambda
34882                                             ((key_1 val_0)
34883                                              (hash-set table_0 key_1 val_0))
34884                                             (args
34885                                              (raise-binding-result-arity-error
34886                                               2
34887                                               args))))))
34888                                      (values table_1))))
34889                               (for-loop_0
34890                                table_1
34891                                (hash-iterate-next v_0 i_0))))
34892                            (args (raise-binding-result-arity-error 2 args))))
34893                          table_0))))))
34894                 (for-loop_0 hash2589 (hash-iterate-first v_0))))
34895              (begin
34896                (letrec*
34897                 ((for-loop_0
34898                   (|#%name|
34899                    for-loop
34900                    (lambda (table_0 i_0)
34901                      (begin
34902                        (if i_0
34903                          (call-with-values
34904                           (lambda () (hash-iterate-key+value v_0 i_0))
34905                           (case-lambda
34906                            ((key_0 value_0)
34907                             (let ((table_1
34908                                    (let ((table_1
34909                                           (call-with-values
34910                                            (lambda ()
34911                                              (let ((app_0 (faslable-> key_0)))
34912                                                (values
34913                                                 app_0
34914                                                 (faslable-> value_0))))
34915                                            (case-lambda
34916                                             ((key_1 val_0)
34917                                              (hash-set table_0 key_1 val_0))
34918                                             (args
34919                                              (raise-binding-result-arity-error
34920                                               2
34921                                               args))))))
34922                                      (values table_1))))
34923                               (for-loop_0
34924                                table_1
34925                                (hash-iterate-next v_0 i_0))))
34926                            (args (raise-binding-result-arity-error 2 args))))
34927                          table_0))))))
34928                 (for-loop_0 hash2725 (hash-iterate-first v_0))))))
34929          (if (faslable-correlated-linklet? v_0)
34930            (let ((expr_0 (faslable-> (faslable-correlated-linklet-expr v_0))))
34931              (let ((name_0
34932                     (faslable-> (faslable-correlated-linklet-name v_0))))
34933                (let ((expr_1 expr_0))
34934                  (begin-unsafe (correlated-linklet1.1 expr_1 name_0 #f)))))
34935            v_0))))))
34936(define write-linklet-bundle
34937  (lambda (b_0 as-correlated-linklet?_0 linklet-bundle->hash_0 port_0)
34938    (begin
34939      (write-bytes #vu8(35 126) port_0)
34940      (write-bytes (bytes (unsafe-bytes-length version-bytes$1)) port_0)
34941      (write-bytes version-bytes$1 port_0)
34942      (let ((vm-bytes_0
34943             (if as-correlated-linklet?_0
34944               correlated-linklet-vm-bytes
34945               vm-bytes$1)))
34946        (begin
34947          (write-bytes (bytes (unsafe-bytes-length vm-bytes_0)) port_0)
34948          (write-bytes vm-bytes_0 port_0)))
34949      (write-bytes #vu8(66) port_0)
34950      (write-bytes (make-bytes 20 0) port_0)
34951      (if as-correlated-linklet?_0
34952        (write-correlated-linklet-bundle-hash
34953         (|#%app| linklet-bundle->hash_0 b_0)
34954         port_0)
34955        (write-linklet-bundle-hash
34956         (|#%app| linklet-bundle->hash_0 b_0)
34957         port_0)))))
34958(define linklet-bundle->bytes
34959  (lambda (b_0 as-correlated-linklet?_0 linklet-bundle->hash_0)
34960    (let ((o_0 (open-output-bytes)))
34961      (begin
34962        (write-linklet-bundle
34963         b_0
34964         as-correlated-linklet?_0
34965         linklet-bundle->hash_0
34966         o_0)
34967        (get-output-bytes o_0)))))
34968(define write-linklet-directory
34969  (lambda (ld_0
34970           as-correlated-linklet?_0
34971           linklet-directory->hash_0
34972           linklet-bundle->hash_0
34973           port_0)
34974    (let ((vm-bytes_0
34975           (if as-correlated-linklet?_0
34976             correlated-linklet-vm-bytes
34977             vm-bytes$1)))
34978      (begin
34979        (write-bytes #vu8(35 126) port_0)
34980        (begin
34981          (write-byte (unsafe-bytes-length version-bytes$1) port_0)
34982          (begin
34983            (write-bytes version-bytes$1 port_0)
34984            (begin
34985              (write-byte (unsafe-bytes-length vm-bytes_0) port_0)
34986              (begin
34987                (write-bytes vm-bytes_0 port_0)
34988                (begin
34989                  (write-bytes #vu8(68) port_0)
34990                  (letrec*
34991                   ((flatten-linklet-directory_0
34992                     (|#%name|
34993                      flatten-linklet-directory
34994                      (lambda (ld_1 rev-name-prefix_0 accum_0)
34995                        (begin
34996                          (call-with-values
34997                           (lambda ()
34998                             (let ((ht_0
34999                                    (|#%app| linklet-directory->hash_0 ld_1)))
35000                               (begin
35001                                 (letrec*
35002                                  ((for-loop_0
35003                                    (|#%name|
35004                                     for-loop
35005                                     (lambda (accum_1 saw-bundle?_0 i_0)
35006                                       (begin
35007                                         (if i_0
35008                                           (call-with-values
35009                                            (lambda ()
35010                                              (hash-iterate-key+value
35011                                               ht_0
35012                                               i_0))
35013                                            (case-lambda
35014                                             ((key_0 value_0)
35015                                              (call-with-values
35016                                               (lambda ()
35017                                                 (call-with-values
35018                                                  (lambda ()
35019                                                    (if (eq? key_0 #f)
35020                                                      (values
35021                                                       (cons
35022                                                        (let ((app_0
35023                                                               (encode-name
35024                                                                rev-name-prefix_0)))
35025                                                          (cons
35026                                                           app_0
35027                                                           (linklet-bundle->bytes
35028                                                            value_0
35029                                                            as-correlated-linklet?_0
35030                                                            linklet-bundle->hash_0)))
35031                                                        accum_1)
35032                                                       #t)
35033                                                      (values
35034                                                       (flatten-linklet-directory_0
35035                                                        value_0
35036                                                        (cons
35037                                                         key_0
35038                                                         rev-name-prefix_0)
35039                                                        accum_1)
35040                                                       saw-bundle?_0)))
35041                                                  (case-lambda
35042                                                   ((accum_2 saw-bundle?_1)
35043                                                    (values
35044                                                     accum_2
35045                                                     saw-bundle?_1))
35046                                                   (args
35047                                                    (raise-binding-result-arity-error
35048                                                     2
35049                                                     args)))))
35050                                               (case-lambda
35051                                                ((accum_2 saw-bundle?_1)
35052                                                 (for-loop_0
35053                                                  accum_2
35054                                                  saw-bundle?_1
35055                                                  (hash-iterate-next
35056                                                   ht_0
35057                                                   i_0)))
35058                                                (args
35059                                                 (raise-binding-result-arity-error
35060                                                  2
35061                                                  args)))))
35062                                             (args
35063                                              (raise-binding-result-arity-error
35064                                               2
35065                                               args))))
35066                                           (values accum_1 saw-bundle?_0)))))))
35067                                  (for-loop_0
35068                                   accum_0
35069                                   #f
35070                                   (hash-iterate-first ht_0))))))
35071                           (case-lambda
35072                            ((new-accum_0 saw-bundle?_0)
35073                             (if saw-bundle?_0
35074                               new-accum_0
35075                               (cons
35076                                (cons (encode-name rev-name-prefix_0) #vu8(35 102))
35077                                new-accum_0)))
35078                            (args
35079                             (raise-binding-result-arity-error 2 args)))))))))
35080                   (let ((bundles_0
35081                          (list->vector
35082                           (let ((temp1_0
35083                                  (flatten-linklet-directory_0 ld_0 '() '())))
35084                             (let ((temp2_0
35085                                    (lambda (a_0 b_0)
35086                                      (let ((app_0 (car a_0)))
35087                                        (bytes<? app_0 (car b_0))))))
35088                               (let ((temp1_1 temp1_0))
35089                                 (sort.1 #f #f temp1_1 temp2_0)))))))
35090                     (let ((len_0 (vector-length bundles_0)))
35091                       (let ((initial-offset_0
35092                              (+
35093                               2
35094                               1
35095                               (unsafe-bytes-length version-bytes$1)
35096                               1
35097                               (unsafe-bytes-length vm-bytes_0)
35098                               1
35099                               4)))
35100                         (begin
35101                           (write-int len_0 port_0)
35102                           (let ((btree-size_0
35103                                  (compute-btree-size bundles_0 len_0)))
35104                             (let ((node-offsets_0
35105                                    (compute-btree-node-offsets
35106                                     bundles_0
35107                                     len_0
35108                                     initial-offset_0)))
35109                               (let ((bundle-offsets_0
35110                                      (compute-bundle-offsets
35111                                       bundles_0
35112                                       len_0
35113                                       (+ initial-offset_0 btree-size_0))))
35114                                 (begin
35115                                   (write-directory-btree
35116                                    bundles_0
35117                                    node-offsets_0
35118                                    bundle-offsets_0
35119                                    len_0
35120                                    port_0)
35121                                   (begin
35122                                     (letrec*
35123                                      ((for-loop_0
35124                                        (|#%name|
35125                                         for-loop
35126                                         (lambda (pos_0)
35127                                           (begin
35128                                             (if (< pos_0 len_0)
35129                                               (begin
35130                                                 (write-bytes
35131                                                  (cdr
35132                                                   (vector-ref
35133                                                    bundles_0
35134                                                    pos_0))
35135                                                  port_0)
35136                                                 (for-loop_0 (+ pos_0 1)))
35137                                               (values)))))))
35138                                      (for-loop_0 0)))
35139                                   (void)))))))))))))))))))
35140(define encode-name
35141  (lambda (rev-name_0)
35142    (let ((encode-symbol_0
35143           (|#%name|
35144            encode-symbol
35145            (lambda (s_0)
35146              (begin
35147                (let ((bstr_0 (string->bytes/utf-8 (symbol->string s_0))))
35148                  (let ((len_0 (unsafe-bytes-length bstr_0)))
35149                    (if (< len_0 255)
35150                      (list (bytes len_0) bstr_0)
35151                      (let ((app_0 (bytes 255)))
35152                        (list
35153                         app_0
35154                         (integer->integer-bytes len_0 4 #f #f)
35155                         bstr_0))))))))))
35156      (letrec*
35157       ((loop_0
35158         (|#%name|
35159          loop
35160          (lambda (rev-name_1 accum_0)
35161            (begin
35162              (if (null? rev-name_1)
35163                (apply bytes-append accum_0)
35164                (let ((app_0 (cdr rev-name_1)))
35165                  (loop_0
35166                   app_0
35167                   (append (encode-symbol_0 (car rev-name_1)) accum_0)))))))))
35168       (loop_0 rev-name_0 '())))))
35169(define compute-btree-size
35170  (lambda (bundles_0 len_0)
35171    (begin
35172      (letrec*
35173       ((for-loop_0
35174         (|#%name|
35175          for-loop
35176          (lambda (result_0 pos_0)
35177            (begin
35178              (if (< pos_0 len_0)
35179                (let ((result_1
35180                       (let ((result_1
35181                              (+
35182                               result_0
35183                               (let ((nlen_0
35184                                      (unsafe-bytes-length
35185                                       (car (vector-ref bundles_0 pos_0)))))
35186                                 (+ nlen_0 20)))))
35187                         (values result_1))))
35188                  (for-loop_0 result_1 (+ pos_0 1)))
35189                result_0))))))
35190       (for-loop_0 0 0)))))
35191(define compute-btree-node-offsets
35192  (lambda (bundles_0 len_0 initial-offset_0)
35193    (let ((node-offsets_0 (make-vector len_0)))
35194      (begin
35195        (letrec*
35196         ((loop_0
35197           (|#%name|
35198            loop
35199            (lambda (lo_0 hi_0 offset_0)
35200              (begin
35201                (if (= lo_0 hi_0)
35202                  offset_0
35203                  (let ((mid_0 (quotient (+ lo_0 hi_0) 2)))
35204                    (begin
35205                      (vector-set! node-offsets_0 mid_0 offset_0)
35206                      (let ((nlen_0
35207                             (unsafe-bytes-length
35208                              (car (vector-ref bundles_0 mid_0)))))
35209                        (let ((offset_1 (+ offset_0 4 nlen_0 4 4 4 4)))
35210                          (let ((offset_2 (loop_0 lo_0 mid_0 offset_1)))
35211                            (loop_0 (add1 mid_0) hi_0 offset_2))))))))))))
35212         (loop_0 0 len_0 initial-offset_0))
35213        node-offsets_0))))
35214(define compute-bundle-offsets
35215  (lambda (bundles_0 len_0 offset_0)
35216    (let ((bundle-offsets_0 (make-vector len_0)))
35217      (begin
35218        (letrec*
35219         ((loop_0
35220           (|#%name|
35221            loop
35222            (lambda (i_0 offset_1)
35223              (begin
35224                (if (= i_0 len_0)
35225                  (void)
35226                  (begin
35227                    (vector-set! bundle-offsets_0 i_0 offset_1)
35228                    (let ((app_0 (add1 i_0)))
35229                      (loop_0
35230                       app_0
35231                       (+
35232                        offset_1
35233                        (unsafe-bytes-length
35234                         (cdr (vector-ref bundles_0 i_0)))))))))))))
35235         (loop_0 0 offset_0))
35236        bundle-offsets_0))))
35237(define write-directory-btree
35238  (lambda (bundles_0 node-offsets_0 bundle-offsets_0 len_0 port_0)
35239    (letrec*
35240     ((loop_0
35241       (|#%name|
35242        loop
35243        (lambda (lo_0 hi_0)
35244          (begin
35245            (if (= lo_0 hi_0)
35246              (void)
35247              (let ((mid_0 (quotient (+ lo_0 hi_0) 2)))
35248                (let ((p_0 (vector-ref bundles_0 mid_0)))
35249                  (let ((nlen_0 (unsafe-bytes-length (car p_0))))
35250                    (begin
35251                      (write-int nlen_0 port_0)
35252                      (write-bytes (car p_0) port_0)
35253                      (write-int (vector-ref bundle-offsets_0 mid_0) port_0)
35254                      (write-int (unsafe-bytes-length (cdr p_0)) port_0)
35255                      (if (> mid_0 lo_0)
35256                        (let ((left_0 (quotient (+ lo_0 mid_0) 2)))
35257                          (write-int
35258                           (vector-ref node-offsets_0 left_0)
35259                           port_0))
35260                        (write-int 0 port_0))
35261                      (if (< (add1 mid_0) hi_0)
35262                        (let ((right_0 (quotient (+ (add1 mid_0) hi_0) 2)))
35263                          (write-int
35264                           (vector-ref node-offsets_0 right_0)
35265                           port_0))
35266                        (write-int 0 port_0))
35267                      (loop_0 lo_0 mid_0)
35268                      (loop_0 (add1 mid_0) hi_0)))))))))))
35269     (loop_0 0 len_0))))
35270(define write-int
35271  (lambda (n_0 port_0)
35272    (write-bytes (integer->integer-bytes n_0 4 #f #f) port_0)))
35273(define finish_2267
35274  (make-struct-type-install-properties
35275   '(linklet-directory)
35276   1
35277   0
35278   #f
35279   (list
35280    (cons
35281     prop:custom-write
35282     (lambda (ld_0 port_0 mode_0)
35283       (write-linklet-directory
35284        ld_0
35285        (correlated-linklet-directory? ld_0)
35286        linklet-directory->hash$1
35287        1/linklet-bundle->hash
35288        port_0))))
35289   (current-inspector)
35290   #f
35291   '(0)
35292   #f
35293   'linklet-directory))
35294(define struct:linklet-directory
35295  (make-record-type-descriptor*
35296   'linklet-directory
35297   #f
35298   (|#%nongenerative-uid| linklet-directory)
35299   #f
35300   #f
35301   1
35302   0))
35303(define effect_2692 (finish_2267 struct:linklet-directory))
35304(define linklet-directory1.1
35305  (|#%name|
35306   linklet-directory
35307   (record-constructor
35308    (make-record-constructor-descriptor struct:linklet-directory #f #f))))
35309(define linklet-directory?$1_2352
35310  (|#%name| linklet-directory? (record-predicate struct:linklet-directory)))
35311(define linklet-directory?$1
35312  (|#%name|
35313   linklet-directory?
35314   (lambda (v)
35315     (if (linklet-directory?$1_2352 v)
35316       #t
35317       ($value
35318        (if (impersonator? v)
35319          (linklet-directory?$1_2352 (impersonator-val v))
35320          #f))))))
35321(define linklet-directory-ht_3011
35322  (|#%name| linklet-directory-ht (record-accessor struct:linklet-directory 0)))
35323(define linklet-directory-ht
35324  (|#%name|
35325   linklet-directory-ht
35326   (lambda (s)
35327     (if (linklet-directory?$1_2352 s)
35328       (linklet-directory-ht_3011 s)
35329       ($value
35330        (impersonate-ref
35331         linklet-directory-ht_3011
35332         struct:linklet-directory
35333         0
35334         s
35335         'linklet-directory
35336         'ht))))))
35337(define finish_2265
35338  (make-struct-type-install-properties
35339   '(linklet-bundle)
35340   1
35341   0
35342   #f
35343   (list
35344    (cons
35345     prop:custom-write
35346     (lambda (b_0 port_0 mode_0)
35347       (write-linklet-bundle
35348        b_0
35349        (correlated-linklet-bundle? b_0)
35350        1/linklet-bundle->hash
35351        port_0))))
35352   (current-inspector)
35353   #f
35354   '(0)
35355   #f
35356   'linklet-bundle))
35357(define struct:linklet-bundle
35358  (make-record-type-descriptor*
35359   'linklet-bundle
35360   #f
35361   (|#%nongenerative-uid| linklet-bundle)
35362   #f
35363   #f
35364   1
35365   0))
35366(define effect_2464 (finish_2265 struct:linklet-bundle))
35367(define linklet-bundle2.1
35368  (|#%name|
35369   linklet-bundle
35370   (record-constructor
35371    (make-record-constructor-descriptor struct:linklet-bundle #f #f))))
35372(define 1/linklet-bundle?_3104
35373  (|#%name| linklet-bundle? (record-predicate struct:linklet-bundle)))
35374(define 1/linklet-bundle?
35375  (|#%name|
35376   linklet-bundle?
35377   (lambda (v)
35378     (if (1/linklet-bundle?_3104 v)
35379       #t
35380       ($value
35381        (if (impersonator? v)
35382          (1/linklet-bundle?_3104 (impersonator-val v))
35383          #f))))))
35384(define linklet-bundle-ht_3215
35385  (|#%name| linklet-bundle-ht (record-accessor struct:linklet-bundle 0)))
35386(define linklet-bundle-ht
35387  (|#%name|
35388   linklet-bundle-ht
35389   (lambda (s)
35390     (if (1/linklet-bundle?_3104 s)
35391       (linklet-bundle-ht_3215 s)
35392       ($value
35393        (impersonate-ref
35394         linklet-bundle-ht_3215
35395         struct:linklet-bundle
35396         0
35397         s
35398         'linklet-bundle
35399         'ht))))))
35400(define 1/hash->linklet-directory
35401  (|#%name|
35402   hash->linklet-directory
35403   (lambda (ht_0)
35404     (begin
35405       (begin
35406         (if (if (not (impersonator? ht_0))
35407               (if (hash? ht_0) (if (immutable? ht_0) (hash-eq? ht_0) #f) #f)
35408               #f)
35409           (void)
35410           (raise-argument-error
35411            'hash->linklet-directory
35412            "(and/c hash? hash-eq? immutable? (not/c impersonator?))"
35413            ht_0))
35414         (begin
35415           (letrec*
35416            ((for-loop_0
35417              (|#%name|
35418               for-loop
35419               (lambda (i_0)
35420                 (begin
35421                   (if i_0
35422                     (call-with-values
35423                      (lambda () (hash-iterate-key+value ht_0 i_0))
35424                      (case-lambda
35425                       ((k_0 v_0)
35426                        (begin
35427                          (if (not k_0)
35428                            (if (1/linklet-bundle? v_0)
35429                              (void)
35430                              (raise-arguments-error
35431                               'hash->linklet-directory
35432                               "value for #f key is not a linklet bundle"
35433                               "value"
35434                               v_0))
35435                            (if (symbol? k_0)
35436                              (if (linklet-directory?$1 v_0)
35437                                (void)
35438                                (raise-arguments-error
35439                                 'hash->linklet-directory
35440                                 "value for symbol key is not a linklet directory"
35441                                 "value"
35442                                 v_0))
35443                              (raise-arguments-error
35444                               'hash->linklet-directory
35445                               "key in given hash is not #f or a symbol"
35446                               "key"
35447                               k_0)))
35448                          (for-loop_0 (hash-iterate-next ht_0 i_0))))
35449                       (args (raise-binding-result-arity-error 2 args))))
35450                     (values)))))))
35451            (for-loop_0 (hash-iterate-first ht_0))))
35452         (void)
35453         (linklet-directory1.1 ht_0))))))
35454(define 1/hash->linklet-bundle
35455  (|#%name|
35456   hash->linklet-bundle
35457   (lambda (ht_0)
35458     (begin
35459       (begin
35460         (if (if (not (impersonator? ht_0))
35461               (if (hash? ht_0) (if (immutable? ht_0) (hash-eq? ht_0) #f) #f)
35462               #f)
35463           (void)
35464           (raise-argument-error
35465            'hash->linklet-bundle
35466            "(and/c hash? hash-eq? immutable? (not/c impersonator?))"
35467            ht_0))
35468         (begin
35469           (letrec*
35470            ((for-loop_0
35471              (|#%name|
35472               for-loop
35473               (lambda (i_0)
35474                 (begin
35475                   (if i_0
35476                     (let ((k_0 (hash-iterate-key ht_0 i_0)))
35477                       (begin
35478                         (if (let ((or-part_0 (symbol? k_0)))
35479                               (if or-part_0 or-part_0 (fixnum? k_0)))
35480                           (void)
35481                           (raise-arguments-error
35482                            'hash->linklet-bundle
35483                            "key in given hash is not a symbol or fixnum"
35484                            "key"
35485                            k_0))
35486                         (for-loop_0 (hash-iterate-next ht_0 i_0))))
35487                     (values)))))))
35488            (for-loop_0 (hash-iterate-first ht_0))))
35489         (void)
35490         (linklet-bundle2.1 ht_0))))))
35491(define linklet-directory->hash$1
35492  (|#%name|
35493   linklet-directory->hash
35494   (lambda (ld_0)
35495     (begin
35496       (begin
35497         (if (linklet-directory?$1 ld_0)
35498           (void)
35499           (raise-argument-error
35500            'linklet-directory->hash
35501            "linklet-directory?"
35502            ld_0))
35503         (linklet-directory-ht ld_0))))))
35504(define 1/linklet-bundle->hash
35505  (|#%name|
35506   linklet-bundle->hash
35507   (lambda (ld_0)
35508     (begin
35509       (begin
35510         (if (1/linklet-bundle? ld_0)
35511           (void)
35512           (raise-argument-error 'linklet-bundle->hash "linklet-bundle?" ld_0))
35513         (linklet-bundle-ht ld_0))))))
35514(define correlated-linklet-directory?
35515  (lambda (ld_0)
35516    (let ((ht_0 (linklet-directory->hash$1 ld_0)))
35517      (begin
35518        (letrec*
35519         ((for-loop_0
35520           (|#%name|
35521            for-loop
35522            (lambda (result_0 i_0)
35523              (begin
35524                (if i_0
35525                  (call-with-values
35526                   (lambda () (hash-iterate-key+value ht_0 i_0))
35527                   (case-lambda
35528                    ((k_0 v_0)
35529                     (let ((result_1
35530                            (let ((result_1
35531                                   (if (not k_0)
35532                                     (correlated-linklet-bundle? v_0)
35533                                     (if (symbol? k_0)
35534                                       (correlated-linklet-directory? v_0)
35535                                       #t))))
35536                              (values result_1))))
35537                       (if (if (not
35538                                (let ((x_0 (list k_0 v_0))) (not result_1)))
35539                             #t
35540                             #f)
35541                         (for-loop_0 result_1 (hash-iterate-next ht_0 i_0))
35542                         result_1)))
35543                    (args (raise-binding-result-arity-error 2 args))))
35544                  result_0))))))
35545         (for-loop_0 #t (hash-iterate-first ht_0)))))))
35546(define correlated-linklet-bundle?
35547  (lambda (b_0)
35548    (let ((ht_0 (1/linklet-bundle->hash b_0)))
35549      (begin
35550        (letrec*
35551         ((for-loop_0
35552           (|#%name|
35553            for-loop
35554            (lambda (result_0 i_0)
35555              (begin
35556                (if i_0
35557                  (call-with-values
35558                   (lambda () (hash-iterate-key+value ht_0 i_0))
35559                   (case-lambda
35560                    ((k_0 v_0)
35561                     (let ((result_1
35562                            (let ((result_1 (not (linklet? v_0))))
35563                              (values result_1))))
35564                       (if (if (not
35565                                (let ((x_0 (list k_0 v_0))) (not result_1)))
35566                             #t
35567                             #f)
35568                         (for-loop_0 result_1 (hash-iterate-next ht_0 i_0))
35569                         result_1)))
35570                    (args (raise-binding-result-arity-error 2 args))))
35571                  result_0))))))
35572         (for-loop_0 #t (hash-iterate-first ht_0)))))))
35573(define finish_2892
35574  (make-struct-type-install-properties
35575   '(namespace-scopes)
35576   2
35577   0
35578   #f
35579   null
35580   'prefab
35581   #f
35582   '(0 1)
35583   #f
35584   'namespace-scopes))
35585(define struct:namespace-scopes
35586  (make-record-type-descriptor*
35587   'namespace-scopes
35588   #f
35589   (structure-type-lookup-prefab-uid 'namespace-scopes #f 2 0 #f '(0 1))
35590   #f
35591   #f
35592   2
35593   3))
35594(define effect_2465 (finish_2892 struct:namespace-scopes))
35595(define namespace-scopes1.1
35596  (|#%name|
35597   namespace-scopes
35598   (record-constructor
35599    (make-record-constructor-descriptor struct:namespace-scopes #f #f))))
35600(define namespace-scopes?_2470
35601  (|#%name| namespace-scopes? (record-predicate struct:namespace-scopes)))
35602(define namespace-scopes?
35603  (|#%name|
35604   namespace-scopes?
35605   (lambda (v)
35606     (if (namespace-scopes?_2470 v)
35607       #t
35608       ($value
35609        (if (impersonator? v)
35610          (namespace-scopes?_2470 (impersonator-val v))
35611          #f))))))
35612(define namespace-scopes-post_2810
35613  (|#%name| namespace-scopes-post (record-accessor struct:namespace-scopes 0)))
35614(define namespace-scopes-post
35615  (|#%name|
35616   namespace-scopes-post
35617   (lambda (s)
35618     (if (namespace-scopes?_2470 s)
35619       (namespace-scopes-post_2810 s)
35620       ($value
35621        (impersonate-ref
35622         namespace-scopes-post_2810
35623         struct:namespace-scopes
35624         0
35625         s
35626         'namespace-scopes
35627         'post))))))
35628(define namespace-scopes-other_2110
35629  (|#%name|
35630   namespace-scopes-other
35631   (record-accessor struct:namespace-scopes 1)))
35632(define namespace-scopes-other
35633  (|#%name|
35634   namespace-scopes-other
35635   (lambda (s)
35636     (if (namespace-scopes?_2470 s)
35637       (namespace-scopes-other_2110 s)
35638       ($value
35639        (impersonate-ref
35640         namespace-scopes-other_2110
35641         struct:namespace-scopes
35642         1
35643         s
35644         'namespace-scopes
35645         'other))))))
35646(define swap-top-level-scopes
35647  (lambda (s_0 original-scopes-s_0 new-ns_0)
35648    (call-with-values
35649     (lambda ()
35650       (if (namespace-scopes? original-scopes-s_0)
35651         (let ((app_0 (namespace-scopes-post original-scopes-s_0)))
35652           (values app_0 (namespace-scopes-other original-scopes-s_0)))
35653         (decode-namespace-scopes original-scopes-s_0)))
35654     (case-lambda
35655      ((old-scs-post_0 old-scs-other_0)
35656       (call-with-values
35657        (lambda () (extract-namespace-scopes/values new-ns_0))
35658        (case-lambda
35659         ((new-scs-post_0 new-scs-other_0)
35660          (syntax-swap-scopes
35661           (syntax-swap-scopes s_0 old-scs-post_0 new-scs-post_0)
35662           old-scs-other_0
35663           new-scs-other_0))
35664         (args (raise-binding-result-arity-error 2 args)))))
35665      (args (raise-binding-result-arity-error 2 args))))))
35666(define extract-namespace-scopes/values
35667  (lambda (ns_0)
35668    (let ((root-ctx_0 (namespace-get-root-expand-ctx ns_0)))
35669      (let ((post-expansion-sc_0
35670             (post-expansion-scope
35671              (begin-unsafe
35672               (root-expand-context/outer-post-expansion root-ctx_0)))))
35673        (let ((app_0 (seteq post-expansion-sc_0)))
35674          (values
35675           app_0
35676           (let ((s_0
35677                  (list->seteq
35678                   (begin-unsafe
35679                    (root-expand-context/inner-module-scopes
35680                     (root-expand-context/outer-inner root-ctx_0))))))
35681             (begin-unsafe (hash-remove s_0 post-expansion-sc_0)))))))))
35682(define extract-namespace-scopes
35683  (lambda (ns_0)
35684    (call-with-values
35685     (lambda () (extract-namespace-scopes/values ns_0))
35686     (case-lambda
35687      ((scs-post_0 scs-other_0) (namespace-scopes1.1 scs-post_0 scs-other_0))
35688      (args (raise-binding-result-arity-error 2 args))))))
35689(define encode-namespace-scopes
35690  (lambda (ns_0)
35691    (call-with-values
35692     (lambda () (extract-namespace-scopes/values ns_0))
35693     (case-lambda
35694      ((post-expansion-scs_0 other-scs_0)
35695       (let ((post-expansion-s_0
35696              (let ((app_0 (datum->syntax$1 #f 'post)))
35697                (add-scopes app_0 (set->list post-expansion-scs_0)))))
35698         (let ((other-s_0
35699                (let ((app_0 (datum->syntax$1 #f 'other)))
35700                  (add-scopes app_0 (set->list other-scs_0)))))
35701           (datum->syntax$1 #f (vector post-expansion-s_0 other-s_0)))))
35702      (args (raise-binding-result-arity-error 2 args))))))
35703(define decode-namespace-scopes
35704  (lambda (stx_0)
35705    (let ((vec_0 (syntax-e$1 stx_0)))
35706      (let ((app_0 (syntax-scope-set (vector-ref vec_0 0) 0)))
35707        (values app_0 (syntax-scope-set (vector-ref vec_0 1) 0))))))
35708(define namespace-scopes=?
35709  (lambda (nss1_0 nss2_0)
35710    (if (let ((app_0 (namespace-scopes-post nss1_0)))
35711          (set=? app_0 (namespace-scopes-post nss2_0)))
35712      (let ((app_0 (namespace-scopes-other nss1_0)))
35713        (set=? app_0 (namespace-scopes-other nss2_0)))
35714      #f)))
35715(define finish_2887
35716  (make-struct-type-install-properties
35717   '(syntax-literals)
35718   2
35719   0
35720   #f
35721   null
35722   (current-inspector)
35723   #f
35724   '()
35725   #f
35726   'syntax-literals))
35727(define struct:syntax-literals
35728  (make-record-type-descriptor*
35729   'syntax-literals
35730   #f
35731   (|#%nongenerative-uid| syntax-literals)
35732   #f
35733   #f
35734   2
35735   3))
35736(define effect_2822 (finish_2887 struct:syntax-literals))
35737(define syntax-literals1.1
35738  (|#%name|
35739   syntax-literals
35740   (record-constructor
35741    (make-record-constructor-descriptor struct:syntax-literals #f #f))))
35742(define syntax-literals?_2232
35743  (|#%name| syntax-literals? (record-predicate struct:syntax-literals)))
35744(define syntax-literals?
35745  (|#%name|
35746   syntax-literals?
35747   (lambda (v)
35748     (if (syntax-literals?_2232 v)
35749       #t
35750       ($value
35751        (if (impersonator? v)
35752          (syntax-literals?_2232 (impersonator-val v))
35753          #f))))))
35754(define syntax-literals-stxes_3121
35755  (|#%name| syntax-literals-stxes (record-accessor struct:syntax-literals 0)))
35756(define syntax-literals-stxes
35757  (|#%name|
35758   syntax-literals-stxes
35759   (lambda (s)
35760     (if (syntax-literals?_2232 s)
35761       (syntax-literals-stxes_3121 s)
35762       ($value
35763        (impersonate-ref
35764         syntax-literals-stxes_3121
35765         struct:syntax-literals
35766         0
35767         s
35768         'syntax-literals
35769         'stxes))))))
35770(define syntax-literals-count_2487
35771  (|#%name| syntax-literals-count (record-accessor struct:syntax-literals 1)))
35772(define syntax-literals-count
35773  (|#%name|
35774   syntax-literals-count
35775   (lambda (s)
35776     (if (syntax-literals?_2232 s)
35777       (syntax-literals-count_2487 s)
35778       ($value
35779        (impersonate-ref
35780         syntax-literals-count_2487
35781         struct:syntax-literals
35782         1
35783         s
35784         'syntax-literals
35785         'count))))))
35786(define set-syntax-literals-stxes!_3052
35787  (|#%name|
35788   set-syntax-literals-stxes!
35789   (record-mutator struct:syntax-literals 0)))
35790(define set-syntax-literals-stxes!
35791  (|#%name|
35792   set-syntax-literals-stxes!
35793   (lambda (s v)
35794     (if (syntax-literals?_2232 s)
35795       (set-syntax-literals-stxes!_3052 s v)
35796       ($value
35797        (impersonate-set!
35798         set-syntax-literals-stxes!_3052
35799         struct:syntax-literals
35800         0
35801         0
35802         s
35803         v
35804         'syntax-literals
35805         'stxes))))))
35806(define set-syntax-literals-count!_3102
35807  (|#%name|
35808   set-syntax-literals-count!
35809   (record-mutator struct:syntax-literals 1)))
35810(define set-syntax-literals-count!
35811  (|#%name|
35812   set-syntax-literals-count!
35813   (lambda (s v)
35814     (if (syntax-literals?_2232 s)
35815       (set-syntax-literals-count!_3102 s v)
35816       ($value
35817        (impersonate-set!
35818         set-syntax-literals-count!_3102
35819         struct:syntax-literals
35820         1
35821         1
35822         s
35823         v
35824         'syntax-literals
35825         'count))))))
35826(define finish_2543
35827  (make-struct-type-install-properties
35828   '(header)
35829   8
35830   0
35831   #f
35832   null
35833   (current-inspector)
35834   #f
35835   '(0 1 3 4 6 7)
35836   #f
35837   'header))
35838(define struct:header
35839  (make-record-type-descriptor*
35840   'header
35841   #f
35842   (|#%nongenerative-uid| header)
35843   #f
35844   #f
35845   8
35846   36))
35847(define effect_2459 (finish_2543 struct:header))
35848(define header2.1
35849  (|#%name|
35850   header
35851   (record-constructor
35852    (make-record-constructor-descriptor struct:header #f #f))))
35853(define header?_3140 (|#%name| header? (record-predicate struct:header)))
35854(define header?
35855  (|#%name|
35856   header?
35857   (lambda (v)
35858     (if (header?_3140 v)
35859       #t
35860       ($value
35861        (if (impersonator? v) (header?_3140 (impersonator-val v)) #f))))))
35862(define header-module-path-indexes_3364
35863  (|#%name| header-module-path-indexes (record-accessor struct:header 0)))
35864(define header-module-path-indexes
35865  (|#%name|
35866   header-module-path-indexes
35867   (lambda (s)
35868     (if (header?_3140 s)
35869       (header-module-path-indexes_3364 s)
35870       ($value
35871        (impersonate-ref
35872         header-module-path-indexes_3364
35873         struct:header
35874         0
35875         s
35876         'header
35877         'module-path-indexes))))))
35878(define header-binding-sym-to-define-sym_2390
35879  (|#%name|
35880   header-binding-sym-to-define-sym
35881   (record-accessor struct:header 1)))
35882(define header-binding-sym-to-define-sym
35883  (|#%name|
35884   header-binding-sym-to-define-sym
35885   (lambda (s)
35886     (if (header?_3140 s)
35887       (header-binding-sym-to-define-sym_2390 s)
35888       ($value
35889        (impersonate-ref
35890         header-binding-sym-to-define-sym_2390
35891         struct:header
35892         1
35893         s
35894         'header
35895         'binding-sym-to-define-sym))))))
35896(define header-binding-syms-in-order_2365
35897  (|#%name| header-binding-syms-in-order (record-accessor struct:header 2)))
35898(define header-binding-syms-in-order
35899  (|#%name|
35900   header-binding-syms-in-order
35901   (lambda (s)
35902     (if (header?_3140 s)
35903       (header-binding-syms-in-order_2365 s)
35904       ($value
35905        (impersonate-ref
35906         header-binding-syms-in-order_2365
35907         struct:header
35908         2
35909         s
35910         'header
35911         'binding-syms-in-order))))))
35912(define header-require-var-to-import-sym_2845
35913  (|#%name|
35914   header-require-var-to-import-sym
35915   (record-accessor struct:header 3)))
35916(define header-require-var-to-import-sym
35917  (|#%name|
35918   header-require-var-to-import-sym
35919   (lambda (s)
35920     (if (header?_3140 s)
35921       (header-require-var-to-import-sym_2845 s)
35922       ($value
35923        (impersonate-ref
35924         header-require-var-to-import-sym_2845
35925         struct:header
35926         3
35927         s
35928         'header
35929         'require-var-to-import-sym))))))
35930(define header-import-sym-to-extra-inspectors_2352
35931  (|#%name|
35932   header-import-sym-to-extra-inspectors
35933   (record-accessor struct:header 4)))
35934(define header-import-sym-to-extra-inspectors
35935  (|#%name|
35936   header-import-sym-to-extra-inspectors
35937   (lambda (s)
35938     (if (header?_3140 s)
35939       (header-import-sym-to-extra-inspectors_2352 s)
35940       ($value
35941        (impersonate-ref
35942         header-import-sym-to-extra-inspectors_2352
35943         struct:header
35944         4
35945         s
35946         'header
35947         'import-sym-to-extra-inspectors))))))
35948(define header-require-vars-in-order_2218
35949  (|#%name| header-require-vars-in-order (record-accessor struct:header 5)))
35950(define header-require-vars-in-order
35951  (|#%name|
35952   header-require-vars-in-order
35953   (lambda (s)
35954     (if (header?_3140 s)
35955       (header-require-vars-in-order_2218 s)
35956       ($value
35957        (impersonate-ref
35958         header-require-vars-in-order_2218
35959         struct:header
35960         5
35961         s
35962         'header
35963         'require-vars-in-order))))))
35964(define header-define-and-import-syms_2444
35965  (|#%name| header-define-and-import-syms (record-accessor struct:header 6)))
35966(define header-define-and-import-syms
35967  (|#%name|
35968   header-define-and-import-syms
35969   (lambda (s)
35970     (if (header?_3140 s)
35971       (header-define-and-import-syms_2444 s)
35972       ($value
35973        (impersonate-ref
35974         header-define-and-import-syms_2444
35975         struct:header
35976         6
35977         s
35978         'header
35979         'define-and-import-syms))))))
35980(define header-syntax-literals_3129
35981  (|#%name| header-syntax-literals (record-accessor struct:header 7)))
35982(define header-syntax-literals
35983  (|#%name|
35984   header-syntax-literals
35985   (lambda (s)
35986     (if (header?_3140 s)
35987       (header-syntax-literals_3129 s)
35988       ($value
35989        (impersonate-ref
35990         header-syntax-literals_3129
35991         struct:header
35992         7
35993         s
35994         'header
35995         'syntax-literals))))))
35996(define set-header-binding-syms-in-order!_2287
35997  (|#%name|
35998   set-header-binding-syms-in-order!
35999   (record-mutator struct:header 2)))
36000(define set-header-binding-syms-in-order!
36001  (|#%name|
36002   set-header-binding-syms-in-order!
36003   (lambda (s v)
36004     (if (header?_3140 s)
36005       (set-header-binding-syms-in-order!_2287 s v)
36006       ($value
36007        (impersonate-set!
36008         set-header-binding-syms-in-order!_2287
36009         struct:header
36010         2
36011         2
36012         s
36013         v
36014         'header
36015         'binding-syms-in-order))))))
36016(define set-header-require-vars-in-order!_2994
36017  (|#%name|
36018   set-header-require-vars-in-order!
36019   (record-mutator struct:header 5)))
36020(define set-header-require-vars-in-order!
36021  (|#%name|
36022   set-header-require-vars-in-order!
36023   (lambda (s v)
36024     (if (header?_3140 s)
36025       (set-header-require-vars-in-order!_2994 s v)
36026       ($value
36027        (impersonate-set!
36028         set-header-require-vars-in-order!_2994
36029         struct:header
36030         5
36031         5
36032         s
36033         v
36034         'header
36035         'require-vars-in-order))))))
36036(define finish_2560
36037  (make-struct-type-install-properties
36038   '(variable-use)
36039   2
36040   0
36041   #f
36042   null
36043   #f
36044   #f
36045   '(0 1)
36046   #f
36047   'variable-use))
36048(define struct:variable-use
36049  (make-record-type-descriptor*
36050   'variable-use
36051   #f
36052   (|#%nongenerative-uid| variable-use)
36053   #f
36054   #f
36055   2
36056   0))
36057(define effect_2838 (finish_2560 struct:variable-use))
36058(define variable-use3.1
36059  (|#%name|
36060   variable-use
36061   (record-constructor
36062    (make-record-constructor-descriptor struct:variable-use #f #f))))
36063(define variable-use?_2270
36064  (|#%name| variable-use? (record-predicate struct:variable-use)))
36065(define variable-use?
36066  (|#%name|
36067   variable-use?
36068   (lambda (v)
36069     (if (variable-use?_2270 v)
36070       #t
36071       ($value
36072        (if (impersonator? v)
36073          (variable-use?_2270 (impersonator-val v))
36074          #f))))))
36075(define variable-use-module-use_2672
36076  (|#%name| variable-use-module-use (record-accessor struct:variable-use 0)))
36077(define variable-use-module-use
36078  (|#%name|
36079   variable-use-module-use
36080   (lambda (s)
36081     (if (variable-use?_2270 s)
36082       (variable-use-module-use_2672 s)
36083       ($value
36084        (impersonate-ref
36085         variable-use-module-use_2672
36086         struct:variable-use
36087         0
36088         s
36089         'variable-use
36090         'module-use))))))
36091(define variable-use-sym_2257
36092  (|#%name| variable-use-sym (record-accessor struct:variable-use 1)))
36093(define variable-use-sym
36094  (|#%name|
36095   variable-use-sym
36096   (lambda (s)
36097     (if (variable-use?_2270 s)
36098       (variable-use-sym_2257 s)
36099       ($value
36100        (impersonate-ref
36101         variable-use-sym_2257
36102         struct:variable-use
36103         1
36104         s
36105         'variable-use
36106         'sym))))))
36107(define make-syntax-literals (lambda () (syntax-literals1.1 null 0)))
36108(define make-header
36109  (lambda (mpis_0 syntax-literals_0)
36110    (let ((app_0 (make-hasheq)))
36111      (let ((app_1 (begin-unsafe (make-hash))))
36112        (let ((app_2 (make-hasheq)))
36113          (header2.1
36114           mpis_0
36115           app_0
36116           null
36117           app_1
36118           app_2
36119           null
36120           (make-hasheq)
36121           syntax-literals_0))))))
36122(define make-variable-uses (lambda () (make-hash)))
36123(define add-syntax-literal!
36124  (lambda (header-or-literals_0 q_0)
36125    (let ((sl_0
36126           (if (header? header-or-literals_0)
36127             (header-syntax-literals header-or-literals_0)
36128             header-or-literals_0)))
36129      (let ((pos_0 (syntax-literals-count sl_0)))
36130        (begin
36131          (set-syntax-literals-count! sl_0 (add1 pos_0))
36132          (set-syntax-literals-stxes!
36133           sl_0
36134           (cons q_0 (syntax-literals-stxes sl_0)))
36135          pos_0)))))
36136(define add-syntax-literals!
36137  (lambda (sl_0 vec_0)
36138    (let ((pos_0 (syntax-literals-count sl_0)))
36139      (begin
36140        (call-with-values
36141         (lambda ()
36142           (begin
36143             (check-vector vec_0)
36144             (values vec_0 (unsafe-vector-length vec_0))))
36145         (case-lambda
36146          ((vec_1 len_0)
36147           (begin
36148             #f
36149             (letrec*
36150              ((for-loop_0
36151                (|#%name|
36152                 for-loop
36153                 (lambda (pos_1)
36154                   (begin
36155                     (if (unsafe-fx< pos_1 len_0)
36156                       (let ((e_0 (unsafe-vector-ref vec_1 pos_1)))
36157                         (begin
36158                           (add-syntax-literal! sl_0 e_0)
36159                           (for-loop_0 (unsafe-fx+ 1 pos_1))))
36160                       (values)))))))
36161              (for-loop_0 0))))
36162          (args (raise-binding-result-arity-error 2 args))))
36163        (void)
36164        (cons pos_0 (vector-length vec_0))))))
36165(define syntax-literals-empty?
36166  (lambda (sl_0) (null? (syntax-literals-stxes sl_0))))
36167(define generate-lazy-syntax-literals!.1
36168  (|#%name|
36169   generate-lazy-syntax-literals!
36170   (lambda (skip-deserialize?4_0 sl6_0 mpis7_0 self8_0)
36171     (begin
36172       (let ((app_0 (list syntax-literals-id)))
36173         (let ((app_1
36174                (list
36175                 'define-values
36176                 app_0
36177                 (list* 'make-vector (syntax-literals-count sl6_0) '(#f)))))
36178           (list
36179            app_1
36180            (let ((app_2 (list get-syntax-literal!-id)))
36181              (list
36182               'define-values
36183               app_2
36184               (list
36185                'lambda
36186                '(pos)
36187                (let ((app_3
36188                       (list
36189                        (list
36190                         '(ready-stx)
36191                         (list*
36192                          'unsafe-vector*-ref
36193                          syntax-literals-id
36194                          '(pos))))))
36195                  (list
36196                   'let-values
36197                   app_3
36198                   (list
36199                    'if
36200                    'ready-stx
36201                    'ready-stx
36202                    (list*
36203                     'begin
36204                     (let ((app_4
36205                            (if skip-deserialize?4_0
36206                              null
36207                              (list
36208                               (list
36209                                'if
36210                                (list*
36211                                 'unsafe-vector*-ref
36212                                 deserialized-syntax-vector-id
36213                                 '(0))
36214                                '(void)
36215                                (list
36216                                 deserialize-syntax-id
36217                                 bulk-binding-registry-id))))))
36218                       (qq-append
36219                        app_4
36220                        (list
36221                         (let ((app_5
36222                                (list
36223                                 (list
36224                                  '(stx)
36225                                  (let ((app_5
36226                                         (list
36227                                          'syntax-shift-phase-level
36228                                          (list*
36229                                           'unsafe-vector*-ref
36230                                           deserialized-syntax-vector-id
36231                                           '(pos))
36232                                          phase-shift-id)))
36233                                    (list
36234                                     'syntax-module-path-index-shift
36235                                     app_5
36236                                     (add-module-path-index! mpis7_0 self8_0)
36237                                     self-id
36238                                     inspector-id))))))
36239                           (list
36240                            'let-values
36241                            app_5
36242                            (list*
36243                             'letrec-values
36244                             (list
36245                              (list
36246                               '(loop)
36247                               (list
36248                                'lambda
36249                                '()
36250                                (list
36251                                 'begin
36252                                 (list*
36253                                  'vector-cas!
36254                                  syntax-literals-id
36255                                  '(pos #f stx))
36256                                 (list*
36257                                  'let-values
36258                                  (list
36259                                   (list
36260                                    '(new-stx)
36261                                    (list*
36262                                     'unsafe-vector*-ref
36263                                     syntax-literals-id
36264                                     '(pos))))
36265                                  '((if new-stx new-stx (loop))))))))
36266                             '((loop))))))))))))))))))))))
36267(define generate-lazy-syntax-literals-data!
36268  (lambda (sl_0 mpis_0)
36269    (if (begin-unsafe (null? (syntax-literals-stxes sl_0)))
36270      (list (list* 'define-values (list deserialize-syntax-id) '(#f)))
36271      (list
36272       (let ((app_0 (list deserialize-syntax-id)))
36273         (list
36274          'define-values
36275          app_0
36276          (let ((app_1 (list bulk-binding-registry-id)))
36277            (list
36278             'lambda
36279             app_1
36280             (let ((app_2
36281                    (list
36282                     'vector-copy!
36283                     deserialized-syntax-vector-id
36284                     ''0
36285                     (let ((app_2 (list (list* (list inspector-id) '(#f)))))
36286                       (list
36287                        'let-values
36288                        app_2
36289                        (let ((temp21_0
36290                               (vector->immutable-vector
36291                                (list->vector
36292                                 (reverse$1 (syntax-literals-stxes sl_0))))))
36293                          (generate-deserialize.1
36294                           #f
36295                           #f
36296                           mpis_0
36297                           hash2610
36298                           #t
36299                           temp21_0)))))))
36300               (list
36301                'begin
36302                app_2
36303                (list* 'set! deserialize-syntax-id '(#f))))))))))))
36304(define generate-lazy-syntax-literal-lookup
36305  (lambda (pos_0) (list get-syntax-literal!-id pos_0)))
36306(define generate-eager-syntax-literals!
36307  (lambda (sl_0 mpis_0 base-phase_0 self_0 ns_0)
36308    (if (begin-unsafe (null? (syntax-literals-stxes sl_0)))
36309      #f
36310      (let ((app_0
36311             (list
36312              (list
36313               '(ns+stxss)
36314               (let ((temp23_0
36315                      (let ((app_0 (encode-namespace-scopes ns_0)))
36316                        (cons
36317                         app_0
36318                         (reverse$1 (syntax-literals-stxes sl_0))))))
36319                 (generate-deserialize.1
36320                  #f
36321                  #f
36322                  mpis_0
36323                  hash2610
36324                  #t
36325                  temp23_0))))))
36326        (list
36327         'let-values
36328         app_0
36329         (list
36330          'let-values
36331          '(((ns-scope-s) (car ns+stxss)))
36332          (list
36333           'list->vector
36334           (list*
36335            'map
36336            (list
36337             'lambda
36338             '(stx)
36339             (list
36340              'swap-top-level-scopes
36341              (let ((app_1
36342                     (list
36343                      'syntax-shift-phase-level
36344                      'stx
36345                      (list '- base-phase_0 dest-phase-id))))
36346                (list
36347                 'syntax-module-path-index-shift
36348                 app_1
36349                 (add-module-path-index! mpis_0 self_0)
36350                 self-id))
36351              'ns-scope-s
36352              ns-id))
36353            '((cdr ns+stxss))))))))))
36354(define generate-eager-syntax-literal-lookup
36355  (lambda (pos_0) (list 'unsafe-vector*-ref syntax-literals-id pos_0)))
36356(define syntax-literals-as-vector
36357  (lambda (sl_0) (list->vector (reverse$1 (syntax-literals-stxes sl_0)))))
36358(define select-fresh
36359  (lambda (sym_0 header_0)
36360    (if (symbol-conflicts? sym_0 header_0)
36361      (letrec*
36362       ((loop_0
36363         (|#%name|
36364          loop
36365          (lambda (pos_0)
36366            (begin
36367              (let ((new-sym_0
36368                     (string->symbol
36369                      (let ((app_0 (number->string pos_0)))
36370                        (string-append app_0 "/" (symbol->string sym_0))))))
36371                (if (symbol-conflicts? new-sym_0 header_0)
36372                  (loop_0 (add1 pos_0))
36373                  new-sym_0)))))))
36374       (loop_0 1))
36375      sym_0)))
36376(define symbol-conflicts?
36377  (lambda (sym_0 header_0)
36378    (let ((or-part_0 (begin-unsafe (hash-ref built-in-symbols sym_0 #f))))
36379      (if or-part_0
36380        or-part_0
36381        (hash-ref (header-define-and-import-syms header_0) sym_0 #f)))))
36382(define register-required-variable-use!.1
36383  (|#%name|
36384   register-required-variable-use!
36385   (lambda (defined?10_0
36386            header12_0
36387            mpi13_0
36388            phase14_0
36389            sym15_0
36390            extra-inspector16_0)
36391     (begin
36392       (let ((key_0
36393              (variable-use3.1 (module-use1.1 mpi13_0 phase14_0) sym15_0)))
36394         (let ((variable-uses_0 (header-require-var-to-import-sym header12_0)))
36395           (let ((prev-var-sym_0 (hash-ref variable-uses_0 key_0 #f)))
36396             (let ((var-sym_0
36397                    (if prev-var-sym_0
36398                      prev-var-sym_0
36399                      (let ((sym_0
36400                             (select-fresh
36401                              (variable-use-sym key_0)
36402                              header12_0)))
36403                        (begin
36404                          (hash-set! variable-uses_0 key_0 sym_0)
36405                          (set-header-require-vars-in-order!
36406                           header12_0
36407                           (cons
36408                            key_0
36409                            (header-require-vars-in-order header12_0)))
36410                          (let ((app_0
36411                                 (header-define-and-import-syms header12_0)))
36412                            (hash-set!
36413                             app_0
36414                             sym_0
36415                             (if defined?10_0 'defined 'required)))
36416                          sym_0)))))
36417               (begin
36418                 (if (if extra-inspector16_0 (not prev-var-sym_0) #f)
36419                   (let ((extra-inspectors_0
36420                          (header-import-sym-to-extra-inspectors header12_0)))
36421                     (let ((xform_0
36422                            (lambda (s_0)
36423                              (begin-unsafe
36424                               (hash-set s_0 extra-inspector16_0 #t)))))
36425                       (let ((default_0 hash2610))
36426                         (begin-unsafe
36427                          (do-hash-update
36428                           'hash-update!
36429                           #t
36430                           hash-set!
36431                           extra-inspectors_0
36432                           var-sym_0
36433                           xform_0
36434                           default_0)))))
36435                   (void))
36436                 var-sym_0)))))))))
36437(define register-as-defined!
36438  (lambda (header_0 def-sym_0)
36439    (hash-set! (header-define-and-import-syms header_0) def-sym_0 'defined)))
36440(define registered-as-required?
36441  (lambda (header_0 var-sym_0)
36442    (eq?
36443     'required
36444     (hash-ref (header-define-and-import-syms header_0) var-sym_0 #f))))
36445(define generate-links+imports
36446  (lambda (header_0 phase_0 cctx_0 cross-linklet-inlining?_0)
36447    (call-with-values
36448     (lambda ()
36449       (let ((lst_0 (header-require-vars-in-order header_0)))
36450         (begin
36451           (letrec*
36452            ((for-loop_0
36453              (|#%name|
36454               for-loop
36455               (lambda (ht_0 link-mod-uses_0 lst_1)
36456                 (begin
36457                   (if (pair? lst_1)
36458                     (let ((vu_0 (unsafe-car lst_1)))
36459                       (let ((rest_0 (unsafe-cdr lst_1)))
36460                         (call-with-values
36461                          (lambda ()
36462                            (call-with-values
36463                             (lambda ()
36464                               (let ((mu_0 (variable-use-module-use vu_0)))
36465                                 (if (let ((or-part_0 (hash-ref ht_0 mu_0 #f)))
36466                                       (if or-part_0
36467                                         or-part_0
36468                                         (let ((or-part_1
36469                                                (eq?
36470                                                 (module-use-module mu_0)
36471                                                 (compile-context-self
36472                                                  cctx_0))))
36473                                           (if or-part_1
36474                                             or-part_1
36475                                             (let ((mpi_0
36476                                                    (module-use-module mu_0)))
36477                                               (begin-unsafe
36478                                                (eq?
36479                                                 top-level-module-path-index
36480                                                 mpi_0)))))))
36481                                   (values ht_0 link-mod-uses_0)
36482                                   (let ((app_0 (hash-set ht_0 mu_0 #t)))
36483                                     (values
36484                                      app_0
36485                                      (cons mu_0 link-mod-uses_0))))))
36486                             (case-lambda
36487                              ((ht_1 link-mod-uses_1)
36488                               (values ht_1 link-mod-uses_1))
36489                              (args
36490                               (raise-binding-result-arity-error 2 args)))))
36491                          (case-lambda
36492                           ((ht_1 link-mod-uses_1)
36493                            (for-loop_0 ht_1 link-mod-uses_1 rest_0))
36494                           (args (raise-binding-result-arity-error 2 args))))))
36495                     (values ht_0 link-mod-uses_0)))))))
36496            (for-loop_0 hash2725 null lst_0)))))
36497     (case-lambda
36498      ((mod-use-ht_0 link-mod-uses_0)
36499       (let ((app_0
36500              (reverse$1
36501               (begin
36502                 (letrec*
36503                  ((for-loop_0
36504                    (|#%name|
36505                     for-loop
36506                     (lambda (fold-var_0 lst_0)
36507                       (begin
36508                         (if (pair? lst_0)
36509                           (let ((mu_0 (unsafe-car lst_0)))
36510                             (let ((rest_0 (unsafe-cdr lst_0)))
36511                               (let ((fold-var_1
36512                                      (let ((fold-var_1
36513                                             (cons
36514                                              (reverse$1
36515                                               (let ((lst_1
36516                                                      (header-require-vars-in-order
36517                                                       header_0)))
36518                                                 (begin
36519                                                   (letrec*
36520                                                    ((for-loop_1
36521                                                      (|#%name|
36522                                                       for-loop
36523                                                       (lambda (fold-var_1
36524                                                                lst_2)
36525                                                         (begin
36526                                                           (if (pair? lst_2)
36527                                                             (let ((vu_0
36528                                                                    (unsafe-car
36529                                                                     lst_2)))
36530                                                               (let ((rest_1
36531                                                                      (unsafe-cdr
36532                                                                       lst_2)))
36533                                                                 (let ((fold-var_2
36534                                                                        (if (equal?
36535                                                                             mu_0
36536                                                                             (variable-use-module-use
36537                                                                              vu_0))
36538                                                                          (let ((fold-var_2
36539                                                                                 (cons
36540                                                                                  (let ((var-sym_0
36541                                                                                         (hash-ref
36542                                                                                          (header-require-var-to-import-sym
36543                                                                                           header_0)
36544                                                                                          vu_0)))
36545                                                                                    (let ((ex-sym_0
36546                                                                                           (variable-use-sym
36547                                                                                            vu_0)))
36548                                                                                      (if (eq?
36549                                                                                           var-sym_0
36550                                                                                           ex-sym_0)
36551                                                                                        var-sym_0
36552                                                                                        (list
36553                                                                                         ex-sym_0
36554                                                                                         var-sym_0))))
36555                                                                                  fold-var_1)))
36556                                                                            (values
36557                                                                             fold-var_2))
36558                                                                          fold-var_1)))
36559                                                                   (for-loop_1
36560                                                                    fold-var_2
36561                                                                    rest_1))))
36562                                                             fold-var_1))))))
36563                                                    (for-loop_1 null lst_1)))))
36564                                              fold-var_0)))
36565                                        (values fold-var_1))))
36566                                 (for-loop_0 fold-var_1 rest_0))))
36567                           fold-var_0))))))
36568                  (for-loop_0 null link-mod-uses_0))))))
36569         (let ((app_1
36570                (reverse$1
36571                 (begin
36572                   (letrec*
36573                    ((for-loop_0
36574                      (|#%name|
36575                       for-loop
36576                       (lambda (fold-var_0 lst_0)
36577                         (begin
36578                           (if (pair? lst_0)
36579                             (let ((mu_0 (unsafe-car lst_0)))
36580                               (let ((rest_0 (unsafe-cdr lst_0)))
36581                                 (let ((fold-var_1
36582                                        (let ((fold-var_1
36583                                               (cons
36584                                                (let ((extra-inspectorss_0
36585                                                       (let ((lst_1
36586                                                              (header-require-vars-in-order
36587                                                               header_0)))
36588                                                         (begin
36589                                                           (letrec*
36590                                                            ((for-loop_1
36591                                                              (|#%name|
36592                                                               for-loop
36593                                                               (lambda (table_0
36594                                                                        lst_2)
36595                                                                 (begin
36596                                                                   (if (pair?
36597                                                                        lst_2)
36598                                                                     (let ((vu_0
36599                                                                            (unsafe-car
36600                                                                             lst_2)))
36601                                                                       (let ((rest_1
36602                                                                              (unsafe-cdr
36603                                                                               lst_2)))
36604                                                                         (let ((table_1
36605                                                                                (if (equal?
36606                                                                                     mu_0
36607                                                                                     (variable-use-module-use
36608                                                                                      vu_0))
36609                                                                                  (let ((id*_0
36610                                                                                         (hash-ref
36611                                                                                          (header-require-var-to-import-sym
36612                                                                                           header_0)
36613                                                                                          vu_0)))
36614                                                                                    (begin
36615                                                                                      #t
36616                                                                                      (letrec*
36617                                                                                       ((for-loop_2
36618                                                                                         (|#%name|
36619                                                                                          for-loop
36620                                                                                          (lambda (table_1)
36621                                                                                            (begin
36622                                                                                              (let ((table_2
36623                                                                                                     (let ((id*_1
36624                                                                                                            (hash-ref
36625                                                                                                             (header-import-sym-to-extra-inspectors
36626                                                                                                              header_0)
36627                                                                                                             id*_0
36628                                                                                                             #f)))
36629                                                                                                       (begin
36630                                                                                                         #t
36631                                                                                                         (letrec*
36632                                                                                                          ((for-loop_3
36633                                                                                                            (|#%name|
36634                                                                                                             for-loop
36635                                                                                                             (lambda (table_2)
36636                                                                                                               (begin
36637                                                                                                                 (let ((table_3
36638                                                                                                                        (if (if id*_1
36639                                                                                                                              id*_1
36640                                                                                                                              cross-linklet-inlining?_0)
36641                                                                                                                          (let ((table_3
36642                                                                                                                                 (call-with-values
36643                                                                                                                                  (lambda ()
36644                                                                                                                                    (values
36645                                                                                                                                     id*_0
36646                                                                                                                                     id*_1))
36647                                                                                                                                  (case-lambda
36648                                                                                                                                   ((key_0
36649                                                                                                                                     val_0)
36650                                                                                                                                    (hash-set
36651                                                                                                                                     table_2
36652                                                                                                                                     key_0
36653                                                                                                                                     val_0))
36654                                                                                                                                   (args
36655                                                                                                                                    (raise-binding-result-arity-error
36656                                                                                                                                     2
36657                                                                                                                                     args))))))
36658                                                                                                                            (values
36659                                                                                                                             table_3))
36660                                                                                                                          table_2)))
36661                                                                                                                   table_3))))))
36662                                                                                                          (for-loop_3
36663                                                                                                           table_1))))))
36664                                                                                                table_2))))))
36665                                                                                       (for-loop_2
36666                                                                                        table_0))))
36667                                                                                  table_0)))
36668                                                                           (for-loop_1
36669                                                                            table_1
36670                                                                            rest_1))))
36671                                                                     table_0))))))
36672                                                            (for-loop_1
36673                                                             hash2725
36674                                                             lst_1))))))
36675                                                  (if (hash-count
36676                                                       extra-inspectorss_0)
36677                                                    extra-inspectorss_0
36678                                                    #f))
36679                                                fold-var_0)))
36680                                          (values fold-var_1))))
36681                                   (for-loop_0 fold-var_1 rest_0))))
36682                             fold-var_0))))))
36683                    (for-loop_0 null link-mod-uses_0))))))
36684           (values
36685            link-mod-uses_0
36686            app_0
36687            app_1
36688            (reverse$1
36689             (let ((lst_0 (header-require-vars-in-order header_0)))
36690               (begin
36691                 (letrec*
36692                  ((for-loop_0
36693                    (|#%name|
36694                     for-loop
36695                     (lambda (fold-var_0 lst_1)
36696                       (begin
36697                         (if (pair? lst_1)
36698                           (let ((vu_0 (unsafe-car lst_1)))
36699                             (let ((rest_0 (unsafe-cdr lst_1)))
36700                               (let ((fold-var_1
36701                                      (if (let ((mod_0
36702                                                 (module-use-module
36703                                                  (variable-use-module-use
36704                                                   vu_0))))
36705                                            (let ((or-part_0
36706                                                   (eq?
36707                                                    mod_0
36708                                                    (compile-context-self
36709                                                     cctx_0))))
36710                                              (if or-part_0
36711                                                or-part_0
36712                                                (begin-unsafe
36713                                                 (eq?
36714                                                  top-level-module-path-index
36715                                                  mod_0)))))
36716                                        (let ((fold-var_1
36717                                               (cons
36718                                                (let ((var-sym_0
36719                                                       (hash-ref
36720                                                        (header-require-var-to-import-sym
36721                                                         header_0)
36722                                                        vu_0)))
36723                                                  (let ((ex-sym_0
36724                                                         (variable-use-sym
36725                                                          vu_0)))
36726                                                    (if (eq?
36727                                                         var-sym_0
36728                                                         ex-sym_0)
36729                                                      var-sym_0
36730                                                      (list
36731                                                       var-sym_0
36732                                                       ex-sym_0))))
36733                                                fold-var_0)))
36734                                          (values fold-var_1))
36735                                        fold-var_0)))
36736                                 (for-loop_0 fold-var_1 rest_0))))
36737                           fold-var_0))))))
36738                  (for-loop_0 null lst_0)))))))))
36739      (args (raise-binding-result-arity-error 2 args))))))
36740(define instance-imports
36741  (list
36742   ns-id
36743   phase-shift-id
36744   self-id
36745   inspector-id
36746   bulk-binding-registry-id
36747   set-transformer!-id))
36748(define make-instance-instance.1
36749  (|#%name|
36750   make-instance-instance
36751   (lambda (bulk-binding-registry5_0
36752            inspector4_0
36753            namespace1_0
36754            phase-shift2_0
36755            self3_0
36756            set-transformer!6_0)
36757     (begin
36758       (make-instance
36759        'instance
36760        #f
36761        'constant
36762        ns-id
36763        namespace1_0
36764        phase-shift-id
36765        phase-shift2_0
36766        self-id
36767        self3_0
36768        inspector-id
36769        inspector4_0
36770        bulk-binding-registry-id
36771        bulk-binding-registry5_0
36772        set-transformer!-id
36773        set-transformer!6_0)))))
36774(define make-module-body-instance-instance.1
36775  (|#%name|
36776   make-module-body-instance-instance
36777   (lambda (set-transformer!14_0)
36778     (begin
36779       (make-instance
36780        'body-instance
36781        #f
36782        'constant
36783        set-transformer!-id
36784        set-transformer!14_0)))))
36785(define empty-syntax-literals-instance
36786  (make-instance
36787   'empty-stx
36788   #f
36789   'constant
36790   get-syntax-literal!-id
36791   (lambda (pos_0) #f)
36792   'get-encoded-root-expand-ctx
36793   #f))
36794(define effect_2427
36795  (begin
36796    (void
36797     (instance-describe-variable!
36798      empty-syntax-literals-instance
36799      get-syntax-literal!-id
36800      '(procedure/succeeds 2)))
36801    (void)))
36802(define empty-module-body-instance
36803  (let ((temp17_0 (lambda (name_0 val_0) (void))))
36804    (make-module-body-instance-instance.1 temp17_0)))
36805(define effect_2309
36806  (begin
36807    (void
36808     (instance-describe-variable!
36809      empty-module-body-instance
36810      set-transformer!-id
36811      '(procedure/succeeds 4)))
36812    (void)))
36813(define empty-top-syntax-literal-instance
36814  (make-instance
36815   'top-syntax-literal
36816   #f
36817   'constant
36818   mpi-vector-id
36819   #f
36820   syntax-literals-id
36821   #f))
36822(define empty-syntax-literals-data-instance
36823  (make-instance
36824   'empty-stx-data
36825   #f
36826   'constant
36827   deserialized-syntax-vector-id
36828   (vector)
36829   deserialize-syntax-id
36830   void))
36831(define empty-instance-instance (make-instance-instance.1 #f #f #f #f #f #f))
36832(define eager-instance-imports
36833  (list*
36834   ns-id
36835   dest-phase-id
36836   self-id
36837   bulk-binding-registry-id
36838   inspector-id
36839   '(swap-top-level-scopes)))
36840(define make-eager-instance-instance.1
36841  (|#%name|
36842   make-eager-instance-instance
36843   (lambda (bulk-binding-registry4_0
36844            dest-phase2_0
36845            inspector5_0
36846            namespace1_0
36847            self3_0)
36848     (begin
36849       (make-instance
36850        'instance
36851        #f
36852        'constant
36853        ns-id
36854        namespace1_0
36855        dest-phase-id
36856        dest-phase2_0
36857        self-id
36858        self3_0
36859        bulk-binding-registry-id
36860        bulk-binding-registry4_0
36861        inspector-id
36862        inspector5_0
36863        'swap-top-level-scopes
36864        swap-top-level-scopes)))))
36865(define empty-eager-instance-instance
36866  (make-eager-instance-instance.1 #f #f #f #f #f))
36867(define self-quoting-in-linklet?
36868  (lambda (datum_0)
36869    (let ((or-part_0 (number? datum_0)))
36870      (if or-part_0
36871        or-part_0
36872        (let ((or-part_1 (boolean? datum_0)))
36873          (if or-part_1
36874            or-part_1
36875            (let ((or-part_2 (string? datum_0)))
36876              (if or-part_2 or-part_2 (bytes? datum_0)))))))))
36877(define srcloc->vector
36878  (lambda (s_0)
36879    (if s_0
36880      (let ((app_0 (srcloc-source s_0)))
36881        (let ((app_1 (srcloc-line s_0)))
36882          (let ((app_2 (srcloc-column s_0)))
36883            (let ((app_3 (srcloc-position s_0)))
36884              (vector app_0 app_1 app_2 app_3 (srcloc-span s_0))))))
36885      #f)))
36886(define keep-source-locations? #f)
36887(define correlate*
36888  (lambda (stx_0 s-exp_0)
36889    (if (syntax-srcloc$1 stx_0)
36890      (datum->correlated s-exp_0 (srcloc->vector (syntax-srcloc$1 stx_0)))
36891      s-exp_0)))
36892(define correlate~ (lambda (stx_0 s-exp_0) s-exp_0))
36893(define correlate/app
36894  (lambda (stx_0 s-exp_0)
36895    (if keep-source-locations?
36896      (correlate* stx_0 s-exp_0)
36897      (begin-unsafe s-exp_0))))
36898(define ->correlated (lambda (s_0) (datum->correlated s_0 #f)))
36899(define correlate-source-name
36900  (lambda (sym_0 e-sym_0)
36901    (if (eq? sym_0 e-sym_0)
36902      sym_0
36903      (let ((e_0 (datum->correlated sym_0 #f)))
36904        (begin-unsafe (syntax-property e_0 'source-name e-sym_0))))))
36905(define compile-keep-source-locations!
36906  (lambda (on?_0) (set! keep-source-locations? on?_0)))
36907(define compile$2
36908  (let ((compile_0
36909         (|#%name|
36910          compile
36911          (lambda (p3_0 cctx4_0 name1_0 result-used?2_0)
36912            (begin
36913              (let ((compile_0
36914                     (|#%name|
36915                      compile
36916                      (lambda (p_0 name_0 result-used?_0)
36917                        (begin
36918                          (compile$2 p_0 cctx4_0 name_0 result-used?_0))))))
36919                (let ((s_0 (parsed-s p3_0)))
36920                  (if (parsed-id? p3_0)
36921                    (compile-identifier.1 #f #f p3_0 cctx4_0)
36922                    (if (parsed-lambda? p3_0)
36923                      (if result-used?2_0
36924                        (add-lambda-properties
36925                         (correlate*
36926                          s_0
36927                          (list*
36928                           'lambda
36929                           (let ((formals_0 (parsed-lambda-keys p3_0)))
36930                             (let ((bodys_0 (parsed-lambda-body p3_0)))
36931                               (begin-unsafe
36932                                (list
36933                                 formals_0
36934                                 (compile-sequence bodys_0 cctx4_0 #f #t)))))))
36935                         name1_0
36936                         s_0)
36937                        (let ((s-exp_0 ''unused-lambda))
36938                          (begin-unsafe s-exp_0)))
36939                      (if (parsed-case-lambda? p3_0)
36940                        (if result-used?2_0
36941                          (add-lambda-properties
36942                           (correlate*
36943                            s_0
36944                            (list*
36945                             'case-lambda
36946                             (reverse$1
36947                              (let ((lst_0 (parsed-case-lambda-clauses p3_0)))
36948                                (begin
36949                                  (letrec*
36950                                   ((for-loop_0
36951                                     (|#%name|
36952                                      for-loop
36953                                      (lambda (fold-var_0 lst_1)
36954                                        (begin
36955                                          (if (pair? lst_1)
36956                                            (let ((clause_0
36957                                                   (unsafe-car lst_1)))
36958                                              (let ((rest_0
36959                                                     (unsafe-cdr lst_1)))
36960                                                (let ((fold-var_1
36961                                                       (let ((fold-var_1
36962                                                              (cons
36963                                                               (let ((formals_0
36964                                                                      (car
36965                                                                       clause_0)))
36966                                                                 (let ((bodys_0
36967                                                                        (cadr
36968                                                                         clause_0)))
36969                                                                   (let ((formals_1
36970                                                                          formals_0))
36971                                                                     (begin-unsafe
36972                                                                      (list
36973                                                                       formals_1
36974                                                                       (compile-sequence
36975                                                                        bodys_0
36976                                                                        cctx4_0
36977                                                                        #f
36978                                                                        #t))))))
36979                                                               fold-var_0)))
36980                                                         (values fold-var_1))))
36981                                                  (for-loop_0
36982                                                   fold-var_1
36983                                                   rest_0))))
36984                                            fold-var_0))))))
36985                                   (for-loop_0 null lst_0)))))))
36986                           name1_0
36987                           s_0)
36988                          (let ((s-exp_0 ''unused-case-lambda))
36989                            (begin-unsafe s-exp_0)))
36990                        (if (parsed-app? p3_0)
36991                          (let ((rands_0 (parsed-app-rands p3_0)))
36992                            (correlate/app
36993                             s_0
36994                             (let ((app_0
36995                                    (let ((p_0 (parsed-app-rator p3_0)))
36996                                      (begin-unsafe
36997                                       (begin
36998                                         (compile$2 p_0 cctx4_0 #f #t))))))
36999                               (cons
37000                                app_0
37001                                (reverse$1
37002                                 (begin
37003                                   (letrec*
37004                                    ((for-loop_0
37005                                      (|#%name|
37006                                       for-loop
37007                                       (lambda (fold-var_0 lst_0)
37008                                         (begin
37009                                           (if (pair? lst_0)
37010                                             (let ((r_0 (unsafe-car lst_0)))
37011                                               (let ((rest_0
37012                                                      (unsafe-cdr lst_0)))
37013                                                 (let ((fold-var_1
37014                                                        (let ((fold-var_1
37015                                                               (cons
37016                                                                (begin-unsafe
37017                                                                 (begin
37018                                                                   (compile$2
37019                                                                    r_0
37020                                                                    cctx4_0
37021                                                                    #f
37022                                                                    #t)))
37023                                                                fold-var_0)))
37024                                                          (values
37025                                                           fold-var_1))))
37026                                                   (for-loop_0
37027                                                    fold-var_1
37028                                                    rest_0))))
37029                                             fold-var_0))))))
37030                                    (for-loop_0 null rands_0))))))))
37031                          (if (parsed-if? p3_0)
37032                            (let ((p_0 (parsed-if-tst p3_0)))
37033                              (let ((tst-e_0
37034                                     (begin-unsafe
37035                                      (begin (compile$2 p_0 cctx4_0 #f #f)))))
37036                                (if (eq? (correlated-e tst-e_0) #t)
37037                                  (let ((p_1 (parsed-if-thn p3_0)))
37038                                    (begin-unsafe
37039                                     (begin
37040                                       (compile$2
37041                                        p_1
37042                                        cctx4_0
37043                                        name1_0
37044                                        result-used?2_0))))
37045                                  (if (eq? (correlated-e tst-e_0) #f)
37046                                    (let ((p_1 (parsed-if-els p3_0)))
37047                                      (begin-unsafe
37048                                       (begin
37049                                         (compile$2
37050                                          p_1
37051                                          cctx4_0
37052                                          name1_0
37053                                          result-used?2_0))))
37054                                    (let ((s-exp_0
37055                                           (let ((app_0
37056                                                  (let ((p_1
37057                                                         (parsed-if-thn p3_0)))
37058                                                    (begin-unsafe
37059                                                     (begin
37060                                                       (compile$2
37061                                                        p_1
37062                                                        cctx4_0
37063                                                        name1_0
37064                                                        result-used?2_0))))))
37065                                             (list
37066                                              'if
37067                                              tst-e_0
37068                                              app_0
37069                                              (let ((p_1 (parsed-if-els p3_0)))
37070                                                (begin-unsafe
37071                                                 (begin
37072                                                   (compile$2
37073                                                    p_1
37074                                                    cctx4_0
37075                                                    name1_0
37076                                                    result-used?2_0))))))))
37077                                      (begin-unsafe s-exp_0))))))
37078                            (if (parsed-with-continuation-mark? p3_0)
37079                              (let ((s-exp_0
37080                                     (let ((app_0
37081                                            (let ((p_0
37082                                                   (parsed-with-continuation-mark-key
37083                                                    p3_0)))
37084                                              (begin-unsafe
37085                                               (begin
37086                                                 (compile$2
37087                                                  p_0
37088                                                  cctx4_0
37089                                                  #f
37090                                                  #t))))))
37091                                       (let ((app_1
37092                                              (let ((p_0
37093                                                     (parsed-with-continuation-mark-val
37094                                                      p3_0)))
37095                                                (begin-unsafe
37096                                                 (begin
37097                                                   (compile$2
37098                                                    p_0
37099                                                    cctx4_0
37100                                                    #f
37101                                                    #t))))))
37102                                         (list
37103                                          'with-continuation-mark
37104                                          app_0
37105                                          app_1
37106                                          (let ((p_0
37107                                                 (parsed-with-continuation-mark-body
37108                                                  p3_0)))
37109                                            (begin-unsafe
37110                                             (begin
37111                                               (compile$2
37112                                                p_0
37113                                                cctx4_0
37114                                                name1_0
37115                                                result-used?2_0)))))))))
37116                                (begin-unsafe s-exp_0))
37117                              (if (parsed-begin0? p3_0)
37118                                (let ((s-exp_0
37119                                       (let ((app_0
37120                                              (let ((p_0
37121                                                     (car
37122                                                      (parsed-begin0-body
37123                                                       p3_0))))
37124                                                (begin-unsafe
37125                                                 (begin
37126                                                   (compile$2
37127                                                    p_0
37128                                                    cctx4_0
37129                                                    name1_0
37130                                                    result-used?2_0))))))
37131                                         (list*
37132                                          'begin0
37133                                          app_0
37134                                          (reverse$1
37135                                           (let ((lst_0
37136                                                  (cdr
37137                                                   (parsed-begin0-body p3_0))))
37138                                             (begin
37139                                               (letrec*
37140                                                ((for-loop_0
37141                                                  (|#%name|
37142                                                   for-loop
37143                                                   (lambda (fold-var_0 lst_1)
37144                                                     (begin
37145                                                       (if (pair? lst_1)
37146                                                         (let ((e_0
37147                                                                (unsafe-car
37148                                                                 lst_1)))
37149                                                           (let ((rest_0
37150                                                                  (unsafe-cdr
37151                                                                   lst_1)))
37152                                                             (let ((fold-var_1
37153                                                                    (let ((fold-var_1
37154                                                                           (cons
37155                                                                            (begin-unsafe
37156                                                                             (begin
37157                                                                               (compile$2
37158                                                                                e_0
37159                                                                                cctx4_0
37160                                                                                #f
37161                                                                                #f)))
37162                                                                            fold-var_0)))
37163                                                                      (values
37164                                                                       fold-var_1))))
37165                                                               (for-loop_0
37166                                                                fold-var_1
37167                                                                rest_0))))
37168                                                         fold-var_0))))))
37169                                                (for-loop_0 null lst_0)))))))))
37170                                  (begin-unsafe s-exp_0))
37171                                (if (parsed-begin? p3_0)
37172                                  (let ((s-exp_0
37173                                         (compile-begin
37174                                          (parsed-begin-body p3_0)
37175                                          cctx4_0
37176                                          name1_0
37177                                          result-used?2_0)))
37178                                    (begin-unsafe s-exp_0))
37179                                  (if (parsed-set!? p3_0)
37180                                    (let ((temp21_0 (parsed-set!-id p3_0)))
37181                                      (let ((s-exp_0
37182                                             (let ((temp24_0
37183                                                    (let ((p_0
37184                                                           (parsed-set!-rhs
37185                                                            p3_0)))
37186                                                      (let ((name_0
37187                                                             (parsed-s
37188                                                              (parsed-set!-id
37189                                                               p3_0))))
37190                                                        (begin-unsafe
37191                                                         (begin
37192                                                           (compile$2
37193                                                            p_0
37194                                                            cctx4_0
37195                                                            name_0
37196                                                            #t)))))))
37197                                               (let ((temp21_1 temp21_0))
37198                                                 (compile-identifier.1
37199                                                  temp24_0
37200                                                  #t
37201                                                  temp21_1
37202                                                  cctx4_0)))))
37203                                        (begin-unsafe s-exp_0)))
37204                                    (if (parsed-let-values? p3_0)
37205                                      (compile-let.1
37206                                       #f
37207                                       p3_0
37208                                       cctx4_0
37209                                       name1_0
37210                                       result-used?2_0)
37211                                      (if (parsed-letrec-values? p3_0)
37212                                        (compile-let.1
37213                                         #t
37214                                         p3_0
37215                                         cctx4_0
37216                                         name1_0
37217                                         result-used?2_0)
37218                                        (if (parsed-quote? p3_0)
37219                                          (let ((datum_0
37220                                                 (parsed-quote-datum p3_0)))
37221                                            (if (self-quoting-in-linklet?
37222                                                 datum_0)
37223                                              (begin-unsafe datum_0)
37224                                              (let ((s-exp_0
37225                                                     (list 'quote datum_0)))
37226                                                (begin-unsafe s-exp_0))))
37227                                          (if (parsed-quote-syntax? p3_0)
37228                                            (if result-used?2_0
37229                                              (compile-quote-syntax
37230                                               (parsed-quote-syntax-datum p3_0)
37231                                               cctx4_0)
37232                                              (let ((s-exp_0 ''syntax))
37233                                                (begin-unsafe s-exp_0)))
37234                                            (if (|parsed-#%variable-reference?|
37235                                                 p3_0)
37236                                              (let ((id_0
37237                                                     (|parsed-#%variable-reference-id|
37238                                                      p3_0)))
37239                                                (let ((s-exp_0
37240                                                       (if id_0
37241                                                         (list
37242                                                          '|#%variable-reference|
37243                                                          (compile-identifier.1
37244                                                           #f
37245                                                           #f
37246                                                           id_0
37247                                                           cctx4_0))
37248                                                         '(|#%variable-reference|))))
37249                                                  (begin-unsafe s-exp_0)))
37250                                              (error
37251                                               "unrecognized parsed form:"
37252                                               p3_0))))))))))))))))))))))
37253    (|#%name|
37254     compile
37255     (case-lambda
37256      ((p_0 cctx_0) (begin (compile_0 p_0 cctx_0 #f #t)))
37257      ((p_0 cctx_0 name_0 result-used?2_0)
37258       (compile_0 p_0 cctx_0 name_0 result-used?2_0))
37259      ((p_0 cctx_0 name1_0) (compile_0 p_0 cctx_0 name1_0 #t))))))
37260(define compile-lambda
37261  (lambda (formals_0 bodys_0 cctx_0)
37262    (list formals_0 (compile-sequence bodys_0 cctx_0 #f #t))))
37263(define compile-sequence
37264  (lambda (bodys_0 cctx_0 name_0 result-used?_0)
37265    (if (null? (cdr bodys_0))
37266      (compile$2 (car bodys_0) cctx_0 name_0 result-used?_0)
37267      (compile-begin bodys_0 cctx_0 name_0 result-used?_0))))
37268(define compile-begin
37269  (lambda (es_0 cctx_0 name_0 result-used?_0)
37270    (let ((used-pos_0 (sub1 (length es_0))))
37271      (list*
37272       'begin
37273       (reverse$1
37274        (begin
37275          (letrec*
37276           ((for-loop_0
37277             (|#%name|
37278              for-loop
37279              (lambda (fold-var_0 lst_0 pos_0)
37280                (begin
37281                  (if (if (pair? lst_0) #t #f)
37282                    (let ((e_0 (unsafe-car lst_0)))
37283                      (let ((rest_0 (unsafe-cdr lst_0)))
37284                        (let ((fold-var_1
37285                               (let ((fold-var_1
37286                                      (cons
37287                                       (let ((used?_0 (= pos_0 used-pos_0)))
37288                                         (let ((app_0 (if used?_0 name_0 #f)))
37289                                           (compile$2
37290                                            e_0
37291                                            cctx_0
37292                                            app_0
37293                                            (if used?_0 result-used?_0 #f))))
37294                                       fold-var_0)))
37295                                 (values fold-var_1))))
37296                          (for-loop_0 fold-var_1 rest_0 (+ pos_0 1)))))
37297                    fold-var_0))))))
37298           (for-loop_0 null es_0 0))))))))
37299(define add-lambda-properties
37300  (lambda (s_0 inferred-name_0 orig-s_0)
37301    (letrec*
37302     ((simplify-name_0
37303       (|#%name|
37304        simplify-name
37305        (lambda (v_0)
37306          (begin
37307            (if (pair? v_0)
37308              (let ((n1_0 (simplify-name_0 (car v_0))))
37309                (let ((n2_0 (simplify-name_0 (cdr v_0))))
37310                  (if (eq? n1_0 n2_0) n1_0 v_0)))
37311              v_0))))))
37312     (let ((name_0
37313            (let ((or-part_0
37314                   (let ((v_0
37315                          (simplify-name_0
37316                           (syntax-property$1 orig-s_0 'inferred-name))))
37317                     (if (let ((or-part_0 (symbol? v_0)))
37318                           (if or-part_0
37319                             or-part_0
37320                             (let ((or-part_1
37321                                    (if (syntax?$1 v_0)
37322                                      (symbol? (syntax-e$1 v_0))
37323                                      #f)))
37324                               (if or-part_1 or-part_1 (void? v_0)))))
37325                       v_0
37326                       #f))))
37327              (if or-part_0 or-part_0 inferred-name_0))))
37328       (let ((named-s_0
37329              (if name_0
37330                (let ((e_0 (begin-unsafe (datum->correlated s_0 #f))))
37331                  (let ((v_0
37332                         (if (syntax?$1 name_0) (syntax-e$1 name_0) name_0)))
37333                    (let ((e_1 e_0))
37334                      (begin-unsafe
37335                       (syntax-property e_1 'inferred-name v_0)))))
37336                s_0)))
37337         (let ((as-method_0 (syntax-property$1 orig-s_0 'method-arity-error)))
37338           (if as-method_0
37339             (let ((e_0 (begin-unsafe (datum->correlated named-s_0 #f))))
37340               (begin-unsafe
37341                (syntax-property e_0 'method-arity-error as-method_0)))
37342             named-s_0)))))))
37343(define compile-let.1
37344  (|#%name|
37345   compile-let
37346   (lambda (rec?5_0 p7_0 cctx8_0 name9_0 result-used?10_0)
37347     (begin
37348       (let ((body_0 (parsed-let_-values-body p7_0)))
37349         (let ((stx_0 (parsed-s p7_0)))
37350           (let ((s-exp_0
37351                  (let ((app_0 (if rec?5_0 'letrec-values 'let-values)))
37352                    (let ((app_1
37353                           (reverse$1
37354                            (let ((lst_0 (parsed-let_-values-clauses p7_0)))
37355                              (let ((lst_1 (parsed-let_-values-idss p7_0)))
37356                                (begin
37357                                  (letrec*
37358                                   ((for-loop_0
37359                                     (|#%name|
37360                                      for-loop
37361                                      (lambda (fold-var_0 lst_2 lst_3)
37362                                        (begin
37363                                          (if (if (pair? lst_2)
37364                                                (pair? lst_3)
37365                                                #f)
37366                                            (let ((clause_0
37367                                                   (unsafe-car lst_2)))
37368                                              (let ((rest_0
37369                                                     (unsafe-cdr lst_2)))
37370                                                (let ((ids_0
37371                                                       (unsafe-car lst_3)))
37372                                                  (let ((rest_1
37373                                                         (unsafe-cdr lst_3)))
37374                                                    (let ((fold-var_1
37375                                                           (let ((fold-var_1
37376                                                                  (cons
37377                                                                   (let ((app_1
37378                                                                          (if rec?5_0
37379                                                                            (reverse$1
37380                                                                             (let ((lst_4
37381                                                                                    (car
37382                                                                                     clause_0)))
37383                                                                               (begin
37384                                                                                 (letrec*
37385                                                                                  ((for-loop_1
37386                                                                                    (|#%name|
37387                                                                                     for-loop
37388                                                                                     (lambda (fold-var_1
37389                                                                                              lst_5
37390                                                                                              lst_6)
37391                                                                                       (begin
37392                                                                                         (if (if (pair?
37393                                                                                                  lst_5)
37394                                                                                               (pair?
37395                                                                                                lst_6)
37396                                                                                               #f)
37397                                                                                           (let ((sym_0
37398                                                                                                  (unsafe-car
37399                                                                                                   lst_5)))
37400                                                                                             (let ((rest_2
37401                                                                                                    (unsafe-cdr
37402                                                                                                     lst_5)))
37403                                                                                               (let ((id_0
37404                                                                                                      (unsafe-car
37405                                                                                                       lst_6)))
37406                                                                                                 (let ((rest_3
37407                                                                                                        (unsafe-cdr
37408                                                                                                         lst_6)))
37409                                                                                                   (let ((fold-var_2
37410                                                                                                          (let ((fold-var_2
37411                                                                                                                 (cons
37412                                                                                                                  (add-undefined-error-name-property
37413                                                                                                                   sym_0
37414                                                                                                                   id_0)
37415                                                                                                                  fold-var_1)))
37416                                                                                                            (values
37417                                                                                                             fold-var_2))))
37418                                                                                                     (for-loop_1
37419                                                                                                      fold-var_2
37420                                                                                                      rest_2
37421                                                                                                      rest_3))))))
37422                                                                                           fold-var_1))))))
37423                                                                                  (for-loop_1
37424                                                                                   null
37425                                                                                   lst_4
37426                                                                                   ids_0)))))
37427                                                                            (car
37428                                                                             clause_0))))
37429                                                                     (list
37430                                                                      app_1
37431                                                                      (let ((app_2
37432                                                                             (cadr
37433                                                                              clause_0)))
37434                                                                        (compile$2
37435                                                                         app_2
37436                                                                         cctx8_0
37437                                                                         (if (=
37438                                                                              1
37439                                                                              (length
37440                                                                               ids_0))
37441                                                                           (car
37442                                                                            ids_0)
37443                                                                           #f)))))
37444                                                                   fold-var_0)))
37445                                                             (values
37446                                                              fold-var_1))))
37447                                                      (for-loop_0
37448                                                       fold-var_1
37449                                                       rest_0
37450                                                       rest_1))))))
37451                                            fold-var_0))))))
37452                                   (for-loop_0 null lst_0 lst_1))))))))
37453                      (list
37454                       app_0
37455                       app_1
37456                       (compile-sequence
37457                        body_0
37458                        cctx8_0
37459                        name9_0
37460                        result-used?10_0))))))
37461             (let ((stx_1 stx_0)) (begin-unsafe s-exp_0)))))))))
37462(define add-undefined-error-name-property
37463  (lambda (sym_0 orig-id_0)
37464    (let ((id_0 (begin-unsafe sym_0)))
37465      (let ((e_0 (begin-unsafe (datum->correlated id_0 #f))))
37466        (let ((v_0
37467               (let ((or-part_0
37468                      (syntax-property$1 orig-id_0 'undefined-error-name)))
37469                 (if or-part_0 or-part_0 (syntax-e$1 orig-id_0)))))
37470          (let ((e_1 e_0))
37471            (begin-unsafe
37472             (syntax-property e_1 'undefined-error-name v_0))))))))
37473(define compile-identifier.1
37474  (|#%name|
37475   compile-identifier
37476   (lambda (set-to13_0 set-to?12_0 p16_0 cctx17_0)
37477     (begin
37478       (let ((normal-b_0 (parsed-id-binding p16_0)))
37479         (let ((b_0
37480                (if normal-b_0
37481                  normal-b_0
37482                  (let ((temp37_0 (compile-context-self cctx17_0)))
37483                    (let ((temp38_0 (compile-context-phase cctx17_0)))
37484                      (let ((temp39_0 (syntax-e$1 (parsed-s p16_0))))
37485                        (let ((temp38_1 temp38_0) (temp37_1 temp37_0))
37486                          (make-module-binding.1
37487                           #f
37488                           null
37489                           #f
37490                           #f
37491                           unsafe-undefined
37492                           unsafe-undefined
37493                           0
37494                           unsafe-undefined
37495                           temp37_1
37496                           temp38_1
37497                           temp39_0))))))))
37498           (let ((sym_0
37499                  (if (local-binding? b_0)
37500                    (local-binding-key b_0)
37501                    (if (module-binding? b_0)
37502                      (let ((mpi_0
37503                             (if (parsed-top-id? p16_0)
37504                               (compile-context-self cctx17_0)
37505                               (module-binding-module b_0))))
37506                        (if (parsed-primitive-id? p16_0)
37507                          (begin
37508                            (if (zero? (module-binding-phase b_0))
37509                              (void)
37510                              (error
37511                               "internal error: non-zero phase for a primitive"))
37512                            (if set-to?12_0
37513                              (error
37514                               "internal error: cannot assign to a primitive:"
37515                               (module-binding-sym b_0))
37516                              (void))
37517                            (module-binding-sym b_0))
37518                          (let ((c1_0
37519                                 (if (eq?
37520                                      mpi_0
37521                                      (compile-context-module-self cctx17_0))
37522                                   (let ((app_0
37523                                          (header-binding-sym-to-define-sym
37524                                           (compile-context-header cctx17_0))))
37525                                     (hash-ref
37526                                      app_0
37527                                      (module-binding-sym b_0)
37528                                      #f))
37529                                   #f)))
37530                            (if c1_0
37531                              c1_0
37532                              (let ((temp40_0
37533                                     (compile-context-header cctx17_0)))
37534                                (let ((temp41_0
37535                                       (if (inside-module-context?
37536                                            mpi_0
37537                                            (compile-context-self cctx17_0))
37538                                         (compile-context-self cctx17_0)
37539                                         mpi_0)))
37540                                  (let ((temp42_0 (module-binding-phase b_0)))
37541                                    (let ((temp43_0 (module-binding-sym b_0)))
37542                                      (let ((temp44_0
37543                                             (let ((or-part_0
37544                                                    (module-binding-extra-inspector
37545                                                     b_0)))
37546                                               (if or-part_0
37547                                                 or-part_0
37548                                                 (let ((or-part_1
37549                                                        (parsed-id-inspector
37550                                                         p16_0)))
37551                                                   (if or-part_1
37552                                                     or-part_1
37553                                                     (if (parsed-s p16_0)
37554                                                       (syntax-inspector
37555                                                        (parsed-s p16_0))
37556                                                       #f)))))))
37557                                        (let ((temp43_1 temp43_0)
37558                                              (temp42_1 temp42_0)
37559                                              (temp41_1 temp41_0)
37560                                              (temp40_1 temp40_0))
37561                                          (register-required-variable-use!.1
37562                                           #f
37563                                           temp40_1
37564                                           temp41_1
37565                                           temp42_1
37566                                           temp43_1
37567                                           temp44_0)))))))))))
37568                      (error
37569                       "not a reference to a module or local binding:"
37570                       b_0
37571                       (parsed-s p16_0))))))
37572             (let ((stx_0 (parsed-s p16_0)))
37573               (let ((s-exp_0
37574                      (if set-to?12_0 (list 'set! sym_0 set-to13_0) sym_0)))
37575                 (let ((stx_1 stx_0)) (begin-unsafe s-exp_0)))))))))))
37576(define compile-quote-syntax
37577  (lambda (q_0 cctx_0)
37578    (let ((pos_0 (add-syntax-literal! (compile-context-header cctx_0) q_0)))
37579      (if (compile-context-lazy-syntax-literals? cctx_0)
37580        (begin-unsafe (list get-syntax-literal!-id pos_0))
37581        (begin-unsafe (list 'unsafe-vector*-ref syntax-literals-id pos_0))))))
37582(define extra-inspectors-allow?
37583  (lambda (extra-inspectors_0 guard-insp_0)
37584    (if (not extra-inspectors_0)
37585      #f
37586      (if (begin-unsafe (hash? extra-inspectors_0))
37587        (begin
37588          (letrec*
37589           ((for-loop_0
37590             (|#%name|
37591              for-loop
37592              (lambda (result_0 i_0)
37593                (begin
37594                  (if i_0
37595                    (let ((extra-insp_0
37596                           (unsafe-immutable-hash-iterate-key
37597                            extra-inspectors_0
37598                            i_0)))
37599                      (let ((result_1
37600                             (let ((result_1
37601                                    (inspector-superior?
37602                                     extra-insp_0
37603                                     guard-insp_0)))
37604                               (values result_1))))
37605                        (if (if (not
37606                                 (let ((x_0 (list extra-insp_0)))
37607                                   (not result_1)))
37608                              #t
37609                              #f)
37610                          (for-loop_0
37611                           result_1
37612                           (unsafe-immutable-hash-iterate-next
37613                            extra-inspectors_0
37614                            i_0))
37615                          result_1)))
37616                    result_0))))))
37617           (for-loop_0
37618            #t
37619            (unsafe-immutable-hash-iterate-first extra-inspectors_0))))
37620        (if (procedure? extra-inspectors_0)
37621          (|#%app| extra-inspectors_0 guard-insp_0)
37622          (error
37623           'extra-inspectors-allow?
37624           "unknown representation of extra inspectors: ~e"
37625           extra-inspectors_0))))))
37626(define extra-inspectors-merge
37627  (lambda (extra-inspectors-1_0 extra-inspectors-2_0)
37628    (if (let ((or-part_0 (not extra-inspectors-1_0)))
37629          (if or-part_0 or-part_0 (not extra-inspectors-2_0)))
37630      #f
37631      (if (if (begin-unsafe (hash? extra-inspectors-1_0))
37632            (begin-unsafe (hash? extra-inspectors-2_0))
37633            #f)
37634        (set-union extra-inspectors-1_0 extra-inspectors-2_0)
37635        (lambda (guard-insp_0)
37636          (if (extra-inspectors-allow? extra-inspectors-1_0 guard-insp_0)
37637            (extra-inspectors-allow? extra-inspectors-2_0 guard-insp_0)
37638            #f))))))
37639(define finish_2356
37640  (make-struct-type-install-properties
37641   '(module-use*)
37642   2
37643   0
37644   struct:module-use
37645   null
37646   (current-inspector)
37647   #f
37648   '()
37649   #f
37650   'module-use*))
37651(define struct:module-use*
37652  (make-record-type-descriptor*
37653   'module-use*
37654   struct:module-use
37655   (|#%nongenerative-uid| module-use*)
37656   #f
37657   #f
37658   2
37659   3))
37660(define effect_2316 (finish_2356 struct:module-use*))
37661(define module-use*1.1
37662  (|#%name|
37663   module-use*
37664   (record-constructor
37665    (make-record-constructor-descriptor struct:module-use* #f #f))))
37666(define module-use*?_2564
37667  (|#%name| module-use*? (record-predicate struct:module-use*)))
37668(define module-use*?
37669  (|#%name|
37670   module-use*?
37671   (lambda (v)
37672     (if (module-use*?_2564 v)
37673       #t
37674       ($value
37675        (if (impersonator? v) (module-use*?_2564 (impersonator-val v)) #f))))))
37676(define module-use*-extra-inspectorss_2584
37677  (|#%name|
37678   module-use*-extra-inspectorss
37679   (record-accessor struct:module-use* 0)))
37680(define module-use*-extra-inspectorss
37681  (|#%name|
37682   module-use*-extra-inspectorss
37683   (lambda (s)
37684     (if (module-use*?_2564 s)
37685       (module-use*-extra-inspectorss_2584 s)
37686       ($value
37687        (impersonate-ref
37688         module-use*-extra-inspectorss_2584
37689         struct:module-use*
37690         0
37691         s
37692         'module-use*
37693         'extra-inspectorss))))))
37694(define module-use*-self-inspector_2469
37695  (|#%name| module-use*-self-inspector (record-accessor struct:module-use* 1)))
37696(define module-use*-self-inspector
37697  (|#%name|
37698   module-use*-self-inspector
37699   (lambda (s)
37700     (if (module-use*?_2564 s)
37701       (module-use*-self-inspector_2469 s)
37702       ($value
37703        (impersonate-ref
37704         module-use*-self-inspector_2469
37705         struct:module-use*
37706         1
37707         s
37708         'module-use*
37709         'self-inspector))))))
37710(define set-module-use*-extra-inspectorss!_2709
37711  (|#%name|
37712   set-module-use*-extra-inspectorss!
37713   (record-mutator struct:module-use* 0)))
37714(define set-module-use*-extra-inspectorss!
37715  (|#%name|
37716   set-module-use*-extra-inspectorss!
37717   (lambda (s v)
37718     (if (module-use*?_2564 s)
37719       (set-module-use*-extra-inspectorss!_2709 s v)
37720       ($value
37721        (impersonate-set!
37722         set-module-use*-extra-inspectorss!_2709
37723         struct:module-use*
37724         0
37725         2
37726         s
37727         v
37728         'module-use*
37729         'extra-inspectorss))))))
37730(define set-module-use*-self-inspector!_2824
37731  (|#%name|
37732   set-module-use*-self-inspector!
37733   (record-mutator struct:module-use* 1)))
37734(define set-module-use*-self-inspector!
37735  (|#%name|
37736   set-module-use*-self-inspector!
37737   (lambda (s v)
37738     (if (module-use*?_2564 s)
37739       (set-module-use*-self-inspector!_2824 s v)
37740       ($value
37741        (impersonate-set!
37742         set-module-use*-self-inspector!_2824
37743         struct:module-use*
37744         1
37745         3
37746         s
37747         v
37748         'module-use*
37749         'self-inspector))))))
37750(define module-uses-add-extra-inspectorsss
37751  (lambda (mus_0 extra-inspectorsss_0)
37752    (if extra-inspectorsss_0
37753      (reverse$1
37754       (begin
37755         (letrec*
37756          ((for-loop_0
37757            (|#%name|
37758             for-loop
37759             (lambda (fold-var_0 lst_0 lst_1)
37760               (begin
37761                 (if (if (pair? lst_0) (pair? lst_1) #f)
37762                   (let ((mu_0 (unsafe-car lst_0)))
37763                     (let ((rest_0 (unsafe-cdr lst_0)))
37764                       (let ((extra-inspectorss_0 (unsafe-car lst_1)))
37765                         (let ((rest_1 (unsafe-cdr lst_1)))
37766                           (let ((fold-var_1
37767                                  (let ((fold-var_1
37768                                         (cons
37769                                          (let ((app_0
37770                                                 (module-use-module mu_0)))
37771                                            (module-use*1.1
37772                                             app_0
37773                                             (module-use-phase mu_0)
37774                                             extra-inspectorss_0
37775                                             #f))
37776                                          fold-var_0)))
37777                                    (values fold-var_1))))
37778                             (for-loop_0 fold-var_1 rest_0 rest_1))))))
37779                   fold-var_0))))))
37780          (for-loop_0 null mus_0 extra-inspectorsss_0))))
37781      (reverse$1
37782       (begin
37783         (letrec*
37784          ((for-loop_0
37785            (|#%name|
37786             for-loop
37787             (lambda (fold-var_0 lst_0)
37788               (begin
37789                 (if (pair? lst_0)
37790                   (let ((mu_0 (unsafe-car lst_0)))
37791                     (let ((rest_0 (unsafe-cdr lst_0)))
37792                       (let ((fold-var_1
37793                              (let ((fold-var_1
37794                                     (cons
37795                                      (let ((app_0 (module-use-module mu_0)))
37796                                        (module-use*1.1
37797                                         app_0
37798                                         (module-use-phase mu_0)
37799                                         #f
37800                                         #f))
37801                                      fold-var_0)))
37802                                (values fold-var_1))))
37803                         (for-loop_0 fold-var_1 rest_0))))
37804                   fold-var_0))))))
37805          (for-loop_0 null mus_0)))))))
37806(define module-uses-strip-extra-inspectorsss
37807  (lambda (mu*s_0)
37808    (reverse$1
37809     (begin
37810       (letrec*
37811        ((for-loop_0
37812          (|#%name|
37813           for-loop
37814           (lambda (fold-var_0 lst_0)
37815             (begin
37816               (if (pair? lst_0)
37817                 (let ((mu*_0 (unsafe-car lst_0)))
37818                   (let ((rest_0 (unsafe-cdr lst_0)))
37819                     (let ((fold-var_1
37820                            (let ((fold-var_1
37821                                   (cons
37822                                    (let ((app_0 (module-use-module mu*_0)))
37823                                      (module-use1.1
37824                                       app_0
37825                                       (module-use-phase mu*_0)))
37826                                    fold-var_0)))
37827                              (values fold-var_1))))
37828                       (for-loop_0 fold-var_1 rest_0))))
37829                 fold-var_0))))))
37830        (for-loop_0 null mu*s_0))))))
37831(define module-uses-extract-extra-inspectorsss
37832  (lambda (mu*s_0 linklet_0 check-inlined-reference?_0 skip-n_0)
37833    (if (not check-inlined-reference?_0)
37834      (reverse$1
37835       (begin
37836         (letrec*
37837          ((for-loop_0
37838            (|#%name|
37839             for-loop
37840             (lambda (fold-var_0 lst_0)
37841               (begin
37842                 (if (pair? lst_0)
37843                   (let ((mu*_0 (unsafe-car lst_0)))
37844                     (let ((rest_0 (unsafe-cdr lst_0)))
37845                       (let ((fold-var_1
37846                              (let ((fold-var_1
37847                                     (cons
37848                                      (module-use*-extra-inspectorss mu*_0)
37849                                      fold-var_0)))
37850                                (values fold-var_1))))
37851                         (for-loop_0 fold-var_1 rest_0))))
37852                   fold-var_0))))))
37853          (for-loop_0 null mu*s_0))))
37854      (reverse$1
37855       (let ((lst_0 (list-tail (linklet-import-variables linklet_0) skip-n_0)))
37856         (begin
37857           (letrec*
37858            ((for-loop_0
37859              (|#%name|
37860               for-loop
37861               (lambda (fold-var_0 lst_1 lst_2)
37862                 (begin
37863                   (if (if (pair? lst_1) (pair? lst_2) #f)
37864                     (let ((mu*_0 (unsafe-car lst_1)))
37865                       (let ((rest_0 (unsafe-cdr lst_1)))
37866                         (let ((imports_0 (unsafe-car lst_2)))
37867                           (let ((rest_1 (unsafe-cdr lst_2)))
37868                             (let ((fold-var_1
37869                                    (let ((fold-var_1
37870                                           (cons
37871                                            (let ((extra-inspectorss_0
37872                                                   (module-use*-extra-inspectorss
37873                                                    mu*_0)))
37874                                              (begin
37875                                                (letrec*
37876                                                 ((for-loop_1
37877                                                   (|#%name|
37878                                                    for-loop
37879                                                    (lambda (extra-inspectorss_1
37880                                                             lst_3)
37881                                                      (begin
37882                                                        (if (pair? lst_3)
37883                                                          (let ((import_0
37884                                                                 (unsafe-car
37885                                                                  lst_3)))
37886                                                            (let ((rest_2
37887                                                                   (unsafe-cdr
37888                                                                    lst_3)))
37889                                                              (let ((extra-inspectorss_2
37890                                                                     (let ((extra-inspectorss_2
37891                                                                            (if (eq?
37892                                                                                 (hash-ref
37893                                                                                  extra-inspectorss_1
37894                                                                                  import_0
37895                                                                                  kw2162)
37896                                                                                 kw2162)
37897                                                                              (hash-set
37898                                                                               extra-inspectorss_1
37899                                                                               import_0
37900                                                                               (set
37901                                                                                (module-use*-self-inspector
37902                                                                                 mu*_0)))
37903                                                                              extra-inspectorss_1)))
37904                                                                       (values
37905                                                                        extra-inspectorss_2))))
37906                                                                (for-loop_1
37907                                                                 extra-inspectorss_2
37908                                                                 rest_2))))
37909                                                          extra-inspectorss_1))))))
37910                                                 (for-loop_1
37911                                                  extra-inspectorss_0
37912                                                  imports_0))))
37913                                            fold-var_0)))
37914                                      (values fold-var_1))))
37915                               (for-loop_0 fold-var_1 rest_0 rest_1))))))
37916                     fold-var_0))))))
37917            (for-loop_0 null mu*s_0 lst_0))))))))
37918(define module-use*-declaration-inspector!
37919  (lambda (mu*_0 insp_0) (set-module-use*-self-inspector! mu*_0 insp_0)))
37920(define module-use+extra-inspectors
37921  (lambda (mpi_0
37922           phase_0
37923           imports_0
37924           inspector_0
37925           extra-inspector_0
37926           extra-inspectorss_0)
37927    (let ((now-inspector_0 (current-code-inspector)))
37928      (let ((add-insp?_0
37929             (if inspector_0
37930               (inspector-superior? inspector_0 now-inspector_0)
37931               #f)))
37932        (let ((add-extra-insp?_0
37933               (if extra-inspector_0
37934                 (inspector-superior? extra-inspector_0 now-inspector_0)
37935                 #f)))
37936          (let ((new-extra-inspectorss_0
37937                 (if (if add-insp?_0 add-insp?_0 add-extra-insp?_0)
37938                   (begin
37939                     (letrec*
37940                      ((for-loop_0
37941                        (|#%name|
37942                         for-loop
37943                         (lambda (table_0 lst_0)
37944                           (begin
37945                             (if (pair? lst_0)
37946                               (let ((import_0 (unsafe-car lst_0)))
37947                                 (let ((rest_0 (unsafe-cdr lst_0)))
37948                                   (let ((table_1
37949                                          (let ((table_1
37950                                                 (call-with-values
37951                                                  (lambda ()
37952                                                    (values
37953                                                     import_0
37954                                                     (let ((extra-inspectors_0
37955                                                            (if extra-inspectorss_0
37956                                                              (hash-ref
37957                                                               extra-inspectorss_0
37958                                                               import_0
37959                                                               #f)
37960                                                              #f)))
37961                                                       (lambda (guard-insp_0)
37962                                                         (let ((or-part_0
37963                                                                (if add-insp?_0
37964                                                                  (inspector-superior?
37965                                                                   inspector_0
37966                                                                   guard-insp_0)
37967                                                                  #f)))
37968                                                           (if or-part_0
37969                                                             or-part_0
37970                                                             (let ((or-part_1
37971                                                                    (if add-extra-insp?_0
37972                                                                      (inspector-superior?
37973                                                                       extra-inspector_0
37974                                                                       guard-insp_0)
37975                                                                      #f)))
37976                                                               (if or-part_1
37977                                                                 or-part_1
37978                                                                 (extra-inspectors-allow?
37979                                                                  extra-inspectors_0
37980                                                                  guard-insp_0)))))))))
37981                                                  (case-lambda
37982                                                   ((key_0 val_0)
37983                                                    (hash-set
37984                                                     table_0
37985                                                     key_0
37986                                                     val_0))
37987                                                   (args
37988                                                    (raise-binding-result-arity-error
37989                                                     2
37990                                                     args))))))
37991                                            (values table_1))))
37992                                     (for-loop_0 table_1 rest_0))))
37993                               table_0))))))
37994                      (for-loop_0 hash2725 imports_0)))
37995                   (begin
37996                     (letrec*
37997                      ((for-loop_0
37998                        (|#%name|
37999                         for-loop
38000                         (lambda (extra-inspectorss_1 lst_0)
38001                           (begin
38002                             (if (pair? lst_0)
38003                               (let ((import_0 (unsafe-car lst_0)))
38004                                 (let ((rest_0 (unsafe-cdr lst_0)))
38005                                   (let ((extra-inspectorss_2
38006                                          (let ((extra-inspectorss_2
38007                                                 (if (hash-ref
38008                                                      extra-inspectorss_1
38009                                                      import_0
38010                                                      #f)
38011                                                   extra-inspectorss_1
38012                                                   (hash-set
38013                                                    extra-inspectorss_1
38014                                                    import_0
38015                                                    #f))))
38016                                            (values extra-inspectorss_2))))
38017                                     (for-loop_0 extra-inspectorss_2 rest_0))))
38018                               extra-inspectorss_1))))))
38019                      (for-loop_0
38020                       (if extra-inspectorss_0 extra-inspectorss_0 (seteq))
38021                       imports_0))))))
38022            (module-use*1.1 mpi_0 phase_0 new-extra-inspectorss_0 #f)))))))
38023(define module-use-merge-extra-inspectorss!
38024  (lambda (existing-mu*_0 mu*_0)
38025    (let ((existing-extra-inspectorss_0
38026           (module-use*-extra-inspectorss existing-mu*_0)))
38027      (let ((extra-inspectorss_0 (module-use*-extra-inspectorss mu*_0)))
38028        (let ((new-extra-inspectorss_0
38029               (if (not existing-extra-inspectorss_0)
38030                 extra-inspectorss_0
38031                 (if (not extra-inspectorss_0)
38032                   existing-extra-inspectorss_0
38033                   (begin
38034                     (letrec*
38035                      ((for-loop_0
38036                        (|#%name|
38037                         for-loop
38038                         (lambda (new-extra-inspectorss_0 i_0)
38039                           (begin
38040                             (if i_0
38041                               (call-with-values
38042                                (lambda ()
38043                                  (hash-iterate-key+value
38044                                   extra-inspectorss_0
38045                                   i_0))
38046                                (case-lambda
38047                                 ((sym_0 extra-inspectors_0)
38048                                  (let ((new-extra-inspectorss_1
38049                                         (let ((new-extra-inspectorss_1
38050                                                (hash-set
38051                                                 new-extra-inspectorss_0
38052                                                 sym_0
38053                                                 (extra-inspectors-merge
38054                                                  extra-inspectors_0
38055                                                  (hash-ref
38056                                                   new-extra-inspectorss_0
38057                                                   sym_0
38058                                                   (seteq))))))
38059                                           (values new-extra-inspectorss_1))))
38060                                    (for-loop_0
38061                                     new-extra-inspectorss_1
38062                                     (hash-iterate-next
38063                                      extra-inspectorss_0
38064                                      i_0))))
38065                                 (args
38066                                  (raise-binding-result-arity-error 2 args))))
38067                               new-extra-inspectorss_0))))))
38068                      (for-loop_0
38069                       existing-extra-inspectorss_0
38070                       (hash-iterate-first extra-inspectorss_0))))))))
38071          (set-module-use*-extra-inspectorss!
38072           existing-mu*_0
38073           new-extra-inspectorss_0))))))
38074(define finish_2980
38075  (make-struct-type-install-properties
38076   '(link-info)
38077   4
38078   0
38079   #f
38080   null
38081   (current-inspector)
38082   #f
38083   '(0 1 2 3)
38084   #f
38085   'link-info))
38086(define struct:link-info
38087  (make-record-type-descriptor*
38088   'link-info
38089   #f
38090   (|#%nongenerative-uid| link-info)
38091   #f
38092   #f
38093   4
38094   0))
38095(define effect_2792 (finish_2980 struct:link-info))
38096(define link-info1.1
38097  (|#%name|
38098   link-info
38099   (record-constructor
38100    (make-record-constructor-descriptor struct:link-info #f #f))))
38101(define link-info?_2751
38102  (|#%name| link-info? (record-predicate struct:link-info)))
38103(define link-info?
38104  (|#%name|
38105   link-info?
38106   (lambda (v)
38107     (if (link-info?_2751 v)
38108       #t
38109       ($value
38110        (if (impersonator? v) (link-info?_2751 (impersonator-val v)) #f))))))
38111(define link-info-link-module-uses_2350
38112  (|#%name| link-info-link-module-uses (record-accessor struct:link-info 0)))
38113(define link-info-link-module-uses
38114  (|#%name|
38115   link-info-link-module-uses
38116   (lambda (s)
38117     (if (link-info?_2751 s)
38118       (link-info-link-module-uses_2350 s)
38119       ($value
38120        (impersonate-ref
38121         link-info-link-module-uses_2350
38122         struct:link-info
38123         0
38124         s
38125         'link-info
38126         'link-module-uses))))))
38127(define link-info-imports_2277
38128  (|#%name| link-info-imports (record-accessor struct:link-info 1)))
38129(define link-info-imports
38130  (|#%name|
38131   link-info-imports
38132   (lambda (s)
38133     (if (link-info?_2751 s)
38134       (link-info-imports_2277 s)
38135       ($value
38136        (impersonate-ref
38137         link-info-imports_2277
38138         struct:link-info
38139         1
38140         s
38141         'link-info
38142         'imports))))))
38143(define link-info-extra-inspectorsss_2727
38144  (|#%name| link-info-extra-inspectorsss (record-accessor struct:link-info 2)))
38145(define link-info-extra-inspectorsss
38146  (|#%name|
38147   link-info-extra-inspectorsss
38148   (lambda (s)
38149     (if (link-info?_2751 s)
38150       (link-info-extra-inspectorsss_2727 s)
38151       ($value
38152        (impersonate-ref
38153         link-info-extra-inspectorsss_2727
38154         struct:link-info
38155         2
38156         s
38157         'link-info
38158         'extra-inspectorsss))))))
38159(define link-info-def-decls_3021
38160  (|#%name| link-info-def-decls (record-accessor struct:link-info 3)))
38161(define link-info-def-decls
38162  (|#%name|
38163   link-info-def-decls
38164   (lambda (s)
38165     (if (link-info?_2751 s)
38166       (link-info-def-decls_3021 s)
38167       ($value
38168        (impersonate-ref
38169         link-info-def-decls_3021
38170         struct:link-info
38171         3
38172         s
38173         'link-info
38174         'def-decls))))))
38175(define compile-forms.1
38176  (|#%name|
38177   compile-forms
38178   (lambda (body-import-instances3_0
38179            body-imports2_0
38180            body-suffix-forms4_0
38181            compiled-expression-callback8_0
38182            definition-callback9_0
38183            encoded-root-expand-ctx-box6_0
38184            force-phases5_0
38185            get-module-linklet-info11_0
38186            module-prompt?13_0
38187            optimize-linklet?15_0
38188            other-form-callback10_0
38189            root-ctx-only-if-syntax?7_0
38190            serializable?12_0
38191            to-correlated-linklet?14_0
38192            unsafe?-box16_0
38193            bodys32_0
38194            cctx33_0
38195            mpis34_0)
38196     (begin
38197       (let ((get-module-linklet-info_0
38198              (if (eq? get-module-linklet-info11_0 unsafe-undefined)
38199                (|#%name|
38200                 get-module-linklet-info
38201                 (lambda (mod-name_0 p_0) (begin #f)))
38202                get-module-linklet-info11_0)))
38203         (let ((phase_0 (compile-context-phase cctx33_0)))
38204           (let ((self_0 (compile-context-self cctx33_0)))
38205             (let ((syntax-literals_0 (make-syntax-literals)))
38206               (let ((phase-to-body_0 (make-hasheqv)))
38207                 (let ((add-body!_0
38208                        (|#%name|
38209                         add-body!
38210                         (lambda (phase_1 body_0)
38211                           (begin
38212                             (let ((xform_0 (lambda (l_0) (cons body_0 l_0))))
38213                               (begin-unsafe
38214                                (do-hash-update
38215                                 'hash-update!
38216                                 #t
38217                                 hash-set!
38218                                 phase-to-body_0
38219                                 phase_1
38220                                 xform_0
38221                                 null))))))))
38222                   (let ((phase-to-header_0 (make-hasheqv)))
38223                     (let ((find-or-create-header!_0
38224                            (|#%name|
38225                             find-or-create-header!
38226                             (lambda (phase_1)
38227                               (begin
38228                                 (let ((or-part_0
38229                                        (hash-ref
38230                                         phase-to-header_0
38231                                         phase_1
38232                                         #f)))
38233                                   (if or-part_0
38234                                     or-part_0
38235                                     (let ((header_0
38236                                            (make-header
38237                                             mpis34_0
38238                                             syntax-literals_0)))
38239                                       (begin
38240                                         (hash-set!
38241                                          phase-to-header_0
38242                                          phase_1
38243                                          header_0)
38244                                         header_0)))))))))
38245                       (begin
38246                         (begin
38247                           (letrec*
38248                            ((for-loop_0
38249                              (|#%name|
38250                               for-loop
38251                               (lambda (lst_0)
38252                                 (begin
38253                                   (if (pair? lst_0)
38254                                     (let ((phase_1 (unsafe-car lst_0)))
38255                                       (let ((rest_0 (unsafe-cdr lst_0)))
38256                                         (begin
38257                                           (begin
38258                                             (find-or-create-header!_0 phase_1)
38259                                             (add-body!_0 phase_1 '(void)))
38260                                           (for-loop_0 rest_0))))
38261                                     (values)))))))
38262                            (for-loop_0 force-phases5_0)))
38263                         (let ((saw-define-syntaxes?_0 #f))
38264                           (begin
38265                             (if (compile-context-module-self cctx33_0)
38266                               (letrec*
38267                                ((loop!_0
38268                                  (|#%name|
38269                                   loop!
38270                                   (lambda (bodys_0 phase_1 header_0)
38271                                     (begin
38272                                       (begin
38273                                         (begin
38274                                           (letrec*
38275                                            ((for-loop_0
38276                                              (|#%name|
38277                                               for-loop
38278                                               (lambda (lst_0)
38279                                                 (begin
38280                                                   (if (pair? lst_0)
38281                                                     (let ((body_0
38282                                                            (unsafe-car
38283                                                             lst_0)))
38284                                                       (let ((rest_0
38285                                                              (unsafe-cdr
38286                                                               lst_0)))
38287                                                         (begin
38288                                                           (if (parsed-define-values?
38289                                                                body_0)
38290                                                             (begin
38291                                                               (let ((lst_1
38292                                                                      (parsed-define-values-syms
38293                                                                       body_0)))
38294                                                                 (begin
38295                                                                   (letrec*
38296                                                                    ((for-loop_1
38297                                                                      (|#%name|
38298                                                                       for-loop
38299                                                                       (lambda (lst_2)
38300                                                                         (begin
38301                                                                           (if (pair?
38302                                                                                lst_2)
38303                                                                             (let ((sym_0
38304                                                                                    (unsafe-car
38305                                                                                     lst_2)))
38306                                                                               (let ((rest_1
38307                                                                                      (unsafe-cdr
38308                                                                                       lst_2)))
38309                                                                                 (begin
38310                                                                                   (let ((def-sym_0
38311                                                                                          (select-fresh
38312                                                                                           sym_0
38313                                                                                           header_0)))
38314                                                                                     (begin
38315                                                                                       (hash-set!
38316                                                                                        (header-binding-sym-to-define-sym
38317                                                                                         header_0)
38318                                                                                        sym_0
38319                                                                                        def-sym_0)
38320                                                                                       (set-header-binding-syms-in-order!
38321                                                                                        header_0
38322                                                                                        (cons
38323                                                                                         sym_0
38324                                                                                         (header-binding-syms-in-order
38325                                                                                          header_0)))
38326                                                                                       (begin-unsafe
38327                                                                                        (hash-set!
38328                                                                                         (header-define-and-import-syms
38329                                                                                          header_0)
38330                                                                                         def-sym_0
38331                                                                                         'defined))))
38332                                                                                   (for-loop_1
38333                                                                                    rest_1))))
38334                                                                             (values)))))))
38335                                                                    (for-loop_1
38336                                                                     lst_1))))
38337                                                               (void))
38338                                                             (if (parsed-begin-for-syntax?
38339                                                                  body_0)
38340                                                               (let ((app_0
38341                                                                      (add1
38342                                                                       phase_1)))
38343                                                                 (loop!_0
38344                                                                  (parsed-begin-for-syntax-body
38345                                                                   body_0)
38346                                                                  app_0
38347                                                                  (find-or-create-header!_0
38348                                                                   (add1
38349                                                                    phase_1))))
38350                                                               (void)))
38351                                                           (for-loop_0
38352                                                            rest_0))))
38353                                                     (values)))))))
38354                                            (for-loop_0 bodys_0)))
38355                                         (void)))))))
38356                                (loop!_0
38357                                 bodys32_0
38358                                 phase_0
38359                                 (find-or-create-header!_0 phase_0)))
38360                               (void))
38361                             (let ((as-required?_0
38362                                    (|#%name|
38363                                     as-required?
38364                                     (lambda (header_0)
38365                                       (begin
38366                                         (lambda (sym_0)
38367                                           (registered-as-required?
38368                                            header_0
38369                                            sym_0)))))))
38370                               (let ((last-i_0 (sub1 (length bodys32_0))))
38371                                 (begin
38372                                   (letrec*
38373                                    ((loop!_0
38374                                      (|#%name|
38375                                       loop!
38376                                       (lambda (bodys_0 phase_1 header_0)
38377                                         (begin
38378                                           (begin
38379                                             (begin
38380                                               (letrec*
38381                                                ((for-loop_0
38382                                                  (|#%name|
38383                                                   for-loop
38384                                                   (lambda (lst_0 pos_0)
38385                                                     (begin
38386                                                       (if (if (pair? lst_0)
38387                                                             #t
38388                                                             #f)
38389                                                         (let ((body_0
38390                                                                (unsafe-car
38391                                                                 lst_0)))
38392                                                           (let ((rest_0
38393                                                                  (unsafe-cdr
38394                                                                   lst_0)))
38395                                                             (begin
38396                                                               (if (parsed-define-values?
38397                                                                    body_0)
38398                                                                 (let ((ids_0
38399                                                                        (parsed-define-values-ids
38400                                                                         body_0)))
38401                                                                   (let ((binding-syms_0
38402                                                                          (parsed-define-values-syms
38403                                                                           body_0)))
38404                                                                     (let ((def-syms_0
38405                                                                            (if (compile-context-module-self
38406                                                                                 cctx33_0)
38407                                                                              (reverse$1
38408                                                                               (begin
38409                                                                                 (letrec*
38410                                                                                  ((for-loop_1
38411                                                                                    (|#%name|
38412                                                                                     for-loop
38413                                                                                     (lambda (fold-var_0
38414                                                                                              lst_1
38415                                                                                              lst_2)
38416                                                                                       (begin
38417                                                                                         (if (if (pair?
38418                                                                                                  lst_1)
38419                                                                                               (pair?
38420                                                                                                lst_2)
38421                                                                                               #f)
38422                                                                                           (let ((binding-sym_0
38423                                                                                                  (unsafe-car
38424                                                                                                   lst_1)))
38425                                                                                             (let ((rest_1
38426                                                                                                    (unsafe-cdr
38427                                                                                                     lst_1)))
38428                                                                                               (let ((id_0
38429                                                                                                      (unsafe-car
38430                                                                                                       lst_2)))
38431                                                                                                 (let ((rest_2
38432                                                                                                        (unsafe-cdr
38433                                                                                                         lst_2)))
38434                                                                                                   (let ((fold-var_1
38435                                                                                                          (let ((fold-var_1
38436                                                                                                                 (cons
38437                                                                                                                  (let ((app_0
38438                                                                                                                         (hash-ref
38439                                                                                                                          (header-binding-sym-to-define-sym
38440                                                                                                                           header_0)
38441                                                                                                                          binding-sym_0)))
38442                                                                                                                    (correlate-source-name
38443                                                                                                                     app_0
38444                                                                                                                     (syntax-e$1
38445                                                                                                                      id_0)))
38446                                                                                                                  fold-var_0)))
38447                                                                                                            (values
38448                                                                                                             fold-var_1))))
38449                                                                                                     (for-loop_1
38450                                                                                                      fold-var_1
38451                                                                                                      rest_1
38452                                                                                                      rest_2))))))
38453                                                                                           fold-var_0))))))
38454                                                                                  (for-loop_1
38455                                                                                   null
38456                                                                                   binding-syms_0
38457                                                                                   ids_0))))
38458                                                                              (reverse$1
38459                                                                               (begin
38460                                                                                 (letrec*
38461                                                                                  ((for-loop_1
38462                                                                                    (|#%name|
38463                                                                                     for-loop
38464                                                                                     (lambda (fold-var_0
38465                                                                                              lst_1)
38466                                                                                       (begin
38467                                                                                         (if (pair?
38468                                                                                              lst_1)
38469                                                                                           (let ((binding-sym_0
38470                                                                                                  (unsafe-car
38471                                                                                                   lst_1)))
38472                                                                                             (let ((rest_1
38473                                                                                                    (unsafe-cdr
38474                                                                                                     lst_1)))
38475                                                                                               (let ((fold-var_1
38476                                                                                                      (let ((fold-var_1
38477                                                                                                             (cons
38478                                                                                                              (let ((temp62_0
38479                                                                                                                     (compile-context-self
38480                                                                                                                      cctx33_0)))
38481                                                                                                                (register-required-variable-use!.1
38482                                                                                                                 #t
38483                                                                                                                 header_0
38484                                                                                                                 temp62_0
38485                                                                                                                 phase_1
38486                                                                                                                 binding-sym_0
38487                                                                                                                 #f))
38488                                                                                                              fold-var_0)))
38489                                                                                                        (values
38490                                                                                                         fold-var_1))))
38491                                                                                                 (for-loop_1
38492                                                                                                  fold-var_1
38493                                                                                                  rest_1))))
38494                                                                                           fold-var_0))))))
38495                                                                                  (for-loop_1
38496                                                                                   null
38497                                                                                   binding-syms_0)))))))
38498                                                                       (let ((rhs_0
38499                                                                              (let ((app_0
38500                                                                                     (if (compile-context?
38501                                                                                          cctx33_0)
38502                                                                                       (compile-context1.1
38503                                                                                        (compile-context-namespace
38504                                                                                         cctx33_0)
38505                                                                                        phase_1
38506                                                                                        (compile-context-self
38507                                                                                         cctx33_0)
38508                                                                                        (compile-context-module-self
38509                                                                                         cctx33_0)
38510                                                                                        (compile-context-full-module-name
38511                                                                                         cctx33_0)
38512                                                                                        (compile-context-lazy-syntax-literals?
38513                                                                                         cctx33_0)
38514                                                                                        header_0)
38515                                                                                       (raise-argument-error
38516                                                                                        'struct-copy
38517                                                                                        "compile-context?"
38518                                                                                        cctx33_0))))
38519                                                                                (compile$2
38520                                                                                 (parsed-define-values-rhs
38521                                                                                  body_0)
38522                                                                                 app_0
38523                                                                                 (if (=
38524                                                                                      (length
38525                                                                                       ids_0)
38526                                                                                      1)
38527                                                                                   (car
38528                                                                                    ids_0)
38529                                                                                   #f)))))
38530                                                                         (begin
38531                                                                           (|#%app|
38532                                                                            definition-callback9_0)
38533                                                                           (let ((app_0
38534                                                                                  (length
38535                                                                                   def-syms_0)))
38536                                                                             (|#%app|
38537                                                                              compiled-expression-callback8_0
38538                                                                              rhs_0
38539                                                                              app_0
38540                                                                              phase_1
38541                                                                              (as-required?_0
38542                                                                               header_0)))
38543                                                                           (add-body!_0
38544                                                                            phase_1
38545                                                                            (propagate-inline-property
38546                                                                             (correlate*
38547                                                                              (parsed-s
38548                                                                               body_0)
38549                                                                              (list
38550                                                                               'define-values
38551                                                                               def-syms_0
38552                                                                               rhs_0))
38553                                                                             (parsed-s
38554                                                                              body_0)))
38555                                                                           (if (let ((or-part_0
38556                                                                                      (compile-context-module-self
38557                                                                                       cctx33_0)))
38558                                                                                 (if or-part_0
38559                                                                                   or-part_0
38560                                                                                   (null?
38561                                                                                    ids_0)))
38562                                                                             (void)
38563                                                                             (begin
38564                                                                               (add-body!_0
38565                                                                                phase_1
38566                                                                                (list*
38567                                                                                 'if
38568                                                                                 #f
38569                                                                                 (list*
38570                                                                                  'begin
38571                                                                                  (reverse$1
38572                                                                                   (begin
38573                                                                                     (letrec*
38574                                                                                      ((for-loop_1
38575                                                                                        (|#%name|
38576                                                                                         for-loop
38577                                                                                         (lambda (fold-var_0
38578                                                                                                  lst_1)
38579                                                                                           (begin
38580                                                                                             (if (pair?
38581                                                                                                  lst_1)
38582                                                                                               (let ((def-sym_0
38583                                                                                                      (unsafe-car
38584                                                                                                       lst_1)))
38585                                                                                                 (let ((rest_1
38586                                                                                                        (unsafe-cdr
38587                                                                                                         lst_1)))
38588                                                                                                   (let ((fold-var_1
38589                                                                                                          (cons
38590                                                                                                           (list*
38591                                                                                                            'set!
38592                                                                                                            def-sym_0
38593                                                                                                            '(#f))
38594                                                                                                           fold-var_0)))
38595                                                                                                     (let ((fold-var_2
38596                                                                                                            (values
38597                                                                                                             fold-var_1)))
38598                                                                                                       (for-loop_1
38599                                                                                                        fold-var_2
38600                                                                                                        rest_1)))))
38601                                                                                               fold-var_0))))))
38602                                                                                      (for-loop_1
38603                                                                                       null
38604                                                                                       def-syms_0)))))
38605                                                                                 '((void))))
38606                                                                               (add-body!_0
38607                                                                                phase_1
38608                                                                                (compile-top-level-bind
38609                                                                                 ids_0
38610                                                                                 binding-syms_0
38611                                                                                 (if (compile-context?
38612                                                                                      cctx33_0)
38613                                                                                   (compile-context1.1
38614                                                                                    (compile-context-namespace
38615                                                                                     cctx33_0)
38616                                                                                    phase_1
38617                                                                                    (compile-context-self
38618                                                                                     cctx33_0)
38619                                                                                    (compile-context-module-self
38620                                                                                     cctx33_0)
38621                                                                                    (compile-context-full-module-name
38622                                                                                     cctx33_0)
38623                                                                                    (compile-context-lazy-syntax-literals?
38624                                                                                     cctx33_0)
38625                                                                                    header_0)
38626                                                                                   (raise-argument-error
38627                                                                                    'struct-copy
38628                                                                                    "compile-context?"
38629                                                                                    cctx33_0))
38630                                                                                 #f)))))))))
38631                                                                 (if (parsed-define-syntaxes?
38632                                                                      body_0)
38633                                                                   (let ((ids_0
38634                                                                          (parsed-define-syntaxes-ids
38635                                                                           body_0)))
38636                                                                     (let ((binding-syms_0
38637                                                                            (parsed-define-syntaxes-syms
38638                                                                             body_0)))
38639                                                                       (let ((next-header_0
38640                                                                              (find-or-create-header!_0
38641                                                                               (add1
38642                                                                                phase_1))))
38643                                                                         (let ((gen-syms_0
38644                                                                                (reverse$1
38645                                                                                 (begin
38646                                                                                   (letrec*
38647                                                                                    ((for-loop_1
38648                                                                                      (|#%name|
38649                                                                                       for-loop
38650                                                                                       (lambda (fold-var_0
38651                                                                                                lst_1)
38652                                                                                         (begin
38653                                                                                           (if (pair?
38654                                                                                                lst_1)
38655                                                                                             (let ((binding-sym_0
38656                                                                                                    (unsafe-car
38657                                                                                                     lst_1)))
38658                                                                                               (let ((rest_1
38659                                                                                                      (unsafe-cdr
38660                                                                                                       lst_1)))
38661                                                                                                 (let ((fold-var_1
38662                                                                                                        (let ((fold-var_1
38663                                                                                                               (cons
38664                                                                                                                (let ((gen-sym_0
38665                                                                                                                       (select-fresh
38666                                                                                                                        binding-sym_0
38667                                                                                                                        next-header_0)))
38668                                                                                                                  (begin
38669                                                                                                                    (begin-unsafe
38670                                                                                                                     (hash-set!
38671                                                                                                                      (header-define-and-import-syms
38672                                                                                                                       next-header_0)
38673                                                                                                                      gen-sym_0
38674                                                                                                                      'defined))
38675                                                                                                                    gen-sym_0))
38676                                                                                                                fold-var_0)))
38677                                                                                                          (values
38678                                                                                                           fold-var_1))))
38679                                                                                                   (for-loop_1
38680                                                                                                    fold-var_1
38681                                                                                                    rest_1))))
38682                                                                                             fold-var_0))))))
38683                                                                                    (for-loop_1
38684                                                                                     null
38685                                                                                     binding-syms_0))))))
38686                                                                           (let ((rhs_0
38687                                                                                  (compile$2
38688                                                                                   (parsed-define-syntaxes-rhs
38689                                                                                    body_0)
38690                                                                                   (if (compile-context?
38691                                                                                        cctx33_0)
38692                                                                                     (let ((phase71_0
38693                                                                                            (add1
38694                                                                                             phase_1)))
38695                                                                                       (compile-context1.1
38696                                                                                        (compile-context-namespace
38697                                                                                         cctx33_0)
38698                                                                                        phase71_0
38699                                                                                        (compile-context-self
38700                                                                                         cctx33_0)
38701                                                                                        (compile-context-module-self
38702                                                                                         cctx33_0)
38703                                                                                        (compile-context-full-module-name
38704                                                                                         cctx33_0)
38705                                                                                        (compile-context-lazy-syntax-literals?
38706                                                                                         cctx33_0)
38707                                                                                        next-header_0))
38708                                                                                     (raise-argument-error
38709                                                                                      'struct-copy
38710                                                                                      "compile-context?"
38711                                                                                      cctx33_0)))))
38712                                                                             (begin
38713                                                                               (|#%app|
38714                                                                                definition-callback9_0)
38715                                                                               (begin
38716                                                                                 (let ((app_0
38717                                                                                        (length
38718                                                                                         gen-syms_0)))
38719                                                                                   (let ((app_1
38720                                                                                          (add1
38721                                                                                           phase_1)))
38722                                                                                     (|#%app|
38723                                                                                      compiled-expression-callback8_0
38724                                                                                      rhs_0
38725                                                                                      app_0
38726                                                                                      app_1
38727                                                                                      (as-required?_0
38728                                                                                       header_0))))
38729                                                                                 (let ((transformer-set!s_0
38730                                                                                        (reverse$1
38731                                                                                         (begin
38732                                                                                           (letrec*
38733                                                                                            ((for-loop_1
38734                                                                                              (|#%name|
38735                                                                                               for-loop
38736                                                                                               (lambda (fold-var_0
38737                                                                                                        lst_1
38738                                                                                                        lst_2)
38739                                                                                                 (begin
38740                                                                                                   (if (if (pair?
38741                                                                                                            lst_1)
38742                                                                                                         (pair?
38743                                                                                                          lst_2)
38744                                                                                                         #f)
38745                                                                                                     (let ((binding-sym_0
38746                                                                                                            (unsafe-car
38747                                                                                                             lst_1)))
38748                                                                                                       (let ((rest_1
38749                                                                                                              (unsafe-cdr
38750                                                                                                               lst_1)))
38751                                                                                                         (let ((gen-sym_0
38752                                                                                                                (unsafe-car
38753                                                                                                                 lst_2)))
38754                                                                                                           (let ((rest_2
38755                                                                                                                  (unsafe-cdr
38756                                                                                                                   lst_2)))
38757                                                                                                             (let ((fold-var_1
38758                                                                                                                    (cons
38759                                                                                                                     (list
38760                                                                                                                      set-transformer!-id
38761                                                                                                                      (list
38762                                                                                                                       'quote
38763                                                                                                                       binding-sym_0)
38764                                                                                                                      gen-sym_0)
38765                                                                                                                     fold-var_0)))
38766                                                                                                               (let ((fold-var_2
38767                                                                                                                      (values
38768                                                                                                                       fold-var_1)))
38769                                                                                                                 (for-loop_1
38770                                                                                                                  fold-var_2
38771                                                                                                                  rest_1
38772                                                                                                                  rest_2)))))))
38773                                                                                                     fold-var_0))))))
38774                                                                                            (for-loop_1
38775                                                                                             null
38776                                                                                             binding-syms_0
38777                                                                                             gen-syms_0))))))
38778                                                                                   (begin
38779                                                                                     (if (compile-context-module-self
38780                                                                                          cctx33_0)
38781                                                                                       (let ((app_0
38782                                                                                              (add1
38783                                                                                               phase_1)))
38784                                                                                         (add-body!_0
38785                                                                                          app_0
38786                                                                                          (let ((app_1
38787                                                                                                 (list
38788                                                                                                  (list
38789                                                                                                   gen-syms_0
38790                                                                                                   rhs_0))))
38791                                                                                            (list
38792                                                                                             'let-values
38793                                                                                             app_1
38794                                                                                             (list*
38795                                                                                              'begin
38796                                                                                              (qq-append
38797                                                                                               transformer-set!s_0
38798                                                                                               '((void))))))))
38799                                                                                       (let ((app_0
38800                                                                                              (add1
38801                                                                                               phase_1)))
38802                                                                                         (add-body!_0
38803                                                                                          app_0
38804                                                                                          (generate-top-level-define-syntaxes
38805                                                                                           gen-syms_0
38806                                                                                           rhs_0
38807                                                                                           transformer-set!s_0
38808                                                                                           (compile-top-level-bind
38809                                                                                            ids_0
38810                                                                                            binding-syms_0
38811                                                                                            (if (compile-context?
38812                                                                                                 cctx33_0)
38813                                                                                              (compile-context1.1
38814                                                                                               (compile-context-namespace
38815                                                                                                cctx33_0)
38816                                                                                               phase_1
38817                                                                                               (compile-context-self
38818                                                                                                cctx33_0)
38819                                                                                               (compile-context-module-self
38820                                                                                                cctx33_0)
38821                                                                                               (compile-context-full-module-name
38822                                                                                                cctx33_0)
38823                                                                                               (compile-context-lazy-syntax-literals?
38824                                                                                                cctx33_0)
38825                                                                                               header_0)
38826                                                                                              (raise-argument-error
38827                                                                                               'struct-copy
38828                                                                                               "compile-context?"
38829                                                                                               cctx33_0))
38830                                                                                            gen-syms_0)))))
38831                                                                                     (set! saw-define-syntaxes?_0
38832                                                                                       #t))))))))))
38833                                                                   (if (parsed-begin-for-syntax?
38834                                                                        body_0)
38835                                                                     (let ((app_0
38836                                                                            (add1
38837                                                                             phase_1)))
38838                                                                       (loop!_0
38839                                                                        (parsed-begin-for-syntax-body
38840                                                                         body_0)
38841                                                                        app_0
38842                                                                        (find-or-create-header!_0
38843                                                                         (add1
38844                                                                          phase_1))))
38845                                                                     (if (let ((or-part_0
38846                                                                                (|parsed-#%declare?|
38847                                                                                 body_0)))
38848                                                                           (if or-part_0
38849                                                                             or-part_0
38850                                                                             (let ((or-part_1
38851                                                                                    (parsed-module?
38852                                                                                     body_0)))
38853                                                                               (if or-part_1
38854                                                                                 or-part_1
38855                                                                                 (parsed-require?
38856                                                                                  body_0)))))
38857                                                                       (let ((e_0
38858                                                                              (|#%app|
38859                                                                               other-form-callback10_0
38860                                                                               body_0
38861                                                                               (if (compile-context?
38862                                                                                    cctx33_0)
38863                                                                                 (compile-context1.1
38864                                                                                  (compile-context-namespace
38865                                                                                   cctx33_0)
38866                                                                                  phase_1
38867                                                                                  (compile-context-self
38868                                                                                   cctx33_0)
38869                                                                                  (compile-context-module-self
38870                                                                                   cctx33_0)
38871                                                                                  (compile-context-full-module-name
38872                                                                                   cctx33_0)
38873                                                                                  (compile-context-lazy-syntax-literals?
38874                                                                                   cctx33_0)
38875                                                                                  header_0)
38876                                                                                 (raise-argument-error
38877                                                                                  'struct-copy
38878                                                                                  "compile-context?"
38879                                                                                  cctx33_0)))))
38880                                                                         (if e_0
38881                                                                           (begin
38882                                                                             (|#%app|
38883                                                                              compiled-expression-callback8_0
38884                                                                              e_0
38885                                                                              #f
38886                                                                              phase_1
38887                                                                              (as-required?_0
38888                                                                               header_0))
38889                                                                             (add-body!_0
38890                                                                              phase_1
38891                                                                              e_0))
38892                                                                           (void)))
38893                                                                       (let ((e_0
38894                                                                              (let ((app_0
38895                                                                                     (if (compile-context?
38896                                                                                          cctx33_0)
38897                                                                                       (compile-context1.1
38898                                                                                        (compile-context-namespace
38899                                                                                         cctx33_0)
38900                                                                                        phase_1
38901                                                                                        (compile-context-self
38902                                                                                         cctx33_0)
38903                                                                                        (compile-context-module-self
38904                                                                                         cctx33_0)
38905                                                                                        (compile-context-full-module-name
38906                                                                                         cctx33_0)
38907                                                                                        (compile-context-lazy-syntax-literals?
38908                                                                                         cctx33_0)
38909                                                                                        header_0)
38910                                                                                       (raise-argument-error
38911                                                                                        'struct-copy
38912                                                                                        "compile-context?"
38913                                                                                        cctx33_0))))
38914                                                                                (compile$2
38915                                                                                 body_0
38916                                                                                 app_0
38917                                                                                 #f
38918                                                                                 (=
38919                                                                                  pos_0
38920                                                                                  last-i_0)))))
38921                                                                         (begin
38922                                                                           (|#%app|
38923                                                                            compiled-expression-callback8_0
38924                                                                            e_0
38925                                                                            #f
38926                                                                            phase_1
38927                                                                            (as-required?_0
38928                                                                             header_0))
38929                                                                           (add-body!_0
38930                                                                            phase_1
38931                                                                            e_0)))))))
38932                                                               (for-loop_0
38933                                                                rest_0
38934                                                                (+ pos_0 1)))))
38935                                                         (values)))))))
38936                                                (for-loop_0 bodys_0 0)))
38937                                             (void)))))))
38938                                    (loop!_0
38939                                     bodys32_0
38940                                     phase_0
38941                                     (find-or-create-header!_0 phase_0)))
38942                                   (let ((encoded-root-expand-pos_0
38943                                          (if encoded-root-expand-ctx-box6_0
38944                                            (if (unbox
38945                                                 encoded-root-expand-ctx-box6_0)
38946                                              (if (not
38947                                                   (if root-ctx-only-if-syntax?7_0
38948                                                     (if (not
38949                                                          saw-define-syntaxes?_0)
38950                                                       (begin-unsafe
38951                                                        (null?
38952                                                         (syntax-literals-stxes
38953                                                          syntax-literals_0)))
38954                                                       #f)
38955                                                     #f))
38956                                                (add-syntax-literal!
38957                                                 syntax-literals_0
38958                                                 (unbox
38959                                                  encoded-root-expand-ctx-box6_0))
38960                                                #f)
38961                                              #f)
38962                                            #f)))
38963                                     (let ((phases-in-order_0
38964                                            (let ((temp79_0
38965                                                   (hash-keys
38966                                                    phase-to-body_0)))
38967                                              (sort.1 #f #f temp79_0 <))))
38968                                       (let ((min-phase_0
38969                                              (if (pair? phases-in-order_0)
38970                                                (car phases-in-order_0)
38971                                                phase_0)))
38972                                         (let ((max-phase_0
38973                                                (if (pair? phases-in-order_0)
38974                                                  (car
38975                                                   (reverse$1
38976                                                    phases-in-order_0))
38977                                                  phase_0)))
38978                                           (let ((phase-to-link-info_0
38979                                                  (begin
38980                                                    (letrec*
38981                                                     ((for-loop_0
38982                                                       (|#%name|
38983                                                        for-loop
38984                                                        (lambda (table_0 lst_0)
38985                                                          (begin
38986                                                            (if (pair? lst_0)
38987                                                              (let ((phase_1
38988                                                                     (unsafe-car
38989                                                                      lst_0)))
38990                                                                (let ((rest_0
38991                                                                       (unsafe-cdr
38992                                                                        lst_0)))
38993                                                                  (let ((table_1
38994                                                                         (let ((table_1
38995                                                                                (call-with-values
38996                                                                                 (lambda ()
38997                                                                                   (let ((header_0
38998                                                                                          (hash-ref
38999                                                                                           phase-to-header_0
39000                                                                                           phase_1
39001                                                                                           #f)))
39002                                                                                     (call-with-values
39003                                                                                      (lambda ()
39004                                                                                        (generate-links+imports
39005                                                                                         header_0
39006                                                                                         phase_1
39007                                                                                         cctx33_0
39008                                                                                         optimize-linklet?15_0))
39009                                                                                      (case-lambda
39010                                                                                       ((link-module-uses_0
39011                                                                                         imports_0
39012                                                                                         extra-inspectorsss_0
39013                                                                                         def-decls_0)
39014                                                                                        (values
39015                                                                                         phase_1
39016                                                                                         (link-info1.1
39017                                                                                          link-module-uses_0
39018                                                                                          imports_0
39019                                                                                          extra-inspectorsss_0
39020                                                                                          def-decls_0)))
39021                                                                                       (args
39022                                                                                        (raise-binding-result-arity-error
39023                                                                                         4
39024                                                                                         args))))))
39025                                                                                 (case-lambda
39026                                                                                  ((key_0
39027                                                                                    val_0)
39028                                                                                   (hash-set
39029                                                                                    table_0
39030                                                                                    key_0
39031                                                                                    val_0))
39032                                                                                  (args
39033                                                                                   (raise-binding-result-arity-error
39034                                                                                    2
39035                                                                                    args))))))
39036                                                                           (values
39037                                                                            table_1))))
39038                                                                    (for-loop_0
39039                                                                     table_1
39040                                                                     rest_0))))
39041                                                              table_0))))))
39042                                                     (for-loop_0
39043                                                      hash2725
39044                                                      phases-in-order_0)))))
39045                                             (let ((body-linklets+module-use*s_0
39046                                                    (begin
39047                                                      (letrec*
39048                                                       ((for-loop_0
39049                                                         (|#%name|
39050                                                          for-loop
39051                                                          (lambda (table_0
39052                                                                   lst_0)
39053                                                            (begin
39054                                                              (if (pair? lst_0)
39055                                                                (let ((phase_1
39056                                                                       (unsafe-car
39057                                                                        lst_0)))
39058                                                                  (let ((rest_0
39059                                                                         (unsafe-cdr
39060                                                                          lst_0)))
39061                                                                    (let ((table_1
39062                                                                           (let ((table_1
39063                                                                                  (call-with-values
39064                                                                                   (lambda ()
39065                                                                                     (let ((bodys_0
39066                                                                                            (hash-ref
39067                                                                                             phase-to-body_0
39068                                                                                             phase_1)))
39069                                                                                       (let ((li_0
39070                                                                                              (hash-ref
39071                                                                                               phase-to-link-info_0
39072                                                                                               phase_1)))
39073                                                                                         (let ((binding-sym-to-define-sym_0
39074                                                                                                (header-binding-sym-to-define-sym
39075                                                                                                 (hash-ref
39076                                                                                                  phase-to-header_0
39077                                                                                                  phase_1))))
39078                                                                                           (let ((module-use*s_0
39079                                                                                                  (let ((app_0
39080                                                                                                         (link-info-link-module-uses
39081                                                                                                          li_0)))
39082                                                                                                    (module-uses-add-extra-inspectorsss
39083                                                                                                     app_0
39084                                                                                                     (link-info-extra-inspectorsss
39085                                                                                                      li_0)))))
39086                                                                                             (let ((body-linklet_0
39087                                                                                                    (let ((app_0
39088                                                                                                           (qq-append
39089                                                                                                            body-imports2_0
39090                                                                                                            (link-info-imports
39091                                                                                                             li_0))))
39092                                                                                                      (let ((app_1
39093                                                                                                             (let ((app_1
39094                                                                                                                    (link-info-def-decls
39095                                                                                                                     li_0)))
39096                                                                                                               (qq-append
39097                                                                                                                app_1
39098                                                                                                                (reverse$1
39099                                                                                                                 (let ((lst_1
39100                                                                                                                        (header-binding-syms-in-order
39101                                                                                                                         (hash-ref
39102                                                                                                                          phase-to-header_0
39103                                                                                                                          phase_1))))
39104                                                                                                                   (begin
39105                                                                                                                     (letrec*
39106                                                                                                                      ((for-loop_1
39107                                                                                                                        (|#%name|
39108                                                                                                                         for-loop
39109                                                                                                                         (lambda (fold-var_0
39110                                                                                                                                  lst_2)
39111                                                                                                                           (begin
39112                                                                                                                             (if (pair?
39113                                                                                                                                  lst_2)
39114                                                                                                                               (let ((binding-sym_0
39115                                                                                                                                      (unsafe-car
39116                                                                                                                                       lst_2)))
39117                                                                                                                                 (let ((rest_1
39118                                                                                                                                        (unsafe-cdr
39119                                                                                                                                         lst_2)))
39120                                                                                                                                   (let ((fold-var_1
39121                                                                                                                                          (let ((fold-var_1
39122                                                                                                                                                 (cons
39123                                                                                                                                                  (let ((def-sym_0
39124                                                                                                                                                         (hash-ref
39125                                                                                                                                                          binding-sym-to-define-sym_0
39126                                                                                                                                                          binding-sym_0)))
39127                                                                                                                                                    (if (eq?
39128                                                                                                                                                         def-sym_0
39129                                                                                                                                                         binding-sym_0)
39130                                                                                                                                                      def-sym_0
39131                                                                                                                                                      (list
39132                                                                                                                                                       def-sym_0
39133                                                                                                                                                       binding-sym_0)))
39134                                                                                                                                                  fold-var_0)))
39135                                                                                                                                            (values
39136                                                                                                                                             fold-var_1))))
39137                                                                                                                                     (for-loop_1
39138                                                                                                                                      fold-var_1
39139                                                                                                                                      rest_1))))
39140                                                                                                                               fold-var_0))))))
39141                                                                                                                      (for-loop_1
39142                                                                                                                       null
39143                                                                                                                       lst_1)))))))))
39144                                                                                                        (list*
39145                                                                                                         'linklet
39146                                                                                                         app_0
39147                                                                                                         app_1
39148                                                                                                         (qq-append
39149                                                                                                          (reverse$1
39150                                                                                                           bodys_0)
39151                                                                                                          body-suffix-forms4_0))))))
39152                                                                                               (call-with-values
39153                                                                                                (lambda ()
39154                                                                                                  (if to-correlated-linklet?14_0
39155                                                                                                    (values
39156                                                                                                     (begin-unsafe
39157                                                                                                      (correlated-linklet1.1
39158                                                                                                       body-linklet_0
39159                                                                                                       'module
39160                                                                                                       #f))
39161                                                                                                     module-use*s_0)
39162                                                                                                    (let ((temp89_0
39163                                                                                                           (if unsafe?-box16_0
39164                                                                                                             (unbox
39165                                                                                                              unsafe?-box16_0)
39166                                                                                                             #f)))
39167                                                                                                      (let ((temp91_0
39168                                                                                                             (compile-context-namespace
39169                                                                                                              cctx33_0)))
39170                                                                                                        (let ((temp89_1
39171                                                                                                               temp89_0))
39172                                                                                                          (compile-module-linklet.1
39173                                                                                                           body-import-instances3_0
39174                                                                                                           body-imports2_0
39175                                                                                                           unsafe-undefined
39176                                                                                                           get-module-linklet-info_0
39177                                                                                                           #f
39178                                                                                                           module-prompt?13_0
39179                                                                                                           module-use*s_0
39180                                                                                                           temp91_0
39181                                                                                                           optimize-linklet?15_0
39182                                                                                                           serializable?12_0
39183                                                                                                           temp89_1
39184                                                                                                           body-linklet_0))))))
39185                                                                                                (case-lambda
39186                                                                                                 ((linklet_0
39187                                                                                                   new-module-use*s_0)
39188                                                                                                  (values
39189                                                                                                   phase_1
39190                                                                                                   (cons
39191                                                                                                    linklet_0
39192                                                                                                    new-module-use*s_0)))
39193                                                                                                 (args
39194                                                                                                  (raise-binding-result-arity-error
39195                                                                                                   2
39196                                                                                                   args))))))))))
39197                                                                                   (case-lambda
39198                                                                                    ((key_0
39199                                                                                      val_0)
39200                                                                                     (hash-set
39201                                                                                      table_0
39202                                                                                      key_0
39203                                                                                      val_0))
39204                                                                                    (args
39205                                                                                     (raise-binding-result-arity-error
39206                                                                                      2
39207                                                                                      args))))))
39208                                                                             (values
39209                                                                              table_1))))
39210                                                                      (for-loop_0
39211                                                                       table_1
39212                                                                       rest_0))))
39213                                                                table_0))))))
39214                                                       (for-loop_0
39215                                                        hash2610
39216                                                        phases-in-order_0)))))
39217                                               (let ((body-linklets_0
39218                                                      (begin
39219                                                        (letrec*
39220                                                         ((for-loop_0
39221                                                           (|#%name|
39222                                                            for-loop
39223                                                            (lambda (table_0
39224                                                                     i_0)
39225                                                              (begin
39226                                                                (if i_0
39227                                                                  (call-with-values
39228                                                                   (lambda ()
39229                                                                     (hash-iterate-key+value
39230                                                                      body-linklets+module-use*s_0
39231                                                                      i_0))
39232                                                                   (case-lambda
39233                                                                    ((phase_1
39234                                                                      l+mu*s_0)
39235                                                                     (let ((table_1
39236                                                                            (let ((table_1
39237                                                                                   (call-with-values
39238                                                                                    (lambda ()
39239                                                                                      (values
39240                                                                                       phase_1
39241                                                                                       (car
39242                                                                                        l+mu*s_0)))
39243                                                                                    (case-lambda
39244                                                                                     ((key_0
39245                                                                                       val_0)
39246                                                                                      (hash-set
39247                                                                                       table_0
39248                                                                                       key_0
39249                                                                                       val_0))
39250                                                                                     (args
39251                                                                                      (raise-binding-result-arity-error
39252                                                                                       2
39253                                                                                       args))))))
39254                                                                              (values
39255                                                                               table_1))))
39256                                                                       (for-loop_0
39257                                                                        table_1
39258                                                                        (hash-iterate-next
39259                                                                         body-linklets+module-use*s_0
39260                                                                         i_0))))
39261                                                                    (args
39262                                                                     (raise-binding-result-arity-error
39263                                                                      2
39264                                                                      args))))
39265                                                                  table_0))))))
39266                                                         (for-loop_0
39267                                                          hash2610
39268                                                          (hash-iterate-first
39269                                                           body-linklets+module-use*s_0))))))
39270                                                 (let ((phase-to-link-module-uses_0
39271                                                        (begin
39272                                                          (letrec*
39273                                                           ((for-loop_0
39274                                                             (|#%name|
39275                                                              for-loop
39276                                                              (lambda (table_0
39277                                                                       i_0)
39278                                                                (begin
39279                                                                  (if i_0
39280                                                                    (call-with-values
39281                                                                     (lambda ()
39282                                                                       (hash-iterate-key+value
39283                                                                        body-linklets+module-use*s_0
39284                                                                        i_0))
39285                                                                     (case-lambda
39286                                                                      ((phase_1
39287                                                                        l+mu*s_0)
39288                                                                       (let ((table_1
39289                                                                              (let ((table_1
39290                                                                                     (call-with-values
39291                                                                                      (lambda ()
39292                                                                                        (values
39293                                                                                         phase_1
39294                                                                                         (module-uses-strip-extra-inspectorsss
39295                                                                                          (cdr
39296                                                                                           l+mu*s_0))))
39297                                                                                      (case-lambda
39298                                                                                       ((key_0
39299                                                                                         val_0)
39300                                                                                        (hash-set
39301                                                                                         table_0
39302                                                                                         key_0
39303                                                                                         val_0))
39304                                                                                       (args
39305                                                                                        (raise-binding-result-arity-error
39306                                                                                         2
39307                                                                                         args))))))
39308                                                                                (values
39309                                                                                 table_1))))
39310                                                                         (for-loop_0
39311                                                                          table_1
39312                                                                          (hash-iterate-next
39313                                                                           body-linklets+module-use*s_0
39314                                                                           i_0))))
39315                                                                      (args
39316                                                                       (raise-binding-result-arity-error
39317                                                                        2
39318                                                                        args))))
39319                                                                    table_0))))))
39320                                                           (for-loop_0
39321                                                            hash2610
39322                                                            (hash-iterate-first
39323                                                             body-linklets+module-use*s_0))))))
39324                                                   (let ((phase-to-link-module-uses-expr_0
39325                                                          (serialize-phase-to-link-module-uses
39326                                                           phase-to-link-module-uses_0
39327                                                           mpis34_0)))
39328                                                     (let ((phase-to-link-extra-inspectorsss_0
39329                                                            (begin
39330                                                              (letrec*
39331                                                               ((for-loop_0
39332                                                                 (|#%name|
39333                                                                  for-loop
39334                                                                  (lambda (table_0
39335                                                                           i_0)
39336                                                                    (begin
39337                                                                      (if i_0
39338                                                                        (call-with-values
39339                                                                         (lambda ()
39340                                                                           (hash-iterate-key+value
39341                                                                            body-linklets+module-use*s_0
39342                                                                            i_0))
39343                                                                         (case-lambda
39344                                                                          ((phase_1
39345                                                                            l+mu*s_0)
39346                                                                           (let ((table_1
39347                                                                                  (let ((id*_0
39348                                                                                         (let ((app_0
39349                                                                                                (cdr
39350                                                                                                 l+mu*s_0)))
39351                                                                                           (let ((app_1
39352                                                                                                  (car
39353                                                                                                   l+mu*s_0)))
39354                                                                                             (let ((app_2
39355                                                                                                    (if optimize-linklet?15_0
39356                                                                                                      (not
39357                                                                                                       to-correlated-linklet?14_0)
39358                                                                                                      #f)))
39359                                                                                               (module-uses-extract-extra-inspectorsss
39360                                                                                                app_0
39361                                                                                                app_1
39362                                                                                                app_2
39363                                                                                                (length
39364                                                                                                 body-imports2_0)))))))
39365                                                                                    (begin
39366                                                                                      #t
39367                                                                                      (letrec*
39368                                                                                       ((for-loop_1
39369                                                                                         (|#%name|
39370                                                                                          for-loop
39371                                                                                          (lambda (table_1)
39372                                                                                            (begin
39373                                                                                              (let ((table_2
39374                                                                                                     (if id*_0
39375                                                                                                       (let ((table_2
39376                                                                                                              (call-with-values
39377                                                                                                               (lambda ()
39378                                                                                                                 (values
39379                                                                                                                  phase_1
39380                                                                                                                  id*_0))
39381                                                                                                               (case-lambda
39382                                                                                                                ((key_0
39383                                                                                                                  val_0)
39384                                                                                                                 (hash-set
39385                                                                                                                  table_1
39386                                                                                                                  key_0
39387                                                                                                                  val_0))
39388                                                                                                                (args
39389                                                                                                                 (raise-binding-result-arity-error
39390                                                                                                                  2
39391                                                                                                                  args))))))
39392                                                                                                         (values
39393                                                                                                          table_2))
39394                                                                                                       table_1)))
39395                                                                                                table_2))))))
39396                                                                                       (for-loop_1
39397                                                                                        table_0))))))
39398                                                                             (for-loop_0
39399                                                                              table_1
39400                                                                              (hash-iterate-next
39401                                                                               body-linklets+module-use*s_0
39402                                                                               i_0))))
39403                                                                          (args
39404                                                                           (raise-binding-result-arity-error
39405                                                                            2
39406                                                                            args))))
39407                                                                        table_0))))))
39408                                                               (for-loop_0
39409                                                                hash2725
39410                                                                (hash-iterate-first
39411                                                                 body-linklets+module-use*s_0))))))
39412                                                       (values
39413                                                        body-linklets_0
39414                                                        min-phase_0
39415                                                        max-phase_0
39416                                                        phase-to-link-module-uses_0
39417                                                        phase-to-link-module-uses-expr_0
39418                                                        phase-to-link-extra-inspectorsss_0
39419                                                        syntax-literals_0
39420                                                        encoded-root-expand-pos_0)))))))))))))))))))))))))))))
39421(define compile-top-level-bind
39422  (lambda (ids_0 binding-syms_0 cctx_0 trans-exprs_0)
39423    (let ((phase_0 (compile-context-phase cctx_0)))
39424      (let ((self_0 (compile-context-self cctx_0)))
39425        (let ((header_0 (compile-context-header cctx_0)))
39426          (let ((mpis_0 (header-module-path-indexes header_0)))
39427            (let ((top-level-bind-scope_0
39428                   (let ((v_0
39429                          (namespace-get-root-expand-ctx
39430                           (compile-context-namespace cctx_0))))
39431                     (begin-unsafe
39432                      (root-expand-context/inner-top-level-bind-scope
39433                       (root-expand-context/outer-inner v_0))))))
39434              (let ((self-expr_0 (add-module-path-index! mpis_0 self_0)))
39435                (list*
39436                 'begin
39437                 (reverse$1
39438                  (let ((lst_0
39439                         (if trans-exprs_0
39440                           trans-exprs_0
39441                           (reverse$1
39442                            (begin
39443                              (letrec*
39444                               ((for-loop_0
39445                                 (|#%name|
39446                                  for-loop
39447                                  (lambda (fold-var_0 lst_0)
39448                                    (begin
39449                                      (if (pair? lst_0)
39450                                        (let ((id_0 (unsafe-car lst_0)))
39451                                          (let ((rest_0 (unsafe-cdr lst_0)))
39452                                            (let ((fold-var_1
39453                                                   (cons ''#f fold-var_0)))
39454                                              (let ((fold-var_2
39455                                                     (values fold-var_1)))
39456                                                (for-loop_0
39457                                                 fold-var_2
39458                                                 rest_0)))))
39459                                        fold-var_0))))))
39460                               (for-loop_0 null ids_0)))))))
39461                    (begin
39462                      (letrec*
39463                       ((for-loop_0
39464                         (|#%name|
39465                          for-loop
39466                          (lambda (fold-var_0 lst_1 lst_2 lst_3)
39467                            (begin
39468                              (if (if (pair? lst_1)
39469                                    (if (pair? lst_2) (pair? lst_3) #f)
39470                                    #f)
39471                                (let ((id_0 (unsafe-car lst_1)))
39472                                  (let ((rest_0 (unsafe-cdr lst_1)))
39473                                    (let ((binding-sym_0 (unsafe-car lst_2)))
39474                                      (let ((rest_1 (unsafe-cdr lst_2)))
39475                                        (let ((trans-expr_0
39476                                               (unsafe-car lst_3)))
39477                                          (let ((rest_2 (unsafe-cdr lst_3)))
39478                                            (let ((fold-var_1
39479                                                   (let ((fold-var_1
39480                                                          (cons
39481                                                           (let ((id-stx_0
39482                                                                  (compile-quote-syntax
39483                                                                   (remove-scope
39484                                                                    id_0
39485                                                                    top-level-bind-scope_0)
39486                                                                   cctx_0)))
39487                                                             (let ((app_0
39488                                                                    (list
39489                                                                     'quote
39490                                                                     binding-sym_0)))
39491                                                               (list
39492                                                                top-level-bind!-id
39493                                                                id-stx_0
39494                                                                self-expr_0
39495                                                                phase_0
39496                                                                phase-shift-id
39497                                                                ns-id
39498                                                                app_0
39499                                                                (if trans-exprs_0
39500                                                                  #t
39501                                                                  #f)
39502                                                                trans-expr_0)))
39503                                                           fold-var_0)))
39504                                                     (values fold-var_1))))
39505                                              (for-loop_0
39506                                               fold-var_1
39507                                               rest_0
39508                                               rest_1
39509                                               rest_2))))))))
39510                                fold-var_0))))))
39511                       (for-loop_0
39512                        null
39513                        ids_0
39514                        binding-syms_0
39515                        lst_0))))))))))))))
39516(define generate-top-level-define-syntaxes
39517  (lambda (gen-syms_0 rhs_0 transformer-set!s_0 finish_0)
39518    (let ((app_0 (list 'lambda '() rhs_0)))
39519      (list
39520       'call-with-values
39521       app_0
39522       (list*
39523        'case-lambda
39524        (let ((app_1
39525               (if (null? gen-syms_0)
39526                 '()
39527                 (list
39528                  (list
39529                   gen-syms_0
39530                   (list*
39531                    'begin
39532                    (qq-append
39533                     transformer-set!s_0
39534                     (qq-append (cdr finish_0) '((void))))))))))
39535          (qq-append
39536           app_1
39537           (let ((app_2
39538                  (list
39539                   '()
39540                   (let ((app_2
39541                          (list
39542                           (list
39543                            gen-syms_0
39544                            (list*
39545                             'values
39546                             (reverse$1
39547                              (begin
39548                                (letrec*
39549                                 ((for-loop_0
39550                                   (|#%name|
39551                                    for-loop
39552                                    (lambda (fold-var_0 lst_0)
39553                                      (begin
39554                                        (if (pair? lst_0)
39555                                          (let ((s_0 (unsafe-car lst_0)))
39556                                            (let ((rest_0 (unsafe-cdr lst_0)))
39557                                              (let ((fold-var_1
39558                                                     (cons ''#f fold-var_0)))
39559                                                (let ((fold-var_2
39560                                                       (values fold-var_1)))
39561                                                  (for-loop_0
39562                                                   fold-var_2
39563                                                   rest_0)))))
39564                                          fold-var_0))))))
39565                                 (for-loop_0 null gen-syms_0)))))))))
39566                     (list
39567                      'let-values
39568                      app_2
39569                      (list* 'begin (qq-append (cdr finish_0) '((void)))))))))
39570             (list
39571              app_2
39572              (list
39573               'args
39574               (list*
39575                'let-values
39576                (list (list* gen-syms_0 '((apply values args))))
39577                '((void)))))))))))))
39578(define propagate-inline-property
39579  (lambda (e_0 orig-s_0)
39580    (let ((v_0
39581           (syntax-property$1 orig-s_0 'compiler-hint:cross-module-inline)))
39582      (if v_0
39583        (begin-unsafe
39584         (syntax-property e_0 'compiler-hint:cross-module-inline v_0))
39585        e_0))))
39586(define compile-module-linklet.1
39587  (|#%name|
39588   compile-module-linklet
39589   (lambda (body-import-instances38_0
39590            body-imports37_0
39591            compile-linklet36_0
39592            get-module-linklet-info39_0
39593            load-modules?45_0
39594            module-prompt?41_0
39595            module-use*s42_0
39596            namespace46_0
39597            optimize-linklet?43_0
39598            serializable?40_0
39599            unsafe?44_0
39600            body-linklet58_0)
39601     (begin
39602       (let ((compile-linklet_0
39603              (if (eq? compile-linklet36_0 unsafe-undefined)
39604                compile-linklet
39605                compile-linklet36_0)))
39606         (call-with-values
39607          (lambda ()
39608            (begin
39609              (if log-performance?
39610                (start-performance-region 'compile '_ 'linklet)
39611                (void))
39612              (begin0
39613                (let ((keys_0
39614                       (list->vector
39615                        (append body-import-instances38_0 module-use*s42_0))))
39616                  (let ((getter_0
39617                         (make-module-use-to-linklet
39618                          optimize-linklet?43_0
39619                          load-modules?45_0
39620                          namespace46_0
39621                          get-module-linklet-info39_0
39622                          module-use*s42_0)))
39623                    (let ((keys_1 keys_0))
39624                      (|#%app|
39625                       compile-linklet_0
39626                       body-linklet58_0
39627                       'module
39628                       keys_1
39629                       getter_0
39630                       (let ((flags_0
39631                              (if serializable?40_0
39632                                (if module-prompt?41_0
39633                                  '(serializable use-prompt)
39634                                  '(serializable))
39635                                (if module-prompt?41_0
39636                                  '(use-prompt)
39637                                  (if optimize-linklet?43_0 '() '(quick))))))
39638                         (if unsafe?44_0 (cons 'unsafe flags_0) flags_0))))))
39639                (if log-performance? (end-performance-region) (void)))))
39640          (case-lambda
39641           ((linklet_0 new-module-use*s_0)
39642            (values
39643             linklet_0
39644             (let ((app_0 (vector->list new-module-use*s_0)))
39645               (list-tail app_0 (length body-imports37_0)))))
39646           (args (raise-binding-result-arity-error 2 args)))))))))
39647(define make-module-use-to-linklet
39648  (lambda (optimize-linklet?_0
39649           load-modules?_0
39650           ns_0
39651           get-module-linklet-info_0
39652           init-mu*s_0)
39653    (let ((mu*-intern-table_0 (make-hash)))
39654      (let ((intern-module-use*_0
39655             (|#%name|
39656              intern-module-use*
39657              (lambda (mu*_0)
39658                (begin
39659                  (let ((mod-name_0
39660                         (1/module-path-index-resolve
39661                          (module-use-module mu*_0)
39662                          load-modules?_0)))
39663                    (let ((existing-mu*_0
39664                           (hash-ref
39665                            mu*-intern-table_0
39666                            (cons mod-name_0 (module-use-phase mu*_0))
39667                            #f)))
39668                      (if existing-mu*_0
39669                        (begin
39670                          (module-use-merge-extra-inspectorss!
39671                           existing-mu*_0
39672                           mu*_0)
39673                          existing-mu*_0)
39674                        (begin
39675                          (hash-set!
39676                           mu*-intern-table_0
39677                           (cons mod-name_0 (module-use-phase mu*_0))
39678                           mu*_0)
39679                          mu*_0)))))))))
39680        (begin
39681          (begin
39682            (letrec*
39683             ((for-loop_0
39684               (|#%name|
39685                for-loop
39686                (lambda (lst_0)
39687                  (begin
39688                    (if (pair? lst_0)
39689                      (let ((mu*_0 (unsafe-car lst_0)))
39690                        (let ((rest_0 (unsafe-cdr lst_0)))
39691                          (begin
39692                            (intern-module-use*_0 mu*_0)
39693                            (for-loop_0 rest_0))))
39694                      (values)))))))
39695             (for-loop_0 init-mu*s_0)))
39696          (void)
39697          (lambda (mu*-or-instance_0)
39698            (if (instance? mu*-or-instance_0)
39699              (values mu*-or-instance_0 #f)
39700              (if (not optimize-linklet?_0)
39701                (values #f #f)
39702                (if mu*-or-instance_0
39703                  (let ((mod-name_0
39704                         (1/module-path-index-resolve
39705                          (module-use-module mu*-or-instance_0)
39706                          load-modules?_0)))
39707                    (let ((mli_0
39708                           (let ((or-part_0
39709                                  (|#%app|
39710                                   get-module-linklet-info_0
39711                                   mod-name_0
39712                                   (module-use-phase mu*-or-instance_0))))
39713                             (if or-part_0
39714                               or-part_0
39715                               (namespace->module-linklet-info
39716                                ns_0
39717                                mod-name_0
39718                                (module-use-phase mu*-or-instance_0))))))
39719                      (begin
39720                        (if mli_0
39721                          (let ((insp_0 (module-linklet-info-inspector mli_0)))
39722                            (begin-unsafe
39723                             (set-module-use*-self-inspector!
39724                              mu*-or-instance_0
39725                              insp_0)))
39726                          (void))
39727                        (if mli_0
39728                          (values
39729                           (module-linklet-info-linklet-or-instance mli_0)
39730                           (if (module-linklet-info-module-uses mli_0)
39731                             (list->vector
39732                              (append
39733                               '(#f #f)
39734                               (let ((mus_0
39735                                      (module-linklet-info-module-uses mli_0)))
39736                                 (let ((extra-inspectorsss_0
39737                                        (module-linklet-info-extra-inspectorsss
39738                                         mli_0)))
39739                                   (reverse$1
39740                                    (let ((lst_0
39741                                           (linklet-import-variables
39742                                            (module-linklet-info-linklet-or-instance
39743                                             mli_0))))
39744                                      (let ((lst_1
39745                                             (if extra-inspectorsss_0
39746                                               extra-inspectorsss_0
39747                                               mus_0)))
39748                                        (let ((lst_2 lst_0))
39749                                          (begin
39750                                            (letrec*
39751                                             ((for-loop_0
39752                                               (|#%name|
39753                                                for-loop
39754                                                (lambda (fold-var_0
39755                                                         lst_3
39756                                                         lst_4
39757                                                         lst_5)
39758                                                  (begin
39759                                                    (if (if (pair? lst_3)
39760                                                          (if (pair? lst_4)
39761                                                            (pair? lst_5)
39762                                                            #f)
39763                                                          #f)
39764                                                      (let ((sub-mu_0
39765                                                             (unsafe-car
39766                                                              lst_3)))
39767                                                        (let ((rest_0
39768                                                               (unsafe-cdr
39769                                                                lst_3)))
39770                                                          (let ((imports_0
39771                                                                 (unsafe-car
39772                                                                  lst_4)))
39773                                                            (let ((rest_1
39774                                                                   (unsafe-cdr
39775                                                                    lst_4)))
39776                                                              (let ((extra-inspectorss_0
39777                                                                     (unsafe-car
39778                                                                      lst_5)))
39779                                                                (let ((rest_2
39780                                                                       (unsafe-cdr
39781                                                                        lst_5)))
39782                                                                  (let ((fold-var_1
39783                                                                         (let ((fold-var_1
39784                                                                                (cons
39785                                                                                 (intern-module-use*_0
39786                                                                                  (let ((app_0
39787                                                                                         (let ((app_0
39788                                                                                                (module-use-module
39789                                                                                                 sub-mu_0)))
39790                                                                                           (module-path-index-shift
39791                                                                                            app_0
39792                                                                                            (module-linklet-info-self
39793                                                                                             mli_0)
39794                                                                                            (module-use-module
39795                                                                                             mu*-or-instance_0)))))
39796                                                                                    (let ((app_1
39797                                                                                           (module-use-phase
39798                                                                                            sub-mu_0)))
39799                                                                                      (module-use+extra-inspectors
39800                                                                                       app_0
39801                                                                                       app_1
39802                                                                                       imports_0
39803                                                                                       (module-linklet-info-inspector
39804                                                                                        mli_0)
39805                                                                                       (module-linklet-info-extra-inspector
39806                                                                                        mli_0)
39807                                                                                       (if extra-inspectorsss_0
39808                                                                                         extra-inspectorss_0
39809                                                                                         #f)))))
39810                                                                                 fold-var_0)))
39811                                                                           (values
39812                                                                            fold-var_1))))
39813                                                                    (for-loop_0
39814                                                                     fold-var_1
39815                                                                     rest_0
39816                                                                     rest_1
39817                                                                     rest_2))))))))
39818                                                      fold-var_0))))))
39819                                             (for-loop_0
39820                                              null
39821                                              mus_0
39822                                              lst_2
39823                                              lst_1)))))))))))
39824                             #f))
39825                          (values #f #f)))))
39826                  (values #f #f))))))))))
39827(define build-shared-data-linklet.1
39828  (|#%name|
39829   build-shared-data-linklet
39830   (lambda (to-correlated-linklet?1_0 cims3_0 ns4_0)
39831     (begin
39832       (let ((mpis_0 (make-module-path-index-table)))
39833         (let ((mpi-trees_0
39834                (map-cim-tree
39835                 cims3_0
39836                 (lambda (cim_0)
39837                   (call-with-values
39838                    (lambda ()
39839                      (call-with-values
39840                       (lambda ()
39841                         (let ((vec_0 (compiled-in-memory-mpis cim_0)))
39842                           (begin
39843                             (check-vector vec_0)
39844                             (values vec_0 (unsafe-vector-length vec_0)))))
39845                       (case-lambda
39846                        ((vec_0 len_0)
39847                         (begin
39848                           #f
39849                           (letrec*
39850                            ((for-loop_0
39851                              (|#%name|
39852                               for-loop
39853                               (lambda (vec_1 i_0 pos_0)
39854                                 (begin
39855                                   (if (unsafe-fx< pos_0 len_0)
39856                                     (let ((mpi_0
39857                                            (unsafe-vector-ref vec_0 pos_0)))
39858                                       (call-with-values
39859                                        (lambda ()
39860                                          (call-with-values
39861                                           (lambda ()
39862                                             (let ((new-vec_0
39863                                                    (if (eq?
39864                                                         i_0
39865                                                         (unsafe-vector*-length
39866                                                          vec_1))
39867                                                      (grow-vector vec_1)
39868                                                      vec_1)))
39869                                               (begin
39870                                                 (unsafe-vector*-set!
39871                                                  new-vec_0
39872                                                  i_0
39873                                                  (add-module-path-index!/pos
39874                                                   mpis_0
39875                                                   mpi_0))
39876                                                 (values
39877                                                  new-vec_0
39878                                                  (unsafe-fx+ i_0 1)))))
39879                                           (case-lambda
39880                                            ((vec_2 i_1) (values vec_2 i_1))
39881                                            (args
39882                                             (raise-binding-result-arity-error
39883                                              2
39884                                              args)))))
39885                                        (case-lambda
39886                                         ((vec_2 i_1)
39887                                          (for-loop_0
39888                                           vec_2
39889                                           i_1
39890                                           (unsafe-fx+ 1 pos_0)))
39891                                         (args
39892                                          (raise-binding-result-arity-error
39893                                           2
39894                                           args)))))
39895                                     (values vec_1 i_0)))))))
39896                            (for-loop_0 (make-vector 16) 0 0))))
39897                        (args (raise-binding-result-arity-error 2 args)))))
39898                    (case-lambda
39899                     ((vec_0 i_0) (shrink-vector vec_0 i_0))
39900                     (args (raise-binding-result-arity-error 2 args))))))))
39901           (let ((syntax-literals_0 (make-syntax-literals)))
39902             (let ((syntax-literals-trees_0
39903                    (map-cim-tree
39904                     cims3_0
39905                     (lambda (cim_0)
39906                       (add-syntax-literals!
39907                        syntax-literals_0
39908                        (compiled-in-memory-syntax-literals cim_0))))))
39909               (let ((module-uses-tables_0 null))
39910                 (let ((module-uses-tables-count_0 0))
39911                   (let ((phase-to-link-module-uses-trees_0
39912                          (map-cim-tree
39913                           cims3_0
39914                           (lambda (cim_0)
39915                             (let ((pos_0 module-uses-tables-count_0))
39916                               (begin
39917                                 (set! module-uses-tables_0
39918                                   (let ((app_0
39919                                          (compiled-in-memory-phase-to-link-module-uses
39920                                           cim_0)))
39921                                     (cons app_0 module-uses-tables_0)))
39922                                 (set! module-uses-tables-count_0 (add1 pos_0))
39923                                 pos_0))))))
39924                     (let ((syntax-literals-expr_0
39925                            (generate-eager-syntax-literals!
39926                             syntax-literals_0
39927                             mpis_0
39928                             0
39929                             #f
39930                             ns4_0)))
39931                       (let ((phase-to-link-module-uses-expr_0
39932                              (list*
39933                               'vector
39934                               (reverse$1
39935                                (let ((lst_0 (reverse$1 module-uses-tables_0)))
39936                                  (begin
39937                                    (letrec*
39938                                     ((for-loop_0
39939                                       (|#%name|
39940                                        for-loop
39941                                        (lambda (fold-var_0 lst_1)
39942                                          (begin
39943                                            (if (pair? lst_1)
39944                                              (let ((phase-to-link-module-uses_0
39945                                                     (unsafe-car lst_1)))
39946                                                (let ((rest_0
39947                                                       (unsafe-cdr lst_1)))
39948                                                  (let ((fold-var_1
39949                                                         (let ((fold-var_1
39950                                                                (cons
39951                                                                 (serialize-phase-to-link-module-uses
39952                                                                  phase-to-link-module-uses_0
39953                                                                  mpis_0)
39954                                                                 fold-var_0)))
39955                                                           (values
39956                                                            fold-var_1))))
39957                                                    (for-loop_0
39958                                                     fold-var_1
39959                                                     rest_0))))
39960                                              fold-var_0))))))
39961                                     (for-loop_0 null lst_0))))))))
39962                         (let ((app_0
39963                                (list
39964                                 deserialize-imports
39965                                 eager-instance-imports)))
39966                           (let ((linklet-s_0
39967                                  (let ((app_1
39968                                         (list*
39969                                          mpi-vector-id
39970                                          '(mpi-vector-trees
39971                                            phase-to-link-modules-vector
39972                                            phase-to-link-modules-trees
39973                                            syntax-literals
39974                                            syntax-literals-trees))))
39975                                    (let ((app_2
39976                                           (let ((app_2 (list mpi-vector-id)))
39977                                             (list
39978                                              'define-values
39979                                              app_2
39980                                              (generate-module-path-index-deserialize.1
39981                                               #f
39982                                               mpis_0)))))
39983                                      (list
39984                                       'linklet
39985                                       app_0
39986                                       app_1
39987                                       app_2
39988                                       (list
39989                                        'define-values
39990                                        '(mpi-vector-trees)
39991                                        (list 'quote mpi-trees_0))
39992                                       (list
39993                                        'define-values
39994                                        '(phase-to-link-modules-vector)
39995                                        phase-to-link-module-uses-expr_0)
39996                                       (list
39997                                        'define-values
39998                                        '(phase-to-link-modules-trees)
39999                                        (list
40000                                         'quote
40001                                         phase-to-link-module-uses-trees_0))
40002                                       (list
40003                                        'define-values
40004                                        '(syntax-literals)
40005                                        syntax-literals-expr_0)
40006                                       (list
40007                                        'define-values
40008                                        '(syntax-literals-trees)
40009                                        (list
40010                                         'quote
40011                                         syntax-literals-trees_0)))))))
40012                             (if to-correlated-linklet?1_0
40013                               (begin-unsafe
40014                                (correlated-linklet1.1 linklet-s_0 #f #f))
40015                               (compile-linklet linklet-s_0)))))))))))))))))
40016(define map-cim-tree
40017  (lambda (cims_0 proc_0)
40018    (letrec*
40019     ((loop_0
40020       (|#%name|
40021        loop
40022        (lambda (cims_1)
40023          (begin
40024            (reverse$1
40025             (begin
40026               (letrec*
40027                ((for-loop_0
40028                  (|#%name|
40029                   for-loop
40030                   (lambda (fold-var_0 lst_0)
40031                     (begin
40032                       (if (pair? lst_0)
40033                         (let ((cim_0 (unsafe-car lst_0)))
40034                           (let ((rest_0 (unsafe-cdr lst_0)))
40035                             (let ((fold-var_1
40036                                    (let ((fold-var_1
40037                                           (cons
40038                                            (let ((app_0
40039                                                   (|#%app| proc_0 cim_0)))
40040                                              (let ((app_1
40041                                                     (loop_0
40042                                                      (compiled-in-memory-pre-compiled-in-memorys
40043                                                       cim_0))))
40044                                                (vector
40045                                                 app_0
40046                                                 app_1
40047                                                 (loop_0
40048                                                  (compiled-in-memory-post-compiled-in-memorys
40049                                                   cim_0)))))
40050                                            fold-var_0)))
40051                                      (values fold-var_1))))
40052                               (for-loop_0 fold-var_1 rest_0))))
40053                         fold-var_0))))))
40054                (for-loop_0 null cims_1)))))))))
40055     (loop_0 cims_0))))
40056(define compiled-tops->compiled-top.1
40057  (|#%name|
40058   compiled-tops->compiled-top
40059   (lambda (merge-serialization?2_0
40060            namespace3_0
40061            to-correlated-linklet?1_0
40062            all-cims7_0)
40063     (begin
40064       (let ((cims_0 (remove-nontail-purely-functional all-cims7_0)))
40065         (if (= 1 (length cims_0))
40066           (car cims_0)
40067           (let ((sequence-ht_0
40068                  (begin
40069                    (letrec*
40070                     ((for-loop_0
40071                       (|#%name|
40072                        for-loop
40073                        (lambda (table_0 lst_0 pos_0)
40074                          (begin
40075                            (if (if (pair? lst_0) #t #f)
40076                              (let ((cim_0 (unsafe-car lst_0)))
40077                                (let ((rest_0 (unsafe-cdr lst_0)))
40078                                  (let ((table_1
40079                                         (let ((table_1
40080                                                (call-with-values
40081                                                 (lambda ()
40082                                                   (let ((app_0
40083                                                          (string->symbol
40084                                                           (number->string
40085                                                            pos_0))))
40086                                                     (values
40087                                                      app_0
40088                                                      (compiled-in-memory-linklet-directory
40089                                                       cim_0))))
40090                                                 (case-lambda
40091                                                  ((key_0 val_0)
40092                                                   (hash-set
40093                                                    table_0
40094                                                    key_0
40095                                                    val_0))
40096                                                  (args
40097                                                   (raise-binding-result-arity-error
40098                                                    2
40099                                                    args))))))
40100                                           (values table_1))))
40101                                    (for-loop_0 table_1 rest_0 (+ pos_0 1)))))
40102                              table_0))))))
40103                     (for-loop_0 hash2610 cims_0 0)))))
40104             (let ((ht_0
40105                    (if merge-serialization?2_0
40106                      (hash-set
40107                       sequence-ht_0
40108                       'data
40109                       (1/hash->linklet-directory
40110                        (hasheq
40111                         #f
40112                         (1/hash->linklet-bundle
40113                          (hasheq
40114                           0
40115                           (build-shared-data-linklet.1
40116                            to-correlated-linklet?1_0
40117                            cims_0
40118                            namespace3_0))))))
40119                      sequence-ht_0)))
40120               (compiled-in-memory1.1
40121                (1/hash->linklet-directory ht_0)
40122                #f
40123                #f
40124                #f
40125                hash2589
40126                #f
40127                hash2589
40128                '#()
40129                '#()
40130                cims_0
40131                null
40132                #f
40133                #f)))))))))
40134(define compiled-top->compiled-tops
40135  (lambda (ld_0)
40136    (let ((ht_0 (linklet-directory->hash$1 ld_0)))
40137      (reverse$1
40138       (let ((end_0 (hash-count ht_0)))
40139         (begin
40140           (letrec*
40141            ((for-loop_0
40142              (|#%name|
40143               for-loop
40144               (lambda (fold-var_0 pos_0)
40145                 (begin
40146                   (if (< pos_0 end_0)
40147                     (let ((fold-var_1
40148                            (let ((id*_0
40149                                   (hash-ref
40150                                    ht_0
40151                                    (string->symbol (number->string pos_0))
40152                                    #f)))
40153                              (begin
40154                                #t
40155                                (letrec*
40156                                 ((for-loop_1
40157                                   (|#%name|
40158                                    for-loop
40159                                    (lambda (fold-var_1)
40160                                      (begin
40161                                        (let ((fold-var_2
40162                                               (if id*_0
40163                                                 (let ((fold-var_2
40164                                                        (cons
40165                                                         id*_0
40166                                                         fold-var_1)))
40167                                                   (values fold-var_2))
40168                                                 fold-var_1)))
40169                                          fold-var_2))))))
40170                                 (for-loop_1 fold-var_0))))))
40171                       (for-loop_0 fold-var_1 (+ pos_0 1)))
40172                     fold-var_0))))))
40173            (for-loop_0 null 0))))))))
40174(define remove-nontail-purely-functional
40175  (lambda (cims_0)
40176    (letrec*
40177     ((loop_0
40178       (|#%name|
40179        loop
40180        (lambda (cims_1)
40181          (begin
40182            (if (null? cims_1)
40183              null
40184              (if (null? (cdr cims_1))
40185                cims_1
40186                (if (if (compiled-in-memory? (car cims_1))
40187                      (compiled-in-memory-purely-functional? (car cims_1))
40188                      #f)
40189                  (loop_0 (cdr cims_1))
40190                  (let ((app_0 (car cims_1)))
40191                    (cons app_0 (cdr cims_1)))))))))))
40192     (loop_0 cims_0))))
40193(define finish_2519
40194  (make-struct-type-install-properties
40195   '(known-defined/delay)
40196   1
40197   0
40198   #f
40199   null
40200   'prefab
40201   #f
40202   '(0)
40203   #f
40204   'known-defined/delay))
40205(define struct:known-defined/delay
40206  (make-record-type-descriptor*
40207   'known-defined/delay
40208   #f
40209   (structure-type-lookup-prefab-uid 'known-defined/delay #f 1 0 #f '(0))
40210   #f
40211   #f
40212   1
40213   1))
40214(define effect_2998 (finish_2519 struct:known-defined/delay))
40215(define known-defined/delay2.1
40216  (|#%name|
40217   known-defined/delay
40218   (record-constructor
40219    (make-record-constructor-descriptor struct:known-defined/delay #f #f))))
40220(define known-defined/delay?_2399
40221  (|#%name|
40222   known-defined/delay?
40223   (record-predicate struct:known-defined/delay)))
40224(define known-defined/delay?
40225  (|#%name|
40226   known-defined/delay?
40227   (lambda (v)
40228     (if (known-defined/delay?_2399 v)
40229       #t
40230       ($value
40231        (if (impersonator? v)
40232          (known-defined/delay?_2399 (impersonator-val v))
40233          #f))))))
40234(define known-defined/delay-thunk_1981
40235  (|#%name|
40236   known-defined/delay-thunk
40237   (record-accessor struct:known-defined/delay 0)))
40238(define known-defined/delay-thunk
40239  (|#%name|
40240   known-defined/delay-thunk
40241   (lambda (s)
40242     (if (known-defined/delay?_2399 s)
40243       (known-defined/delay-thunk_1981 s)
40244       ($value
40245        (impersonate-ref
40246         known-defined/delay-thunk_1981
40247         struct:known-defined/delay
40248         0
40249         s
40250         'known-defined/delay
40251         'thunk))))))
40252(define finish_2590
40253  (make-struct-type-install-properties
40254   '(known-property)
40255   0
40256   0
40257   #f
40258   null
40259   'prefab
40260   #f
40261   '()
40262   #f
40263   'known-property))
40264(define struct:known-property
40265  (make-record-type-descriptor*
40266   'known-property
40267   #f
40268   (structure-type-lookup-prefab-uid 'known-property #f 0 0 #f '())
40269   #f
40270   #f
40271   0
40272   0))
40273(define effect_2476 (finish_2590 struct:known-property))
40274(define known-property3.1
40275  (|#%name|
40276   known-property
40277   (record-constructor
40278    (make-record-constructor-descriptor struct:known-property #f #f))))
40279(define known-property?_2907
40280  (|#%name| known-property? (record-predicate struct:known-property)))
40281(define known-property?
40282  (|#%name|
40283   known-property?
40284   (lambda (v)
40285     (if (known-property?_2907 v)
40286       #t
40287       ($value
40288        (if (impersonator? v)
40289          (known-property?_2907 (impersonator-val v))
40290          #f))))))
40291(define finish_2139
40292  (make-struct-type-install-properties
40293   '(known-property-of-function)
40294   1
40295   0
40296   #f
40297   null
40298   'prefab
40299   #f
40300   '(0)
40301   #f
40302   'known-property-of-function))
40303(define struct:known-property-of-function
40304  (make-record-type-descriptor*
40305   'known-property-of-function
40306   #f
40307   (structure-type-lookup-prefab-uid
40308    'known-property-of-function
40309    #f
40310    1
40311    0
40312    #f
40313    '(0))
40314   #f
40315   #f
40316   1
40317   1))
40318(define effect_2945 (finish_2139 struct:known-property-of-function))
40319(define known-property-of-function4.1
40320  (|#%name|
40321   known-property-of-function
40322   (record-constructor
40323    (make-record-constructor-descriptor
40324     struct:known-property-of-function
40325     #f
40326     #f))))
40327(define known-property-of-function?_3246
40328  (|#%name|
40329   known-property-of-function?
40330   (record-predicate struct:known-property-of-function)))
40331(define known-property-of-function?
40332  (|#%name|
40333   known-property-of-function?
40334   (lambda (v)
40335     (if (known-property-of-function?_3246 v)
40336       #t
40337       ($value
40338        (if (impersonator? v)
40339          (known-property-of-function?_3246 (impersonator-val v))
40340          #f))))))
40341(define known-property-of-function-arity_2841
40342  (|#%name|
40343   known-property-of-function-arity
40344   (record-accessor struct:known-property-of-function 0)))
40345(define known-property-of-function-arity
40346  (|#%name|
40347   known-property-of-function-arity
40348   (lambda (s)
40349     (if (known-property-of-function?_3246 s)
40350       (known-property-of-function-arity_2841 s)
40351       ($value
40352        (impersonate-ref
40353         known-property-of-function-arity_2841
40354         struct:known-property-of-function
40355         0
40356         s
40357         'known-property-of-function
40358         'arity))))))
40359(define finish_2740
40360  (make-struct-type-install-properties
40361   '(known-function)
40362   2
40363   0
40364   #f
40365   null
40366   'prefab
40367   #f
40368   '(0 1)
40369   #f
40370   'known-function))
40371(define struct:known-function
40372  (make-record-type-descriptor*
40373   'known-function
40374   #f
40375   (structure-type-lookup-prefab-uid 'known-function #f 2 0 #f '(0 1))
40376   #f
40377   #f
40378   2
40379   3))
40380(define effect_2741 (finish_2740 struct:known-function))
40381(define known-function5.1
40382  (|#%name|
40383   known-function
40384   (record-constructor
40385    (make-record-constructor-descriptor struct:known-function #f #f))))
40386(define known-function?_2201
40387  (|#%name| known-function? (record-predicate struct:known-function)))
40388(define known-function?
40389  (|#%name|
40390   known-function?
40391   (lambda (v)
40392     (if (known-function?_2201 v)
40393       #t
40394       ($value
40395        (if (impersonator? v)
40396          (known-function?_2201 (impersonator-val v))
40397          #f))))))
40398(define known-function-arity_3107
40399  (|#%name| known-function-arity (record-accessor struct:known-function 0)))
40400(define known-function-arity
40401  (|#%name|
40402   known-function-arity
40403   (lambda (s)
40404     (if (known-function?_2201 s)
40405       (known-function-arity_3107 s)
40406       ($value
40407        (impersonate-ref
40408         known-function-arity_3107
40409         struct:known-function
40410         0
40411         s
40412         'known-function
40413         'arity))))))
40414(define known-function-pure?_2002
40415  (|#%name| known-function-pure? (record-accessor struct:known-function 1)))
40416(define known-function-pure?
40417  (|#%name|
40418   known-function-pure?
40419   (lambda (s)
40420     (if (known-function?_2201 s)
40421       (known-function-pure?_2002 s)
40422       ($value
40423        (impersonate-ref
40424         known-function-pure?_2002
40425         struct:known-function
40426         1
40427         s
40428         'known-function
40429         'pure?))))))
40430(define finish_2156
40431  (make-struct-type-install-properties
40432   '(known-function-of-satisfying)
40433   1
40434   0
40435   #f
40436   null
40437   'prefab
40438   #f
40439   '(0)
40440   #f
40441   'known-function-of-satisfying))
40442(define struct:known-function-of-satisfying
40443  (make-record-type-descriptor*
40444   'known-function-of-satisfying
40445   #f
40446   (structure-type-lookup-prefab-uid
40447    'known-function-of-satisfying
40448    #f
40449    1
40450    0
40451    #f
40452    '(0))
40453   #f
40454   #f
40455   1
40456   1))
40457(define effect_2265 (finish_2156 struct:known-function-of-satisfying))
40458(define known-function-of-satisfying6.1
40459  (|#%name|
40460   known-function-of-satisfying
40461   (record-constructor
40462    (make-record-constructor-descriptor
40463     struct:known-function-of-satisfying
40464     #f
40465     #f))))
40466(define known-function-of-satisfying?_2900
40467  (|#%name|
40468   known-function-of-satisfying?
40469   (record-predicate struct:known-function-of-satisfying)))
40470(define known-function-of-satisfying?
40471  (|#%name|
40472   known-function-of-satisfying?
40473   (lambda (v)
40474     (if (known-function-of-satisfying?_2900 v)
40475       #t
40476       ($value
40477        (if (impersonator? v)
40478          (known-function-of-satisfying?_2900 (impersonator-val v))
40479          #f))))))
40480(define known-function-of-satisfying-arg-predicate-keys_2999
40481  (|#%name|
40482   known-function-of-satisfying-arg-predicate-keys
40483   (record-accessor struct:known-function-of-satisfying 0)))
40484(define known-function-of-satisfying-arg-predicate-keys
40485  (|#%name|
40486   known-function-of-satisfying-arg-predicate-keys
40487   (lambda (s)
40488     (if (known-function-of-satisfying?_2900 s)
40489       (known-function-of-satisfying-arg-predicate-keys_2999 s)
40490       ($value
40491        (impersonate-ref
40492         known-function-of-satisfying-arg-predicate-keys_2999
40493         struct:known-function-of-satisfying
40494         0
40495         s
40496         'known-function-of-satisfying
40497         'arg-predicate-keys))))))
40498(define finish_2577
40499  (make-struct-type-install-properties
40500   '(known-predicate)
40501   1
40502   0
40503   #f
40504   null
40505   'prefab
40506   #f
40507   '(0)
40508   #f
40509   'known-predicate))
40510(define struct:known-predicate
40511  (make-record-type-descriptor*
40512   'known-predicate
40513   #f
40514   (structure-type-lookup-prefab-uid 'known-predicate #f 1 0 #f '(0))
40515   #f
40516   #f
40517   1
40518   1))
40519(define effect_2144 (finish_2577 struct:known-predicate))
40520(define known-predicate7.1
40521  (|#%name|
40522   known-predicate
40523   (record-constructor
40524    (make-record-constructor-descriptor struct:known-predicate #f #f))))
40525(define known-predicate?_2903
40526  (|#%name| known-predicate? (record-predicate struct:known-predicate)))
40527(define known-predicate?
40528  (|#%name|
40529   known-predicate?
40530   (lambda (v)
40531     (if (known-predicate?_2903 v)
40532       #t
40533       ($value
40534        (if (impersonator? v)
40535          (known-predicate?_2903 (impersonator-val v))
40536          #f))))))
40537(define known-predicate-key_2853
40538  (|#%name| known-predicate-key (record-accessor struct:known-predicate 0)))
40539(define known-predicate-key
40540  (|#%name|
40541   known-predicate-key
40542   (lambda (s)
40543     (if (known-predicate?_2903 s)
40544       (known-predicate-key_2853 s)
40545       ($value
40546        (impersonate-ref
40547         known-predicate-key_2853
40548         struct:known-predicate
40549         0
40550         s
40551         'known-predicate
40552         'key))))))
40553(define finish_2469
40554  (make-struct-type-install-properties
40555   '(known-satisfies)
40556   1
40557   0
40558   #f
40559   null
40560   'prefab
40561   #f
40562   '(0)
40563   #f
40564   'known-satisfies))
40565(define struct:known-satisfies
40566  (make-record-type-descriptor*
40567   'known-satisfies
40568   #f
40569   (structure-type-lookup-prefab-uid 'known-satisfies #f 1 0 #f '(0))
40570   #f
40571   #f
40572   1
40573   1))
40574(define effect_1976 (finish_2469 struct:known-satisfies))
40575(define known-satisfies8.1
40576  (|#%name|
40577   known-satisfies
40578   (record-constructor
40579    (make-record-constructor-descriptor struct:known-satisfies #f #f))))
40580(define known-satisfies?_2354
40581  (|#%name| known-satisfies? (record-predicate struct:known-satisfies)))
40582(define known-satisfies?
40583  (|#%name|
40584   known-satisfies?
40585   (lambda (v)
40586     (if (known-satisfies?_2354 v)
40587       #t
40588       ($value
40589        (if (impersonator? v)
40590          (known-satisfies?_2354 (impersonator-val v))
40591          #f))))))
40592(define known-satisfies-predicate-key_2990
40593  (|#%name|
40594   known-satisfies-predicate-key
40595   (record-accessor struct:known-satisfies 0)))
40596(define known-satisfies-predicate-key
40597  (|#%name|
40598   known-satisfies-predicate-key
40599   (lambda (s)
40600     (if (known-satisfies?_2354 s)
40601       (known-satisfies-predicate-key_2990 s)
40602       ($value
40603        (impersonate-ref
40604         known-satisfies-predicate-key_2990
40605         struct:known-satisfies
40606         0
40607         s
40608         'known-satisfies
40609         'predicate-key))))))
40610(define finish_2604
40611  (make-struct-type-install-properties
40612   '(known-struct-op)
40613   2
40614   0
40615   #f
40616   null
40617   'prefab
40618   #f
40619   '(0 1)
40620   #f
40621   'known-struct-op))
40622(define struct:known-struct-op
40623  (make-record-type-descriptor*
40624   'known-struct-op
40625   #f
40626   (structure-type-lookup-prefab-uid 'known-struct-op #f 2 0 #f '(0 1))
40627   #f
40628   #f
40629   2
40630   3))
40631(define effect_2534 (finish_2604 struct:known-struct-op))
40632(define known-struct-op9.1
40633  (|#%name|
40634   known-struct-op
40635   (record-constructor
40636    (make-record-constructor-descriptor struct:known-struct-op #f #f))))
40637(define known-struct-op?_2475
40638  (|#%name| known-struct-op? (record-predicate struct:known-struct-op)))
40639(define known-struct-op?
40640  (|#%name|
40641   known-struct-op?
40642   (lambda (v)
40643     (if (known-struct-op?_2475 v)
40644       #t
40645       ($value
40646        (if (impersonator? v)
40647          (known-struct-op?_2475 (impersonator-val v))
40648          #f))))))
40649(define known-struct-op-type_2095
40650  (|#%name| known-struct-op-type (record-accessor struct:known-struct-op 0)))
40651(define known-struct-op-type
40652  (|#%name|
40653   known-struct-op-type
40654   (lambda (s)
40655     (if (known-struct-op?_2475 s)
40656       (known-struct-op-type_2095 s)
40657       ($value
40658        (impersonate-ref
40659         known-struct-op-type_2095
40660         struct:known-struct-op
40661         0
40662         s
40663         'known-struct-op
40664         'type))))))
40665(define known-struct-op-field-count_2507
40666  (|#%name|
40667   known-struct-op-field-count
40668   (record-accessor struct:known-struct-op 1)))
40669(define known-struct-op-field-count
40670  (|#%name|
40671   known-struct-op-field-count
40672   (lambda (s)
40673     (if (known-struct-op?_2475 s)
40674       (known-struct-op-field-count_2507 s)
40675       ($value
40676        (impersonate-ref
40677         known-struct-op-field-count_2507
40678         struct:known-struct-op
40679         1
40680         s
40681         'known-struct-op
40682         'field-count))))))
40683(define lookup-defn
40684  (lambda (defns_0 sym_0)
40685    (let ((d_0 (hash-ref defns_0 sym_0 #f)))
40686      (if (known-defined/delay? d_0)
40687        (begin
40688          (|#%app| (known-defined/delay-thunk d_0))
40689          (lookup-defn defns_0 sym_0))
40690        d_0))))
40691(define any-side-effects?.1
40692  (|#%name|
40693   any-side-effects?
40694   (lambda (known-defns2_0
40695            known-locals1_0
40696            ready-variable?3_0
40697            e7_0
40698            expected-results8_0)
40699     (begin
40700       (let ((ready-variable?_0
40701              (if (eq? ready-variable?3_0 unsafe-undefined)
40702                (|#%name| ready-variable? (lambda (id_0) (begin #f)))
40703                ready-variable?3_0)))
40704         (let ((effects?_0
40705                (|#%name|
40706                 effects?
40707                 (lambda (e_0 expected-results_0 locals_0)
40708                   (begin
40709                     (any-side-effects?.1
40710                      known-defns2_0
40711                      locals_0
40712                      ready-variable?_0
40713                      e_0
40714                      expected-results_0))))))
40715           (let ((actual-results_0
40716                  (letrec*
40717                   ((loop_0
40718                     (|#%name|
40719                      loop
40720                      (lambda (e_0 locals_0)
40721                        (begin
40722                          (let ((tmp_0
40723                                 (if (pair? (correlated-e e_0))
40724                                   (correlated-e (car (correlated-e e_0)))
40725                                   #f)))
40726                            (let ((index_0
40727                                   (if (symbol? tmp_0)
40728                                     (hash-ref hash2430 tmp_0 (lambda () 0))
40729                                     0)))
40730                              (if (unsafe-fx< index_0 6)
40731                                (if (unsafe-fx< index_0 2)
40732                                  (if (unsafe-fx< index_0 1)
40733                                    (let ((v_0 (correlated-e e_0)))
40734                                      (if (let ((or-part_0 (string? v_0)))
40735                                            (if or-part_0
40736                                              or-part_0
40737                                              (let ((or-part_1 (number? v_0)))
40738                                                (if or-part_1
40739                                                  or-part_1
40740                                                  (let ((or-part_2
40741                                                         (boolean? v_0)))
40742                                                    (if or-part_2
40743                                                      or-part_2
40744                                                      (char? v_0)))))))
40745                                        1
40746                                        (let ((c1_0
40747                                               (if (pair? v_0)
40748                                                 (let ((rator_0
40749                                                        (correlated-e
40750                                                         (car v_0))))
40751                                                   (let ((or-part_0
40752                                                          (hash-ref
40753                                                           locals_0
40754                                                           rator_0
40755                                                           #f)))
40756                                                     (if or-part_0
40757                                                       or-part_0
40758                                                       (lookup-defn
40759                                                        known-defns2_0
40760                                                        rator_0))))
40761                                                 #f)))
40762                                          (if c1_0
40763                                            (call-with-values
40764                                             (lambda ()
40765                                               (call-with-values
40766                                                (lambda ()
40767                                                  (let ((s_0
40768                                                         (if (syntax? e_0)
40769                                                           (syntax-e e_0)
40770                                                           e_0)))
40771                                                    (if (pair? s_0)
40772                                                      (let ((_0
40773                                                             (let ((s_1
40774                                                                    (car s_0)))
40775                                                               s_1)))
40776                                                        (let ((e18_0
40777                                                               (let ((s_1
40778                                                                      (cdr
40779                                                                       s_0)))
40780                                                                 (let ((s_2
40781                                                                        (if (syntax?
40782                                                                             s_1)
40783                                                                          (syntax-e
40784                                                                           s_1)
40785                                                                          s_1)))
40786                                                                   (let ((flat-s_0
40787                                                                          (to-syntax-list.1$1
40788                                                                           s_2)))
40789                                                                     (if (not
40790                                                                          flat-s_0)
40791                                                                       (let ((str_0
40792                                                                              "bad syntax"))
40793                                                                         (error
40794                                                                          str_0))
40795                                                                       flat-s_0))))))
40796                                                          (let ((_1 _0))
40797                                                            (values
40798                                                             _1
40799                                                             e18_0))))
40800                                                      (let ((str_0
40801                                                             "bad syntax"))
40802                                                        (error str_0)))))
40803                                                (case-lambda
40804                                                 ((_0 e16_0)
40805                                                  (values #t _0 e16_0))
40806                                                 (args
40807                                                  (raise-binding-result-arity-error
40808                                                   2
40809                                                   args)))))
40810                                             (case-lambda
40811                                              ((ok?_0 _0 e16_0)
40812                                               (let ((n-args_0 (length e16_0)))
40813                                                 (if (let ((or-part_0
40814                                                            (if (let ((or-part_0
40815                                                                       (if (known-struct-op?
40816                                                                            c1_0)
40817                                                                         (if (eq?
40818                                                                              'constructor
40819                                                                              (known-struct-op-type
40820                                                                               c1_0))
40821                                                                           (=
40822                                                                            (known-struct-op-field-count
40823                                                                             c1_0)
40824                                                                            n-args_0)
40825                                                                           #f)
40826                                                                         #f)))
40827                                                                  (if or-part_0
40828                                                                    or-part_0
40829                                                                    (if (known-function?
40830                                                                         c1_0)
40831                                                                      (if (known-function-pure?
40832                                                                           c1_0)
40833                                                                        (arity-includes?
40834                                                                         (known-function-arity
40835                                                                          c1_0)
40836                                                                         n-args_0)
40837                                                                        #f)
40838                                                                      #f)))
40839                                                              (begin
40840                                                                (letrec*
40841                                                                 ((for-loop_0
40842                                                                   (|#%name|
40843                                                                    for-loop
40844                                                                    (lambda (result_0
40845                                                                             lst_0)
40846                                                                      (begin
40847                                                                        (if (pair?
40848                                                                             lst_0)
40849                                                                          (let ((e_1
40850                                                                                 (unsafe-car
40851                                                                                  lst_0)))
40852                                                                            (let ((rest_0
40853                                                                                   (unsafe-cdr
40854                                                                                    lst_0)))
40855                                                                              (let ((result_1
40856                                                                                     (let ((result_1
40857                                                                                            (not
40858                                                                                             (effects?_0
40859                                                                                              e_1
40860                                                                                              1
40861                                                                                              locals_0))))
40862                                                                                       (values
40863                                                                                        result_1))))
40864                                                                                (if (if (not
40865                                                                                         (let ((x_0
40866                                                                                                (list
40867                                                                                                 e_1)))
40868                                                                                           (not
40869                                                                                            result_1)))
40870                                                                                      #t
40871                                                                                      #f)
40872                                                                                  (for-loop_0
40873                                                                                   result_1
40874                                                                                   rest_0)
40875                                                                                  result_1))))
40876                                                                          result_0))))))
40877                                                                 (for-loop_0
40878                                                                  #t
40879                                                                  e16_0)))
40880                                                              #f)))
40881                                                       (if or-part_0
40882                                                         or-part_0
40883                                                         (if (known-function-of-satisfying?
40884                                                              c1_0)
40885                                                           (if (=
40886                                                                n-args_0
40887                                                                (length
40888                                                                 (known-function-of-satisfying-arg-predicate-keys
40889                                                                  c1_0)))
40890                                                             (let ((lst_0
40891                                                                    (known-function-of-satisfying-arg-predicate-keys
40892                                                                     c1_0)))
40893                                                               (begin
40894                                                                 (letrec*
40895                                                                  ((for-loop_0
40896                                                                    (|#%name|
40897                                                                     for-loop
40898                                                                     (lambda (result_0
40899                                                                              lst_1
40900                                                                              lst_2)
40901                                                                       (begin
40902                                                                         (if (if (pair?
40903                                                                                  lst_1)
40904                                                                               (pair?
40905                                                                                lst_2)
40906                                                                               #f)
40907                                                                           (let ((e_1
40908                                                                                  (unsafe-car
40909                                                                                   lst_1)))
40910                                                                             (let ((rest_0
40911                                                                                    (unsafe-cdr
40912                                                                                     lst_1)))
40913                                                                               (let ((key_0
40914                                                                                      (unsafe-car
40915                                                                                       lst_2)))
40916                                                                                 (let ((rest_1
40917                                                                                        (unsafe-cdr
40918                                                                                         lst_2)))
40919                                                                                   (let ((result_1
40920                                                                                          (let ((result_1
40921                                                                                                 (if (not
40922                                                                                                      (effects?_0
40923                                                                                                       e_1
40924                                                                                                       1
40925                                                                                                       locals_0))
40926                                                                                                   (satisfies?
40927                                                                                                    e_1
40928                                                                                                    key_0
40929                                                                                                    known-defns2_0
40930                                                                                                    locals_0)
40931                                                                                                   #f)))
40932                                                                                            (values
40933                                                                                             result_1))))
40934                                                                                     (if (if (not
40935                                                                                              (let ((x_0
40936                                                                                                     (list
40937                                                                                                      e_1)))
40938                                                                                                (not
40939                                                                                                 result_1)))
40940                                                                                           (if (not
40941                                                                                                (let ((x_0
40942                                                                                                       (list
40943                                                                                                        key_0)))
40944                                                                                                  (not
40945                                                                                                   result_1)))
40946                                                                                             #t
40947                                                                                             #f)
40948                                                                                           #f)
40949                                                                                       (for-loop_0
40950                                                                                        result_1
40951                                                                                        rest_0
40952                                                                                        rest_1)
40953                                                                                       result_1))))))
40954                                                                           result_0))))))
40955                                                                  (for-loop_0
40956                                                                   #t
40957                                                                   e16_0
40958                                                                   lst_0))))
40959                                                             #f)
40960                                                           #f)))
40961                                                   1
40962                                                   #f)))
40963                                              (args
40964                                               (raise-binding-result-arity-error
40965                                                3
40966                                                args))))
40967                                            (if (let ((or-part_0
40968                                                       (self-quoting-in-linklet?
40969                                                        v_0)))
40970                                                  (if or-part_0
40971                                                    or-part_0
40972                                                    (if (symbol? v_0)
40973                                                      (let ((or-part_1
40974                                                             (hash-ref
40975                                                              locals_0
40976                                                              v_0
40977                                                              #f)))
40978                                                        (if or-part_1
40979                                                          or-part_1
40980                                                          (let ((or-part_2
40981                                                                 (lookup-defn
40982                                                                  known-defns2_0
40983                                                                  v_0)))
40984                                                            (if or-part_2
40985                                                              or-part_2
40986                                                              (let ((or-part_3
40987                                                                     (begin-unsafe
40988                                                                      (hash-ref
40989                                                                       built-in-symbols
40990                                                                       v_0
40991                                                                       #f))))
40992                                                                (if or-part_3
40993                                                                  or-part_3
40994                                                                  (|#%app|
40995                                                                   ready-variable?_0
40996                                                                   v_0)))))))
40997                                                      #f)))
40998                                              1
40999                                              #f)))))
41000                                    1)
41001                                  (if (unsafe-fx< index_0 3)
41002                                    (call-with-values
41003                                     (lambda ()
41004                                       (call-with-values
41005                                        (lambda ()
41006                                          (let ((s_0
41007                                                 (if (syntax? e_0)
41008                                                   (syntax-e e_0)
41009                                                   e_0)))
41010                                            (if (pair? s_0)
41011                                              (let ((_0
41012                                                     (let ((s_1 (car s_0)))
41013                                                       s_1)))
41014                                                (call-with-values
41015                                                 (lambda ()
41016                                                   (let ((s_1 (cdr s_0)))
41017                                                     (let ((s_2
41018                                                            (if (syntax? s_1)
41019                                                              (syntax-e s_1)
41020                                                              s_1)))
41021                                                       (if (pair? s_2)
41022                                                         (call-with-values
41023                                                          (lambda ()
41024                                                            (let ((s_3
41025                                                                   (car s_2)))
41026                                                              (let ((s_4
41027                                                                     (if (syntax?
41028                                                                          s_3)
41029                                                                       (syntax-e
41030                                                                        s_3)
41031                                                                       s_3)))
41032                                                                (let ((flat-s_0
41033                                                                       (to-syntax-list.1$1
41034                                                                        s_4)))
41035                                                                  (if (not
41036                                                                       flat-s_0)
41037                                                                    (let ((str_0
41038                                                                           "bad syntax"))
41039                                                                      (error
41040                                                                       str_0))
41041                                                                    (call-with-values
41042                                                                     (lambda ()
41043                                                                       (begin
41044                                                                         (letrec*
41045                                                                          ((for-loop_0
41046                                                                            (|#%name|
41047                                                                             for-loop
41048                                                                             (lambda (ids_0
41049                                                                                      rhs_0
41050                                                                                      lst_0)
41051                                                                               (begin
41052                                                                                 (if (pair?
41053                                                                                      lst_0)
41054                                                                                   (let ((s_5
41055                                                                                          (unsafe-car
41056                                                                                           lst_0)))
41057                                                                                     (let ((rest_0
41058                                                                                            (unsafe-cdr
41059                                                                                             lst_0)))
41060                                                                                       (call-with-values
41061                                                                                        (lambda ()
41062                                                                                          (call-with-values
41063                                                                                           (lambda ()
41064                                                                                             (call-with-values
41065                                                                                              (lambda ()
41066                                                                                                (let ((s_6
41067                                                                                                       (if (syntax?
41068                                                                                                            s_5)
41069                                                                                                         (syntax-e
41070                                                                                                          s_5)
41071                                                                                                         s_5)))
41072                                                                                                  (if (pair?
41073                                                                                                       s_6)
41074                                                                                                    (let ((ids30_0
41075                                                                                                           (let ((s_7
41076                                                                                                                  (car
41077                                                                                                                   s_6)))
41078                                                                                                             s_7)))
41079                                                                                                      (let ((rhs31_0
41080                                                                                                             (let ((s_7
41081                                                                                                                    (cdr
41082                                                                                                                     s_6)))
41083                                                                                                               (let ((s_8
41084                                                                                                                      (if (syntax?
41085                                                                                                                           s_7)
41086                                                                                                                        (syntax-e
41087                                                                                                                         s_7)
41088                                                                                                                        s_7)))
41089                                                                                                                 (if (pair?
41090                                                                                                                      s_8)
41091                                                                                                                   (let ((rhs32_0
41092                                                                                                                          (let ((s_9
41093                                                                                                                                 (car
41094                                                                                                                                  s_8)))
41095                                                                                                                            s_9)))
41096                                                                                                                     (call-with-values
41097                                                                                                                      (lambda ()
41098                                                                                                                        (let ((s_9
41099                                                                                                                               (cdr
41100                                                                                                                                s_8)))
41101                                                                                                                          (let ((s_10
41102                                                                                                                                 (if (syntax?
41103                                                                                                                                      s_9)
41104                                                                                                                                   (syntax-e
41105                                                                                                                                    s_9)
41106                                                                                                                                   s_9)))
41107                                                                                                                            (if (null?
41108                                                                                                                                 s_10)
41109                                                                                                                              (values)
41110                                                                                                                              (let ((str_0
41111                                                                                                                                     "bad syntax"))
41112                                                                                                                                (error
41113                                                                                                                                 str_0))))))
41114                                                                                                                      (case-lambda
41115                                                                                                                       (()
41116                                                                                                                        (let ((rhs32_1
41117                                                                                                                               rhs32_0))
41118                                                                                                                          (values
41119                                                                                                                           rhs32_1)))
41120                                                                                                                       (args
41121                                                                                                                        (raise-binding-result-arity-error
41122                                                                                                                         0
41123                                                                                                                         args)))))
41124                                                                                                                   (let ((str_0
41125                                                                                                                          "bad syntax"))
41126                                                                                                                     (error
41127                                                                                                                      str_0)))))))
41128                                                                                                        (let ((ids30_1
41129                                                                                                               ids30_0))
41130                                                                                                          (values
41131                                                                                                           ids30_1
41132                                                                                                           rhs31_0))))
41133                                                                                                    (let ((str_0
41134                                                                                                           "bad syntax"))
41135                                                                                                      (error
41136                                                                                                       str_0)))))
41137                                                                                              (case-lambda
41138                                                                                               ((ids34_0
41139                                                                                                 rhs35_0)
41140                                                                                                (values
41141                                                                                                 (cons
41142                                                                                                  ids34_0
41143                                                                                                  ids_0)
41144                                                                                                 (cons
41145                                                                                                  rhs35_0
41146                                                                                                  rhs_0)))
41147                                                                                               (args
41148                                                                                                (raise-binding-result-arity-error
41149                                                                                                 2
41150                                                                                                 args)))))
41151                                                                                           (case-lambda
41152                                                                                            ((ids_1
41153                                                                                              rhs_1)
41154                                                                                             (values
41155                                                                                              ids_1
41156                                                                                              rhs_1))
41157                                                                                            (args
41158                                                                                             (raise-binding-result-arity-error
41159                                                                                              2
41160                                                                                              args)))))
41161                                                                                        (case-lambda
41162                                                                                         ((ids_1
41163                                                                                           rhs_1)
41164                                                                                          (for-loop_0
41165                                                                                           ids_1
41166                                                                                           rhs_1
41167                                                                                           rest_0))
41168                                                                                         (args
41169                                                                                          (raise-binding-result-arity-error
41170                                                                                           2
41171                                                                                           args))))))
41172                                                                                   (values
41173                                                                                    ids_0
41174                                                                                    rhs_0)))))))
41175                                                                          (for-loop_0
41176                                                                           null
41177                                                                           null
41178                                                                           flat-s_0))))
41179                                                                     (case-lambda
41180                                                                      ((ids_0
41181                                                                        rhs_0)
41182                                                                       (let ((app_0
41183                                                                              (reverse$1
41184                                                                               ids_0)))
41185                                                                         (values
41186                                                                          app_0
41187                                                                          (reverse$1
41188                                                                           rhs_0))))
41189                                                                      (args
41190                                                                       (raise-binding-result-arity-error
41191                                                                        2
41192                                                                        args)))))))))
41193                                                          (case-lambda
41194                                                           ((ids27_0 rhs28_0)
41195                                                            (let ((body29_0
41196                                                                   (let ((s_3
41197                                                                          (cdr
41198                                                                           s_2)))
41199                                                                     (let ((s_4
41200                                                                            (if (syntax?
41201                                                                                 s_3)
41202                                                                              (syntax-e
41203                                                                               s_3)
41204                                                                              s_3)))
41205                                                                       (if (pair?
41206                                                                            s_4)
41207                                                                         (let ((body33_0
41208                                                                                (let ((s_5
41209                                                                                       (car
41210                                                                                        s_4)))
41211                                                                                  s_5)))
41212                                                                           (call-with-values
41213                                                                            (lambda ()
41214                                                                              (let ((s_5
41215                                                                                     (cdr
41216                                                                                      s_4)))
41217                                                                                (let ((s_6
41218                                                                                       (if (syntax?
41219                                                                                            s_5)
41220                                                                                         (syntax-e
41221                                                                                          s_5)
41222                                                                                         s_5)))
41223                                                                                  (if (null?
41224                                                                                       s_6)
41225                                                                                    (values)
41226                                                                                    (let ((str_0
41227                                                                                           "bad syntax"))
41228                                                                                      (error
41229                                                                                       str_0))))))
41230                                                                            (case-lambda
41231                                                                             (()
41232                                                                              (let ((body33_1
41233                                                                                     body33_0))
41234                                                                                (values
41235                                                                                 body33_1)))
41236                                                                             (args
41237                                                                              (raise-binding-result-arity-error
41238                                                                               0
41239                                                                               args)))))
41240                                                                         (let ((str_0
41241                                                                                "bad syntax"))
41242                                                                           (error
41243                                                                            str_0)))))))
41244                                                              (let ((ids27_1
41245                                                                     ids27_0)
41246                                                                    (rhs28_1
41247                                                                     rhs28_0))
41248                                                                (values
41249                                                                 ids27_1
41250                                                                 rhs28_1
41251                                                                 body29_0))))
41252                                                           (args
41253                                                            (raise-binding-result-arity-error
41254                                                             2
41255                                                             args))))
41256                                                         (let ((str_0
41257                                                                "bad syntax"))
41258                                                           (error str_0))))))
41259                                                 (case-lambda
41260                                                  ((ids24_0 rhs25_0 body26_0)
41261                                                   (let ((_1 _0))
41262                                                     (values
41263                                                      _1
41264                                                      ids24_0
41265                                                      rhs25_0
41266                                                      body26_0)))
41267                                                  (args
41268                                                   (raise-binding-result-arity-error
41269                                                    3
41270                                                    args)))))
41271                                              (let ((str_0 "bad syntax"))
41272                                                (error str_0)))))
41273                                        (case-lambda
41274                                         ((_0 ids20_0 rhs21_0 body22_0)
41275                                          (values
41276                                           #t
41277                                           _0
41278                                           ids20_0
41279                                           rhs21_0
41280                                           body22_0))
41281                                         (args
41282                                          (raise-binding-result-arity-error
41283                                           4
41284                                           args)))))
41285                                     (case-lambda
41286                                      ((ok?_0 _0 ids20_0 rhs21_0 body22_0)
41287                                       (if (not
41288                                            (begin
41289                                              (letrec*
41290                                               ((for-loop_0
41291                                                 (|#%name|
41292                                                  for-loop
41293                                                  (lambda (result_0
41294                                                           lst_0
41295                                                           lst_1)
41296                                                    (begin
41297                                                      (if (if (pair? lst_0)
41298                                                            (pair? lst_1)
41299                                                            #f)
41300                                                        (let ((ids_0
41301                                                               (unsafe-car
41302                                                                lst_0)))
41303                                                          (let ((rest_0
41304                                                                 (unsafe-cdr
41305                                                                  lst_0)))
41306                                                            (let ((rhs_0
41307                                                                   (unsafe-car
41308                                                                    lst_1)))
41309                                                              (let ((rest_1
41310                                                                     (unsafe-cdr
41311                                                                      lst_1)))
41312                                                                (let ((result_1
41313                                                                       (let ((result_1
41314                                                                              (effects?_0
41315                                                                               rhs_0
41316                                                                               (correlated-length
41317                                                                                ids_0)
41318                                                                               locals_0)))
41319                                                                         (values
41320                                                                          result_1))))
41321                                                                  (if (if (not
41322                                                                           (let ((x_0
41323                                                                                  (list
41324                                                                                   ids_0)))
41325                                                                             result_1))
41326                                                                        (if (not
41327                                                                             (let ((x_0
41328                                                                                    (list
41329                                                                                     rhs_0)))
41330                                                                               result_1))
41331                                                                          #t
41332                                                                          #f)
41333                                                                        #f)
41334                                                                    (for-loop_0
41335                                                                     result_1
41336                                                                     rest_0
41337                                                                     rest_1)
41338                                                                    result_1))))))
41339                                                        result_0))))))
41340                                               (for-loop_0
41341                                                #f
41342                                                ids20_0
41343                                                rhs21_0))))
41344                                         (loop_0
41345                                          body22_0
41346                                          (add-binding-info
41347                                           locals_0
41348                                           ids20_0
41349                                           rhs21_0))
41350                                         #f))
41351                                      (args
41352                                       (raise-binding-result-arity-error
41353                                        5
41354                                        args))))
41355                                    (if (unsafe-fx< index_0 4)
41356                                      (call-with-values
41357                                       (lambda ()
41358                                         (call-with-values
41359                                          (lambda ()
41360                                            (let ((s_0
41361                                                   (if (syntax? e_0)
41362                                                     (syntax-e e_0)
41363                                                     e_0)))
41364                                              (if (pair? s_0)
41365                                                (let ((_0
41366                                                       (let ((s_1 (car s_0)))
41367                                                         s_1)))
41368                                                  (let ((e39_0
41369                                                         (let ((s_1 (cdr s_0)))
41370                                                           (let ((s_2
41371                                                                  (if (syntax?
41372                                                                       s_1)
41373                                                                    (syntax-e
41374                                                                     s_1)
41375                                                                    s_1)))
41376                                                             (let ((flat-s_0
41377                                                                    (to-syntax-list.1$1
41378                                                                     s_2)))
41379                                                               (if (not
41380                                                                    flat-s_0)
41381                                                                 (let ((str_0
41382                                                                        "bad syntax"))
41383                                                                   (error
41384                                                                    str_0))
41385                                                                 flat-s_0))))))
41386                                                    (let ((_1 _0))
41387                                                      (values _1 e39_0))))
41388                                                (let ((str_0 "bad syntax"))
41389                                                  (error str_0)))))
41390                                          (case-lambda
41391                                           ((_0 e37_0) (values #t _0 e37_0))
41392                                           (args
41393                                            (raise-binding-result-arity-error
41394                                             2
41395                                             args)))))
41396                                       (case-lambda
41397                                        ((ok?_0 _0 e37_0)
41398                                         (if (begin
41399                                               (letrec*
41400                                                ((for-loop_0
41401                                                  (|#%name|
41402                                                   for-loop
41403                                                   (lambda (result_0 lst_0)
41404                                                     (begin
41405                                                       (if (pair? lst_0)
41406                                                         (let ((e_1
41407                                                                (unsafe-car
41408                                                                 lst_0)))
41409                                                           (let ((rest_0
41410                                                                  (unsafe-cdr
41411                                                                   lst_0)))
41412                                                             (let ((result_1
41413                                                                    (let ((result_1
41414                                                                           (not
41415                                                                            (effects?_0
41416                                                                             e_1
41417                                                                             1
41418                                                                             locals_0))))
41419                                                                      (values
41420                                                                       result_1))))
41421                                                               (if (if (not
41422                                                                        (let ((x_0
41423                                                                               (list
41424                                                                                e_1)))
41425                                                                          (not
41426                                                                           result_1)))
41427                                                                     #t
41428                                                                     #f)
41429                                                                 (for-loop_0
41430                                                                  result_1
41431                                                                  rest_0)
41432                                                                 result_1))))
41433                                                         result_0))))))
41434                                                (for-loop_0 #t e37_0)))
41435                                           (length e37_0)
41436                                           #f))
41437                                        (args
41438                                         (raise-binding-result-arity-error
41439                                          3
41440                                          args))))
41441                                      (if (unsafe-fx< index_0 5)
41442                                        (call-with-values
41443                                         (lambda ()
41444                                           (call-with-values
41445                                            (lambda ()
41446                                              (let ((s_0
41447                                                     (if (syntax? e_0)
41448                                                       (syntax-e e_0)
41449                                                       e_0)))
41450                                                (if (pair? s_0)
41451                                                  (let ((_0
41452                                                         (let ((s_1 (car s_0)))
41453                                                           s_1)))
41454                                                    (let ((e43_0
41455                                                           (let ((s_1
41456                                                                  (cdr s_0)))
41457                                                             (let ((s_2
41458                                                                    (if (syntax?
41459                                                                         s_1)
41460                                                                      (syntax-e
41461                                                                       s_1)
41462                                                                      s_1)))
41463                                                               (let ((flat-s_0
41464                                                                      (to-syntax-list.1$1
41465                                                                       s_2)))
41466                                                                 (if (not
41467                                                                      flat-s_0)
41468                                                                   (let ((str_0
41469                                                                          "bad syntax"))
41470                                                                     (error
41471                                                                      str_0))
41472                                                                   flat-s_0))))))
41473                                                      (let ((_1 _0))
41474                                                        (values _1 e43_0))))
41475                                                  (let ((str_0 "bad syntax"))
41476                                                    (error str_0)))))
41477                                            (case-lambda
41478                                             ((_0 e41_0) (values #t _0 e41_0))
41479                                             (args
41480                                              (raise-binding-result-arity-error
41481                                               2
41482                                               args)))))
41483                                         (case-lambda
41484                                          ((ok?_0 _0 e41_0)
41485                                           (if (begin
41486                                                 (letrec*
41487                                                  ((for-loop_0
41488                                                    (|#%name|
41489                                                     for-loop
41490                                                     (lambda (result_0 lst_0)
41491                                                       (begin
41492                                                         (if (pair? lst_0)
41493                                                           (let ((e_1
41494                                                                  (unsafe-car
41495                                                                   lst_0)))
41496                                                             (let ((rest_0
41497                                                                    (unsafe-cdr
41498                                                                     lst_0)))
41499                                                               (let ((result_1
41500                                                                      (let ((result_1
41501                                                                             (not
41502                                                                              (effects?_0
41503                                                                               e_1
41504                                                                               1
41505                                                                               locals_0))))
41506                                                                        (values
41507                                                                         result_1))))
41508                                                                 (if (if (not
41509                                                                          (let ((x_0
41510                                                                                 (list
41511                                                                                  e_1)))
41512                                                                            (not
41513                                                                             result_1)))
41514                                                                       #t
41515                                                                       #f)
41516                                                                   (for-loop_0
41517                                                                    result_1
41518                                                                    rest_0)
41519                                                                   result_1))))
41520                                                           result_0))))))
41521                                                  (for-loop_0 #t e41_0)))
41522                                             1
41523                                             #f))
41524                                          (args
41525                                           (raise-binding-result-arity-error
41526                                            3
41527                                            args))))
41528                                        (call-with-values
41529                                         (lambda ()
41530                                           (call-with-values
41531                                            (lambda ()
41532                                              (let ((s_0
41533                                                     (if (syntax? e_0)
41534                                                       (syntax-e e_0)
41535                                                       e_0)))
41536                                                (if (pair? s_0)
41537                                                  (let ((_0
41538                                                         (let ((s_1 (car s_0)))
41539                                                           s_1)))
41540                                                    (let ((e47_0
41541                                                           (let ((s_1
41542                                                                  (cdr s_0)))
41543                                                             (let ((s_2
41544                                                                    (if (syntax?
41545                                                                         s_1)
41546                                                                      (syntax-e
41547                                                                       s_1)
41548                                                                      s_1)))
41549                                                               (let ((flat-s_0
41550                                                                      (to-syntax-list.1$1
41551                                                                       s_2)))
41552                                                                 (if (not
41553                                                                      flat-s_0)
41554                                                                   (let ((str_0
41555                                                                          "bad syntax"))
41556                                                                     (error
41557                                                                      str_0))
41558                                                                   flat-s_0))))))
41559                                                      (let ((_1 _0))
41560                                                        (values _1 e47_0))))
41561                                                  (let ((str_0 "bad syntax"))
41562                                                    (error str_0)))))
41563                                            (case-lambda
41564                                             ((_0 e45_0) (values #t _0 e45_0))
41565                                             (args
41566                                              (raise-binding-result-arity-error
41567                                               2
41568                                               args)))))
41569                                         (case-lambda
41570                                          ((ok?_0 _0 e45_0)
41571                                           (letrec*
41572                                            ((bloop_0
41573                                              (|#%name|
41574                                               bloop
41575                                               (lambda (es_0)
41576                                                 (begin
41577                                                   (if (null? es_0)
41578                                                     #f
41579                                                     (if (null? (cdr es_0))
41580                                                       (loop_0
41581                                                        (car es_0)
41582                                                        locals_0)
41583                                                       (if (not
41584                                                            (effects?_0
41585                                                             (car es_0)
41586                                                             #f
41587                                                             locals_0))
41588                                                         (bloop_0 (cdr es_0))
41589                                                         #f))))))))
41590                                            (bloop_0 e45_0)))
41591                                          (args
41592                                           (raise-binding-result-arity-error
41593                                            3
41594                                            args))))))))
41595                                (if (unsafe-fx< index_0 9)
41596                                  (if (unsafe-fx< index_0 7)
41597                                    (call-with-values
41598                                     (lambda ()
41599                                       (call-with-values
41600                                        (lambda ()
41601                                          (let ((s_0
41602                                                 (if (syntax? e_0)
41603                                                   (syntax-e e_0)
41604                                                   e_0)))
41605                                            (if (pair? s_0)
41606                                              (let ((_0
41607                                                     (let ((s_1 (car s_0)))
41608                                                       s_1)))
41609                                                (call-with-values
41610                                                 (lambda ()
41611                                                   (let ((s_1 (cdr s_0)))
41612                                                     (let ((s_2
41613                                                            (if (syntax? s_1)
41614                                                              (syntax-e s_1)
41615                                                              s_1)))
41616                                                       (if (pair? s_2)
41617                                                         (let ((e054_0
41618                                                                (let ((s_3
41619                                                                       (car
41620                                                                        s_2)))
41621                                                                  s_3)))
41622                                                           (let ((e55_0
41623                                                                  (let ((s_3
41624                                                                         (cdr
41625                                                                          s_2)))
41626                                                                    (let ((s_4
41627                                                                           (if (syntax?
41628                                                                                s_3)
41629                                                                             (syntax-e
41630                                                                              s_3)
41631                                                                             s_3)))
41632                                                                      (let ((flat-s_0
41633                                                                             (to-syntax-list.1$1
41634                                                                              s_4)))
41635                                                                        (if (not
41636                                                                             flat-s_0)
41637                                                                          (let ((str_0
41638                                                                                 "bad syntax"))
41639                                                                            (error
41640                                                                             str_0))
41641                                                                          flat-s_0))))))
41642                                                             (let ((e054_1
41643                                                                    e054_0))
41644                                                               (values
41645                                                                e054_1
41646                                                                e55_0))))
41647                                                         (let ((str_0
41648                                                                "bad syntax"))
41649                                                           (error str_0))))))
41650                                                 (case-lambda
41651                                                  ((e052_0 e53_0)
41652                                                   (let ((_1 _0))
41653                                                     (values _1 e052_0 e53_0)))
41654                                                  (args
41655                                                   (raise-binding-result-arity-error
41656                                                    2
41657                                                    args)))))
41658                                              (let ((str_0 "bad syntax"))
41659                                                (error str_0)))))
41660                                        (case-lambda
41661                                         ((_0 e049_0 e50_0)
41662                                          (values #t _0 e049_0 e50_0))
41663                                         (args
41664                                          (raise-binding-result-arity-error
41665                                           3
41666                                           args)))))
41667                                     (case-lambda
41668                                      ((ok?_0 _0 e049_0 e50_0)
41669                                       (if (begin
41670                                             (letrec*
41671                                              ((for-loop_0
41672                                                (|#%name|
41673                                                 for-loop
41674                                                 (lambda (result_0 lst_0)
41675                                                   (begin
41676                                                     (if (pair? lst_0)
41677                                                       (let ((e_1
41678                                                              (unsafe-car
41679                                                               lst_0)))
41680                                                         (let ((rest_0
41681                                                                (unsafe-cdr
41682                                                                 lst_0)))
41683                                                           (let ((result_1
41684                                                                  (let ((result_1
41685                                                                         (not
41686                                                                          (effects?_0
41687                                                                           e_1
41688                                                                           #f
41689                                                                           locals_0))))
41690                                                                    (values
41691                                                                     result_1))))
41692                                                             (if (if (not
41693                                                                      (let ((x_0
41694                                                                             (list
41695                                                                              e_1)))
41696                                                                        (not
41697                                                                         result_1)))
41698                                                                   #t
41699                                                                   #f)
41700                                                               (for-loop_0
41701                                                                result_1
41702                                                                rest_0)
41703                                                               result_1))))
41704                                                       result_0))))))
41705                                              (for-loop_0 #t e50_0)))
41706                                         (loop_0 e049_0 locals_0)
41707                                         #f))
41708                                      (args
41709                                       (raise-binding-result-arity-error
41710                                        4
41711                                        args))))
41712                                    (if (unsafe-fx< index_0 8)
41713                                      (call-with-values
41714                                       (lambda ()
41715                                         (if (let ((s_0
41716                                                    (if (syntax? e_0)
41717                                                      (syntax-e e_0)
41718                                                      e_0)))
41719                                               (if (pair? s_0)
41720                                                 (if (let ((s_1 (car s_0))) #t)
41721                                                   (let ((s_1 (cdr s_0)))
41722                                                     (let ((s_2
41723                                                            (if (syntax? s_1)
41724                                                              (syntax-e s_1)
41725                                                              s_1)))
41726                                                       (if (pair? s_2)
41727                                                         (if (let ((s_3
41728                                                                    (car s_2)))
41729                                                               #t)
41730                                                           (let ((s_3
41731                                                                  (cdr s_2)))
41732                                                             (let ((s_4
41733                                                                    (if (syntax?
41734                                                                         s_3)
41735                                                                      (syntax-e
41736                                                                       s_3)
41737                                                                      s_3)))
41738                                                               (if (pair? s_4)
41739                                                                 (if (let ((s_5
41740                                                                            (car
41741                                                                             s_4)))
41742                                                                       #t)
41743                                                                   (let ((s_5
41744                                                                          (cdr
41745                                                                           s_4)))
41746                                                                     (let ((s_6
41747                                                                            (if (syntax?
41748                                                                                 s_5)
41749                                                                              (syntax-e
41750                                                                               s_5)
41751                                                                              s_5)))
41752                                                                       (if (pair?
41753                                                                            s_6)
41754                                                                         (if (let ((s_7
41755                                                                                    (car
41756                                                                                     s_6)))
41757                                                                               (let ((s_8
41758                                                                                      (if (syntax?
41759                                                                                           s_7)
41760                                                                                        (syntax-e
41761                                                                                         s_7)
41762                                                                                        s_7)))
41763                                                                                 (if (pair?
41764                                                                                      s_8)
41765                                                                                   (if (let ((s_9
41766                                                                                              (car
41767                                                                                               s_8)))
41768                                                                                         #t)
41769                                                                                     (let ((s_9
41770                                                                                            (cdr
41771                                                                                             s_8)))
41772                                                                                       (let ((s_10
41773                                                                                              (if (syntax?
41774                                                                                                   s_9)
41775                                                                                                (syntax-e
41776                                                                                                 s_9)
41777                                                                                                s_9)))
41778                                                                                         (if (pair?
41779                                                                                              s_10)
41780                                                                                           (if (let ((s_11
41781                                                                                                      (car
41782                                                                                                       s_10)))
41783                                                                                                 #t)
41784                                                                                             (let ((s_11
41785                                                                                                    (cdr
41786                                                                                                     s_10)))
41787                                                                                               (let ((s_12
41788                                                                                                      (if (syntax?
41789                                                                                                           s_11)
41790                                                                                                        (syntax-e
41791                                                                                                         s_11)
41792                                                                                                        s_11)))
41793                                                                                                 (null?
41794                                                                                                  s_12)))
41795                                                                                             #f)
41796                                                                                           #f)))
41797                                                                                     #f)
41798                                                                                   #f)))
41799                                                                           (let ((s_7
41800                                                                                  (cdr
41801                                                                                   s_6)))
41802                                                                             (let ((s_8
41803                                                                                    (if (syntax?
41804                                                                                         s_7)
41805                                                                                      (syntax-e
41806                                                                                       s_7)
41807                                                                                      s_7)))
41808                                                                               (null?
41809                                                                                s_8)))
41810                                                                           #f)
41811                                                                         #f)))
41812                                                                   #f)
41813                                                                 #f)))
41814                                                           #f)
41815                                                         #f)))
41816                                                   #f)
41817                                                 #f))
41818                                           (call-with-values
41819                                            (lambda ()
41820                                              (let ((s_0
41821                                                     (if (syntax? e_0)
41822                                                       (syntax-e e_0)
41823                                                       e_0)))
41824                                                (let ((mp61_0
41825                                                       (let ((s_1 (car s_0)))
41826                                                         s_1)))
41827                                                  (call-with-values
41828                                                   (lambda ()
41829                                                     (let ((s_1 (cdr s_0)))
41830                                                       (let ((s_2
41831                                                              (if (syntax? s_1)
41832                                                                (syntax-e s_1)
41833                                                                s_1)))
41834                                                         (let ((v66_0
41835                                                                (let ((s_3
41836                                                                       (car
41837                                                                        s_2)))
41838                                                                  s_3)))
41839                                                           (call-with-values
41840                                                            (lambda ()
41841                                                              (let ((s_3
41842                                                                     (cdr
41843                                                                      s_2)))
41844                                                                (let ((s_4
41845                                                                       (if (syntax?
41846                                                                            s_3)
41847                                                                         (syntax-e
41848                                                                          s_3)
41849                                                                         s_3)))
41850                                                                  (let ((g70_0
41851                                                                         (let ((s_5
41852                                                                                (car
41853                                                                                 s_4)))
41854                                                                           s_5)))
41855                                                                    (call-with-values
41856                                                                     (lambda ()
41857                                                                       (let ((s_5
41858                                                                              (cdr
41859                                                                               s_4)))
41860                                                                         (let ((s_6
41861                                                                                (if (syntax?
41862                                                                                     s_5)
41863                                                                                  (syntax-e
41864                                                                                   s_5)
41865                                                                                  s_5)))
41866                                                                           (call-with-values
41867                                                                            (lambda ()
41868                                                                              (let ((s_7
41869                                                                                     (car
41870                                                                                      s_6)))
41871                                                                                (let ((s_8
41872                                                                                       (if (syntax?
41873                                                                                            s_7)
41874                                                                                         (syntax-e
41875                                                                                          s_7)
41876                                                                                         s_7)))
41877                                                                                  (let ((quot75_0
41878                                                                                         (let ((s_9
41879                                                                                                (car
41880                                                                                                 s_8)))
41881                                                                                           s_9)))
41882                                                                                    (let ((nm76_0
41883                                                                                           (let ((s_9
41884                                                                                                  (cdr
41885                                                                                                   s_8)))
41886                                                                                             (let ((s_10
41887                                                                                                    (if (syntax?
41888                                                                                                         s_9)
41889                                                                                                      (syntax-e
41890                                                                                                       s_9)
41891                                                                                                      s_9)))
41892                                                                                               (let ((nm77_0
41893                                                                                                      (let ((s_11
41894                                                                                                             (car
41895                                                                                                              s_10)))
41896                                                                                                        s_11)))
41897                                                                                                 (call-with-values
41898                                                                                                  (lambda ()
41899                                                                                                    (let ((s_11
41900                                                                                                           (cdr
41901                                                                                                            s_10)))
41902                                                                                                      (let ((s_12
41903                                                                                                             (if (syntax?
41904                                                                                                                  s_11)
41905                                                                                                               (syntax-e
41906                                                                                                                s_11)
41907                                                                                                               s_11)))
41908                                                                                                        (values))))
41909                                                                                                  (case-lambda
41910                                                                                                   (()
41911                                                                                                    (let ((nm77_1
41912                                                                                                           nm77_0))
41913                                                                                                      (values
41914                                                                                                       nm77_1)))
41915                                                                                                   (args
41916                                                                                                    (raise-binding-result-arity-error
41917                                                                                                     0
41918                                                                                                     args)))))))))
41919                                                                                      (let ((quot75_1
41920                                                                                             quot75_0))
41921                                                                                        (values
41922                                                                                         quot75_1
41923                                                                                         nm76_0)))))))
41924                                                                            (case-lambda
41925                                                                             ((quot73_0
41926                                                                               nm74_0)
41927                                                                              (call-with-values
41928                                                                               (lambda ()
41929                                                                                 (let ((s_7
41930                                                                                        (cdr
41931                                                                                         s_6)))
41932                                                                                   (let ((s_8
41933                                                                                          (if (syntax?
41934                                                                                               s_7)
41935                                                                                            (syntax-e
41936                                                                                             s_7)
41937                                                                                            s_7)))
41938                                                                                     (values))))
41939                                                                               (case-lambda
41940                                                                                (()
41941                                                                                 (let ((quot73_1
41942                                                                                        quot73_0)
41943                                                                                       (nm74_1
41944                                                                                        nm74_0))
41945                                                                                   (values
41946                                                                                    quot73_1
41947                                                                                    nm74_1)))
41948                                                                                (args
41949                                                                                 (raise-binding-result-arity-error
41950                                                                                  0
41951                                                                                  args)))))
41952                                                                             (args
41953                                                                              (raise-binding-result-arity-error
41954                                                                               2
41955                                                                               args)))))))
41956                                                                     (case-lambda
41957                                                                      ((quot71_0
41958                                                                        nm72_0)
41959                                                                       (let ((g70_1
41960                                                                              g70_0))
41961                                                                         (values
41962                                                                          g70_1
41963                                                                          quot71_0
41964                                                                          nm72_0)))
41965                                                                      (args
41966                                                                       (raise-binding-result-arity-error
41967                                                                        2
41968                                                                        args))))))))
41969                                                            (case-lambda
41970                                                             ((g67_0
41971                                                               quot68_0
41972                                                               nm69_0)
41973                                                              (let ((v66_1
41974                                                                     v66_0))
41975                                                                (values
41976                                                                 v66_1
41977                                                                 g67_0
41978                                                                 quot68_0
41979                                                                 nm69_0)))
41980                                                             (args
41981                                                              (raise-binding-result-arity-error
41982                                                               3
41983                                                               args))))))))
41984                                                   (case-lambda
41985                                                    ((v62_0
41986                                                      g63_0
41987                                                      quot64_0
41988                                                      nm65_0)
41989                                                     (let ((mp61_1 mp61_0))
41990                                                       (values
41991                                                        mp61_1
41992                                                        v62_0
41993                                                        g63_0
41994                                                        quot64_0
41995                                                        nm65_0)))
41996                                                    (args
41997                                                     (raise-binding-result-arity-error
41998                                                      4
41999                                                      args)))))))
42000                                            (case-lambda
42001                                             ((mp56_0
42002                                               v57_0
42003                                               g58_0
42004                                               quot59_0
42005                                               nm60_0)
42006                                              (values
42007                                               #t
42008                                               mp56_0
42009                                               v57_0
42010                                               g58_0
42011                                               quot59_0
42012                                               nm60_0))
42013                                             (args
42014                                              (raise-binding-result-arity-error
42015                                               5
42016                                               args))))
42017                                           (values #f #f #f #f #f #f)))
42018                                       (case-lambda
42019                                        ((ok?_0
42020                                          mp56_0
42021                                          v57_0
42022                                          g58_0
42023                                          quot59_0
42024                                          nm60_0)
42025                                         (if ok?_0
42026                                           (if (not
42027                                                (any-side-effects?.1
42028                                                 hash2610
42029                                                 hash2610
42030                                                 unsafe-undefined
42031                                                 v57_0
42032                                                 1))
42033                                             (if (eq? 'quote quot59_0)
42034                                               (if (symbol? nm60_0)
42035                                                 (if (eq? #f g58_0) 1 #f)
42036                                                 #f)
42037                                               #f)
42038                                             #f)
42039                                           #f))
42040                                        (args
42041                                         (raise-binding-result-arity-error
42042                                          6
42043                                          args))))
42044                                      (if (ok-make-struct-type?
42045                                           e_0
42046                                           ready-variable?_0
42047                                           known-defns2_0)
42048                                        5
42049                                        #f)))
42050                                  (if (unsafe-fx< index_0 11)
42051                                    (if (unsafe-fx< index_0 10)
42052                                      (if (ok-make-struct-field-accessor/mutator?
42053                                           e_0
42054                                           locals_0
42055                                           'general-accessor
42056                                           known-defns2_0)
42057                                        1
42058                                        #f)
42059                                      (if (ok-make-struct-field-accessor/mutator?
42060                                           e_0
42061                                           locals_0
42062                                           'general-mutator
42063                                           known-defns2_0)
42064                                        1
42065                                        #f))
42066                                    (if (unsafe-fx< index_0 12)
42067                                      (if (ok-make-struct-type-property?
42068                                           e_0
42069                                           known-defns2_0)
42070                                        3
42071                                        #f)
42072                                      (if (unsafe-fx< index_0 13)
42073                                        (call-with-values
42074                                         (lambda ()
42075                                           (if (let ((s_0
42076                                                      (if (syntax? e_0)
42077                                                        (syntax-e e_0)
42078                                                        e_0)))
42079                                                 (if (pair? s_0)
42080                                                   (if (let ((s_1 (car s_0)))
42081                                                         #t)
42082                                                     (let ((s_1 (cdr s_0)))
42083                                                       (let ((s_2
42084                                                              (if (syntax? s_1)
42085                                                                (syntax-e s_1)
42086                                                                s_1)))
42087                                                         (if (pair? s_2)
42088                                                           (if (let ((s_3
42089                                                                      (car
42090                                                                       s_2)))
42091                                                                 (let ((s_4
42092                                                                        (if (syntax?
42093                                                                             s_3)
42094                                                                          (syntax-e
42095                                                                           s_3)
42096                                                                          s_3)))
42097                                                                   (if (pair?
42098                                                                        s_4)
42099                                                                     (if (let ((s_5
42100                                                                                (car
42101                                                                                 s_4)))
42102                                                                           #t)
42103                                                                       (let ((s_5
42104                                                                              (cdr
42105                                                                               s_4)))
42106                                                                         (let ((s_6
42107                                                                                (if (syntax?
42108                                                                                     s_5)
42109                                                                                  (syntax-e
42110                                                                                   s_5)
42111                                                                                  s_5)))
42112                                                                           (if (pair?
42113                                                                                s_6)
42114                                                                             (if (let ((s_7
42115                                                                                        (car
42116                                                                                         s_6)))
42117                                                                                   #t)
42118                                                                               (let ((s_7
42119                                                                                      (cdr
42120                                                                                       s_6)))
42121                                                                                 (let ((s_8
42122                                                                                        (if (syntax?
42123                                                                                             s_7)
42124                                                                                          (syntax-e
42125                                                                                           s_7)
42126                                                                                          s_7)))
42127                                                                                   (null?
42128                                                                                    s_8)))
42129                                                                               #f)
42130                                                                             #f)))
42131                                                                       #f)
42132                                                                     #f)))
42133                                                             (let ((s_3
42134                                                                    (cdr s_2)))
42135                                                               (let ((s_4
42136                                                                      (if (syntax?
42137                                                                           s_3)
42138                                                                        (syntax-e
42139                                                                         s_3)
42140                                                                        s_3)))
42141                                                                 (null? s_4)))
42142                                                             #f)
42143                                                           #f)))
42144                                                     #f)
42145                                                   #f))
42146                                             (call-with-values
42147                                              (lambda ()
42148                                                (let ((s_0
42149                                                       (if (syntax? e_0)
42150                                                         (syntax-e e_0)
42151                                                         e_0)))
42152                                                  (let ((gs83_0
42153                                                         (let ((s_1 (car s_0)))
42154                                                           s_1)))
42155                                                    (call-with-values
42156                                                     (lambda ()
42157                                                       (let ((s_1 (cdr s_0)))
42158                                                         (let ((s_2
42159                                                                (if (syntax?
42160                                                                     s_1)
42161                                                                  (syntax-e
42162                                                                   s_1)
42163                                                                  s_1)))
42164                                                           (call-with-values
42165                                                            (lambda ()
42166                                                              (let ((s_3
42167                                                                     (car
42168                                                                      s_2)))
42169                                                                (let ((s_4
42170                                                                       (if (syntax?
42171                                                                            s_3)
42172                                                                         (syntax-e
42173                                                                          s_3)
42174                                                                         s_3)))
42175                                                                  (let ((quot88_0
42176                                                                         (let ((s_5
42177                                                                                (car
42178                                                                                 s_4)))
42179                                                                           s_5)))
42180                                                                    (let ((datum89_0
42181                                                                           (let ((s_5
42182                                                                                  (cdr
42183                                                                                   s_4)))
42184                                                                             (let ((s_6
42185                                                                                    (if (syntax?
42186                                                                                         s_5)
42187                                                                                      (syntax-e
42188                                                                                       s_5)
42189                                                                                      s_5)))
42190                                                                               (let ((datum90_0
42191                                                                                      (let ((s_7
42192                                                                                             (car
42193                                                                                              s_6)))
42194                                                                                        s_7)))
42195                                                                                 (call-with-values
42196                                                                                  (lambda ()
42197                                                                                    (let ((s_7
42198                                                                                           (cdr
42199                                                                                            s_6)))
42200                                                                                      (let ((s_8
42201                                                                                             (if (syntax?
42202                                                                                                  s_7)
42203                                                                                               (syntax-e
42204                                                                                                s_7)
42205                                                                                               s_7)))
42206                                                                                        (values))))
42207                                                                                  (case-lambda
42208                                                                                   (()
42209                                                                                    (let ((datum90_1
42210                                                                                           datum90_0))
42211                                                                                      (values
42212                                                                                       datum90_1)))
42213                                                                                   (args
42214                                                                                    (raise-binding-result-arity-error
42215                                                                                     0
42216                                                                                     args)))))))))
42217                                                                      (let ((quot88_1
42218                                                                             quot88_0))
42219                                                                        (values
42220                                                                         quot88_1
42221                                                                         datum89_0)))))))
42222                                                            (case-lambda
42223                                                             ((quot86_0
42224                                                               datum87_0)
42225                                                              (call-with-values
42226                                                               (lambda ()
42227                                                                 (let ((s_3
42228                                                                        (cdr
42229                                                                         s_2)))
42230                                                                   (let ((s_4
42231                                                                          (if (syntax?
42232                                                                               s_3)
42233                                                                            (syntax-e
42234                                                                             s_3)
42235                                                                            s_3)))
42236                                                                     (values))))
42237                                                               (case-lambda
42238                                                                (()
42239                                                                 (let ((quot86_1
42240                                                                        quot86_0)
42241                                                                       (datum87_1
42242                                                                        datum87_0))
42243                                                                   (values
42244                                                                    quot86_1
42245                                                                    datum87_1)))
42246                                                                (args
42247                                                                 (raise-binding-result-arity-error
42248                                                                  0
42249                                                                  args)))))
42250                                                             (args
42251                                                              (raise-binding-result-arity-error
42252                                                               2
42253                                                               args)))))))
42254                                                     (case-lambda
42255                                                      ((quot84_0 datum85_0)
42256                                                       (let ((gs83_1 gs83_0))
42257                                                         (values
42258                                                          gs83_1
42259                                                          quot84_0
42260                                                          datum85_0)))
42261                                                      (args
42262                                                       (raise-binding-result-arity-error
42263                                                        2
42264                                                        args)))))))
42265                                              (case-lambda
42266                                               ((gs80_0 quot81_0 datum82_0)
42267                                                (values
42268                                                 #t
42269                                                 gs80_0
42270                                                 quot81_0
42271                                                 datum82_0))
42272                                               (args
42273                                                (raise-binding-result-arity-error
42274                                                 3
42275                                                 args))))
42276                                             (values #f #f #f #f)))
42277                                         (case-lambda
42278                                          ((ok?_0 gs80_0 quot81_0 datum82_0)
42279                                           (if (let ((or-part_0
42280                                                      (if ok?_0
42281                                                        (if (eq?
42282                                                             'quote
42283                                                             quot81_0)
42284                                                          (let ((or-part_0
42285                                                                 (symbol?
42286                                                                  datum82_0)))
42287                                                            (if or-part_0
42288                                                              or-part_0
42289                                                              (string?
42290                                                               datum82_0)))
42291                                                          #f)
42292                                                        #f)))
42293                                                 (if or-part_0
42294                                                   or-part_0
42295                                                   (null?
42296                                                    (cdr (correlated-e e_0)))))
42297                                             1
42298                                             #f))
42299                                          (args
42300                                           (raise-binding-result-arity-error
42301                                            4
42302                                            args))))
42303                                        (call-with-values
42304                                         (lambda ()
42305                                           (if (let ((s_0
42306                                                      (if (syntax? e_0)
42307                                                        (syntax-e e_0)
42308                                                        e_0)))
42309                                                 (if (pair? s_0)
42310                                                   (if (let ((s_1 (car s_0)))
42311                                                         #t)
42312                                                     (let ((s_1 (cdr s_0)))
42313                                                       (let ((s_2
42314                                                              (if (syntax? s_1)
42315                                                                (syntax-e s_1)
42316                                                                s_1)))
42317                                                         (if (pair? s_2)
42318                                                           (if (let ((s_3
42319                                                                      (car
42320                                                                       s_2)))
42321                                                                 (let ((s_4
42322                                                                        (if (syntax?
42323                                                                             s_3)
42324                                                                          (syntax-e
42325                                                                           s_3)
42326                                                                          s_3)))
42327                                                                   (if (pair?
42328                                                                        s_4)
42329                                                                     (if (let ((s_5
42330                                                                                (car
42331                                                                                 s_4)))
42332                                                                           (let ((or-part_0
42333                                                                                  (if (syntax?
42334                                                                                       s_5)
42335                                                                                    (symbol?
42336                                                                                     (syntax-e
42337                                                                                      s_5))
42338                                                                                    #f)))
42339                                                                             (if or-part_0
42340                                                                               or-part_0
42341                                                                               (symbol?
42342                                                                                s_5))))
42343                                                                       (let ((s_5
42344                                                                              (cdr
42345                                                                               s_4)))
42346                                                                         (let ((s_6
42347                                                                                (if (syntax?
42348                                                                                     s_5)
42349                                                                                  (syntax-e
42350                                                                                   s_5)
42351                                                                                  s_5)))
42352                                                                           (if (pair?
42353                                                                                s_6)
42354                                                                             (if (let ((s_7
42355                                                                                        (car
42356                                                                                         s_6)))
42357                                                                                   (let ((or-part_0
42358                                                                                          (if (syntax?
42359                                                                                               s_7)
42360                                                                                            (symbol?
42361                                                                                             (syntax-e
42362                                                                                              s_7))
42363                                                                                            #f)))
42364                                                                                     (if or-part_0
42365                                                                                       or-part_0
42366                                                                                       (symbol?
42367                                                                                        s_7))))
42368                                                                               (let ((s_7
42369                                                                                      (cdr
42370                                                                                       s_6)))
42371                                                                                 (let ((s_8
42372                                                                                        (if (syntax?
42373                                                                                             s_7)
42374                                                                                          (syntax-e
42375                                                                                           s_7)
42376                                                                                          s_7)))
42377                                                                                   (null?
42378                                                                                    s_8)))
42379                                                                               #f)
42380                                                                             #f)))
42381                                                                       #f)
42382                                                                     #f)))
42383                                                             (let ((s_3
42384                                                                    (cdr s_2)))
42385                                                               (let ((s_4
42386                                                                      (if (syntax?
42387                                                                           s_3)
42388                                                                        (syntax-e
42389                                                                         s_3)
42390                                                                        s_3)))
42391                                                                 (if (pair?
42392                                                                      s_4)
42393                                                                   (if (let ((s_5
42394                                                                              (car
42395                                                                               s_4)))
42396                                                                         #t)
42397                                                                     (let ((s_5
42398                                                                            (cdr
42399                                                                             s_4)))
42400                                                                       (let ((s_6
42401                                                                              (if (syntax?
42402                                                                                   s_5)
42403                                                                                (syntax-e
42404                                                                                 s_5)
42405                                                                                s_5)))
42406                                                                         (if (pair?
42407                                                                              s_6)
42408                                                                           (if (let ((s_7
42409                                                                                      (car
42410                                                                                       s_6)))
42411                                                                                 #t)
42412                                                                             (let ((s_7
42413                                                                                    (cdr
42414                                                                                     s_6)))
42415                                                                               (let ((s_8
42416                                                                                      (if (syntax?
42417                                                                                           s_7)
42418                                                                                        (syntax-e
42419                                                                                         s_7)
42420                                                                                        s_7)))
42421                                                                                 (null?
42422                                                                                  s_8)))
42423                                                                             #f)
42424                                                                           #f)))
42425                                                                     #f)
42426                                                                   #f)))
42427                                                             #f)
42428                                                           #f)))
42429                                                     #f)
42430                                                   #f))
42431                                             (call-with-values
42432                                              (lambda ()
42433                                                (let ((s_0
42434                                                       (if (syntax? e_0)
42435                                                         (syntax-e e_0)
42436                                                         e_0)))
42437                                                  (let ((_0
42438                                                         (let ((s_1 (car s_0)))
42439                                                           s_1)))
42440                                                    (call-with-values
42441                                                     (lambda ()
42442                                                       (let ((s_1 (cdr s_0)))
42443                                                         (let ((s_2
42444                                                                (if (syntax?
42445                                                                     s_1)
42446                                                                  (syntax-e
42447                                                                   s_1)
42448                                                                  s_1)))
42449                                                           (call-with-values
42450                                                            (lambda ()
42451                                                              (let ((s_3
42452                                                                     (car
42453                                                                      s_2)))
42454                                                                (let ((s_4
42455                                                                       (if (syntax?
42456                                                                            s_3)
42457                                                                         (syntax-e
42458                                                                          s_3)
42459                                                                         s_3)))
42460                                                                  (let ((id:rator105_0
42461                                                                         (let ((s_5
42462                                                                                (car
42463                                                                                 s_4)))
42464                                                                           s_5)))
42465                                                                    (let ((id:arg106_0
42466                                                                           (let ((s_5
42467                                                                                  (cdr
42468                                                                                   s_4)))
42469                                                                             (let ((s_6
42470                                                                                    (if (syntax?
42471                                                                                         s_5)
42472                                                                                      (syntax-e
42473                                                                                       s_5)
42474                                                                                      s_5)))
42475                                                                               (let ((id:arg107_0
42476                                                                                      (let ((s_7
42477                                                                                             (car
42478                                                                                              s_6)))
42479                                                                                        s_7)))
42480                                                                                 (call-with-values
42481                                                                                  (lambda ()
42482                                                                                    (let ((s_7
42483                                                                                           (cdr
42484                                                                                            s_6)))
42485                                                                                      (let ((s_8
42486                                                                                             (if (syntax?
42487                                                                                                  s_7)
42488                                                                                               (syntax-e
42489                                                                                                s_7)
42490                                                                                               s_7)))
42491                                                                                        (values))))
42492                                                                                  (case-lambda
42493                                                                                   (()
42494                                                                                    (let ((id:arg107_1
42495                                                                                           id:arg107_0))
42496                                                                                      (values
42497                                                                                       id:arg107_1)))
42498                                                                                   (args
42499                                                                                    (raise-binding-result-arity-error
42500                                                                                     0
42501                                                                                     args)))))))))
42502                                                                      (let ((id:rator105_1
42503                                                                             id:rator105_0))
42504                                                                        (values
42505                                                                         id:rator105_1
42506                                                                         id:arg106_0)))))))
42507                                                            (case-lambda
42508                                                             ((id:rator101_0
42509                                                               id:arg102_0)
42510                                                              (call-with-values
42511                                                               (lambda ()
42512                                                                 (let ((s_3
42513                                                                        (cdr
42514                                                                         s_2)))
42515                                                                   (let ((s_4
42516                                                                          (if (syntax?
42517                                                                               s_3)
42518                                                                            (syntax-e
42519                                                                             s_3)
42520                                                                            s_3)))
42521                                                                     (let ((thn108_0
42522                                                                            (let ((s_5
42523                                                                                   (car
42524                                                                                    s_4)))
42525                                                                              s_5)))
42526                                                                       (let ((els109_0
42527                                                                              (let ((s_5
42528                                                                                     (cdr
42529                                                                                      s_4)))
42530                                                                                (let ((s_6
42531                                                                                       (if (syntax?
42532                                                                                            s_5)
42533                                                                                         (syntax-e
42534                                                                                          s_5)
42535                                                                                         s_5)))
42536                                                                                  (let ((els110_0
42537                                                                                         (let ((s_7
42538                                                                                                (car
42539                                                                                                 s_6)))
42540                                                                                           s_7)))
42541                                                                                    (call-with-values
42542                                                                                     (lambda ()
42543                                                                                       (let ((s_7
42544                                                                                              (cdr
42545                                                                                               s_6)))
42546                                                                                         (let ((s_8
42547                                                                                                (if (syntax?
42548                                                                                                     s_7)
42549                                                                                                  (syntax-e
42550                                                                                                   s_7)
42551                                                                                                  s_7)))
42552                                                                                           (values))))
42553                                                                                     (case-lambda
42554                                                                                      (()
42555                                                                                       (let ((els110_1
42556                                                                                              els110_0))
42557                                                                                         (values
42558                                                                                          els110_1)))
42559                                                                                      (args
42560                                                                                       (raise-binding-result-arity-error
42561                                                                                        0
42562                                                                                        args)))))))))
42563                                                                         (let ((thn108_1
42564                                                                                thn108_0))
42565                                                                           (values
42566                                                                            thn108_1
42567                                                                            els109_0)))))))
42568                                                               (case-lambda
42569                                                                ((thn103_0
42570                                                                  els104_0)
42571                                                                 (let ((id:rator101_1
42572                                                                        id:rator101_0)
42573                                                                       (id:arg102_1
42574                                                                        id:arg102_0))
42575                                                                   (values
42576                                                                    id:rator101_1
42577                                                                    id:arg102_1
42578                                                                    thn103_0
42579                                                                    els104_0)))
42580                                                                (args
42581                                                                 (raise-binding-result-arity-error
42582                                                                  2
42583                                                                  args)))))
42584                                                             (args
42585                                                              (raise-binding-result-arity-error
42586                                                               2
42587                                                               args)))))))
42588                                                     (case-lambda
42589                                                      ((id:rator97_0
42590                                                        id:arg98_0
42591                                                        thn99_0
42592                                                        els100_0)
42593                                                       (let ((_1 _0))
42594                                                         (values
42595                                                          _1
42596                                                          id:rator97_0
42597                                                          id:arg98_0
42598                                                          thn99_0
42599                                                          els100_0)))
42600                                                      (args
42601                                                       (raise-binding-result-arity-error
42602                                                        4
42603                                                        args)))))))
42604                                              (case-lambda
42605                                               ((_0
42606                                                 id:rator92_0
42607                                                 id:arg93_0
42608                                                 thn94_0
42609                                                 els95_0)
42610                                                (values
42611                                                 #t
42612                                                 _0
42613                                                 id:rator92_0
42614                                                 id:arg93_0
42615                                                 thn94_0
42616                                                 els95_0))
42617                                               (args
42618                                                (raise-binding-result-arity-error
42619                                                 5
42620                                                 args))))
42621                                             (values #f #f #f #f #f #f)))
42622                                         (case-lambda
42623                                          ((ok?_0
42624                                            _0
42625                                            id:rator92_0
42626                                            id:arg93_0
42627                                            thn94_0
42628                                            els95_0)
42629                                           (if ok?_0
42630                                             (let ((c2_0
42631                                                    (let ((or-part_0
42632                                                           (hash-ref
42633                                                            locals_0
42634                                                            id:rator92_0
42635                                                            #f)))
42636                                                      (if or-part_0
42637                                                        or-part_0
42638                                                        (lookup-defn
42639                                                         known-defns2_0
42640                                                         id:rator92_0)))))
42641                                               (if c2_0
42642                                                 (if (known-predicate? c2_0)
42643                                                   (if (not
42644                                                        (effects?_0
42645                                                         thn94_0
42646                                                         expected-results8_0
42647                                                         (hash-set
42648                                                          locals_0
42649                                                          id:arg93_0
42650                                                          (known-satisfies8.1
42651                                                           (known-predicate-key
42652                                                            c2_0)))))
42653                                                     (loop_0 els95_0 locals_0)
42654                                                     #f)
42655                                                   #f)
42656                                                 #f))
42657                                             (call-with-values
42658                                              (lambda ()
42659                                                (if (let ((s_0
42660                                                           (if (syntax? e_0)
42661                                                             (syntax-e e_0)
42662                                                             e_0)))
42663                                                      (if (pair? s_0)
42664                                                        (if (let ((s_1
42665                                                                   (car s_0)))
42666                                                              #t)
42667                                                          (let ((s_1
42668                                                                 (cdr s_0)))
42669                                                            (let ((s_2
42670                                                                   (if (syntax?
42671                                                                        s_1)
42672                                                                     (syntax-e
42673                                                                      s_1)
42674                                                                     s_1)))
42675                                                              (if (pair? s_2)
42676                                                                (if (let ((s_3
42677                                                                           (car
42678                                                                            s_2)))
42679                                                                      #t)
42680                                                                  (let ((s_3
42681                                                                         (cdr
42682                                                                          s_2)))
42683                                                                    (let ((s_4
42684                                                                           (if (syntax?
42685                                                                                s_3)
42686                                                                             (syntax-e
42687                                                                              s_3)
42688                                                                             s_3)))
42689                                                                      (if (pair?
42690                                                                           s_4)
42691                                                                        (if (let ((s_5
42692                                                                                   (car
42693                                                                                    s_4)))
42694                                                                              #t)
42695                                                                          (let ((s_5
42696                                                                                 (cdr
42697                                                                                  s_4)))
42698                                                                            (let ((s_6
42699                                                                                   (if (syntax?
42700                                                                                        s_5)
42701                                                                                     (syntax-e
42702                                                                                      s_5)
42703                                                                                     s_5)))
42704                                                                              (if (pair?
42705                                                                                   s_6)
42706                                                                                (if (let ((s_7
42707                                                                                           (car
42708                                                                                            s_6)))
42709                                                                                      #t)
42710                                                                                  (let ((s_7
42711                                                                                         (cdr
42712                                                                                          s_6)))
42713                                                                                    (let ((s_8
42714                                                                                           (if (syntax?
42715                                                                                                s_7)
42716                                                                                             (syntax-e
42717                                                                                              s_7)
42718                                                                                             s_7)))
42719                                                                                      (null?
42720                                                                                       s_8)))
42721                                                                                  #f)
42722                                                                                #f)))
42723                                                                          #f)
42724                                                                        #f)))
42725                                                                  #f)
42726                                                                #f)))
42727                                                          #f)
42728                                                        #f))
42729                                                  (call-with-values
42730                                                   (lambda ()
42731                                                     (let ((s_0
42732                                                            (if (syntax? e_0)
42733                                                              (syntax-e e_0)
42734                                                              e_0)))
42735                                                       (let ((_1
42736                                                              (let ((s_1
42737                                                                     (car
42738                                                                      s_0)))
42739                                                                s_1)))
42740                                                         (call-with-values
42741                                                          (lambda ()
42742                                                            (let ((s_1
42743                                                                   (cdr s_0)))
42744                                                              (let ((s_2
42745                                                                     (if (syntax?
42746                                                                          s_1)
42747                                                                       (syntax-e
42748                                                                        s_1)
42749                                                                       s_1)))
42750                                                                (let ((tst119_0
42751                                                                       (let ((s_3
42752                                                                              (car
42753                                                                               s_2)))
42754                                                                         s_3)))
42755                                                                  (call-with-values
42756                                                                   (lambda ()
42757                                                                     (let ((s_3
42758                                                                            (cdr
42759                                                                             s_2)))
42760                                                                       (let ((s_4
42761                                                                              (if (syntax?
42762                                                                                   s_3)
42763                                                                                (syntax-e
42764                                                                                 s_3)
42765                                                                                s_3)))
42766                                                                         (let ((thn122_0
42767                                                                                (let ((s_5
42768                                                                                       (car
42769                                                                                        s_4)))
42770                                                                                  s_5)))
42771                                                                           (let ((els123_0
42772                                                                                  (let ((s_5
42773                                                                                         (cdr
42774                                                                                          s_4)))
42775                                                                                    (let ((s_6
42776                                                                                           (if (syntax?
42777                                                                                                s_5)
42778                                                                                             (syntax-e
42779                                                                                              s_5)
42780                                                                                             s_5)))
42781                                                                                      (let ((els124_0
42782                                                                                             (let ((s_7
42783                                                                                                    (car
42784                                                                                                     s_6)))
42785                                                                                               s_7)))
42786                                                                                        (call-with-values
42787                                                                                         (lambda ()
42788                                                                                           (let ((s_7
42789                                                                                                  (cdr
42790                                                                                                   s_6)))
42791                                                                                             (let ((s_8
42792                                                                                                    (if (syntax?
42793                                                                                                         s_7)
42794                                                                                                      (syntax-e
42795                                                                                                       s_7)
42796                                                                                                      s_7)))
42797                                                                                               (values))))
42798                                                                                         (case-lambda
42799                                                                                          (()
42800                                                                                           (let ((els124_1
42801                                                                                                  els124_0))
42802                                                                                             (values
42803                                                                                              els124_1)))
42804                                                                                          (args
42805                                                                                           (raise-binding-result-arity-error
42806                                                                                            0
42807                                                                                            args)))))))))
42808                                                                             (let ((thn122_1
42809                                                                                    thn122_0))
42810                                                                               (values
42811                                                                                thn122_1
42812                                                                                els123_0)))))))
42813                                                                   (case-lambda
42814                                                                    ((thn120_0
42815                                                                      els121_0)
42816                                                                     (let ((tst119_1
42817                                                                            tst119_0))
42818                                                                       (values
42819                                                                        tst119_1
42820                                                                        thn120_0
42821                                                                        els121_0)))
42822                                                                    (args
42823                                                                     (raise-binding-result-arity-error
42824                                                                      2
42825                                                                      args))))))))
42826                                                          (case-lambda
42827                                                           ((tst116_0
42828                                                             thn117_0
42829                                                             els118_0)
42830                                                            (let ((_2 _1))
42831                                                              (values
42832                                                               _2
42833                                                               tst116_0
42834                                                               thn117_0
42835                                                               els118_0)))
42836                                                           (args
42837                                                            (raise-binding-result-arity-error
42838                                                             3
42839                                                             args)))))))
42840                                                   (case-lambda
42841                                                    ((_1
42842                                                      tst112_0
42843                                                      thn113_0
42844                                                      els114_0)
42845                                                     (values
42846                                                      #t
42847                                                      _1
42848                                                      tst112_0
42849                                                      thn113_0
42850                                                      els114_0))
42851                                                    (args
42852                                                     (raise-binding-result-arity-error
42853                                                      4
42854                                                      args))))
42855                                                  (values #f #f #f #f #f)))
42856                                              (case-lambda
42857                                               ((ok?_1
42858                                                 _1
42859                                                 tst112_0
42860                                                 thn113_0
42861                                                 els114_0)
42862                                                (if ok?_1
42863                                                  (if (not
42864                                                       (effects?_0
42865                                                        tst112_0
42866                                                        1
42867                                                        locals_0))
42868                                                    (if (not
42869                                                         (effects?_0
42870                                                          thn113_0
42871                                                          expected-results8_0
42872                                                          locals_0))
42873                                                      (loop_0
42874                                                       els114_0
42875                                                       locals_0)
42876                                                      #f)
42877                                                    #f)
42878                                                  #f))
42879                                               (args
42880                                                (raise-binding-result-arity-error
42881                                                 5
42882                                                 args))))))
42883                                          (args
42884                                           (raise-binding-result-arity-error
42885                                            6
42886                                            args))))))))))))))))
42887                   (loop_0 e7_0 known-locals1_0))))
42888             (not
42889              (if actual-results_0
42890                (let ((or-part_0 (not expected-results8_0)))
42891                  (if or-part_0
42892                    or-part_0
42893                    (= actual-results_0 expected-results8_0)))
42894                #f)))))))))
42895(define satisfies?
42896  (lambda (e_0 key_0 defns_0 locals_0)
42897    (let ((d_0
42898           (let ((or-part_0 (hash-ref locals_0 e_0 #f)))
42899             (if or-part_0 or-part_0 (lookup-defn defns_0 e_0)))))
42900      (if d_0
42901        (if (known-satisfies? d_0)
42902          (eq? key_0 (known-satisfies-predicate-key d_0))
42903          #f)
42904        #f))))
42905(define add-binding-info
42906  (lambda (locals_0 idss_0 rhss_0)
42907    (begin
42908      (letrec*
42909       ((for-loop_0
42910         (|#%name|
42911          for-loop
42912          (lambda (locals_1 lst_0 lst_1)
42913            (begin
42914              (if (if (pair? lst_0) (pair? lst_1) #f)
42915                (let ((ids_0 (unsafe-car lst_0)))
42916                  (let ((rest_0 (unsafe-cdr lst_0)))
42917                    (let ((rhs_0 (unsafe-car lst_1)))
42918                      (let ((rest_1 (unsafe-cdr lst_1)))
42919                        (let ((locals_2
42920                               (let ((locals_2
42921                                      (letrec*
42922                                       ((loop_0
42923                                         (|#%name|
42924                                          loop
42925                                          (lambda (rhs_1)
42926                                            (begin
42927                                              (let ((tmp_0
42928                                                     (if (pair?
42929                                                          (correlated-e rhs_1))
42930                                                       (correlated-e
42931                                                        (car
42932                                                         (correlated-e rhs_1)))
42933                                                       #f)))
42934                                                (if (eq?
42935                                                     tmp_0
42936                                                     'make-struct-type)
42937                                                  (let ((field-count_0
42938                                                         (extract-struct-field-count-lower-bound
42939                                                          rhs_1)))
42940                                                    (let ((lst_2
42941                                                           (correlated->list
42942                                                            ids_0)))
42943                                                      (let ((lst_3
42944                                                             '(struct-type
42945                                                               constructor
42946                                                               predicate
42947                                                               general-accessor
42948                                                               general-mutator)))
42949                                                        (let ((lst_4 lst_2))
42950                                                          (begin
42951                                                            (letrec*
42952                                                             ((for-loop_1
42953                                                               (|#%name|
42954                                                                for-loop
42955                                                                (lambda (locals_2
42956                                                                         lst_5
42957                                                                         lst_6)
42958                                                                  (begin
42959                                                                    (if (if (pair?
42960                                                                             lst_5)
42961                                                                          (pair?
42962                                                                           lst_6)
42963                                                                          #f)
42964                                                                      (let ((id_0
42965                                                                             (unsafe-car
42966                                                                              lst_5)))
42967                                                                        (let ((rest_2
42968                                                                               (unsafe-cdr
42969                                                                                lst_5)))
42970                                                                          (let ((type_0
42971                                                                                 (unsafe-car
42972                                                                                  lst_6)))
42973                                                                            (let ((rest_3
42974                                                                                   (unsafe-cdr
42975                                                                                    lst_6)))
42976                                                                              (let ((locals_3
42977                                                                                     (let ((locals_3
42978                                                                                            (let ((app_0
42979                                                                                                   (correlated-e
42980                                                                                                    id_0)))
42981                                                                                              (hash-set
42982                                                                                               locals_2
42983                                                                                               app_0
42984                                                                                               (known-struct-op9.1
42985                                                                                                type_0
42986                                                                                                field-count_0)))))
42987                                                                                       (values
42988                                                                                        locals_3))))
42989                                                                                (for-loop_1
42990                                                                                 locals_3
42991                                                                                 rest_2
42992                                                                                 rest_3))))))
42993                                                                      locals_2))))))
42994                                                             (for-loop_1
42995                                                              locals_1
42996                                                              lst_4
42997                                                              lst_3)))))))
42998                                                  (if (eq? tmp_0 'let-values)
42999                                                    (if (null?
43000                                                         (correlated-e
43001                                                          (correlated-cadr
43002                                                           rhs_1)))
43003                                                      (loop_0
43004                                                       (caddr
43005                                                        (correlated->list
43006                                                         rhs_1)))
43007                                                      (loop_0 #f))
43008                                                    (let ((ids*_0
43009                                                           (correlated->list
43010                                                            ids_0)))
43011                                                      (if (if (pair? ids*_0)
43012                                                            (null?
43013                                                             (cdr ids*_0))
43014                                                            #f)
43015                                                        (let ((app_0
43016                                                               (correlated-e
43017                                                                (car ids*_0))))
43018                                                          (hash-set
43019                                                           locals_1
43020                                                           app_0
43021                                                           (infer-known
43022                                                            rhs_1)))
43023                                                        (begin
43024                                                          (letrec*
43025                                                           ((for-loop_1
43026                                                             (|#%name|
43027                                                              for-loop
43028                                                              (lambda (locals_2
43029                                                                       lst_2)
43030                                                                (begin
43031                                                                  (if (pair?
43032                                                                       lst_2)
43033                                                                    (let ((id_0
43034                                                                           (unsafe-car
43035                                                                            lst_2)))
43036                                                                      (let ((rest_2
43037                                                                             (unsafe-cdr
43038                                                                              lst_2)))
43039                                                                        (let ((locals_3
43040                                                                               (let ((locals_3
43041                                                                                      (hash-set
43042                                                                                       locals_2
43043                                                                                       (correlated-e
43044                                                                                        id_0)
43045                                                                                       #t)))
43046                                                                                 (values
43047                                                                                  locals_3))))
43048                                                                          (for-loop_1
43049                                                                           locals_3
43050                                                                           rest_2))))
43051                                                                    locals_2))))))
43052                                                           (for-loop_1
43053                                                            locals_1
43054                                                            ids*_0)))))))))))))
43055                                       (loop_0 rhs_0))))
43056                                 (values locals_2))))
43057                          (for-loop_0 locals_2 rest_0 rest_1))))))
43058                locals_1))))))
43059       (for-loop_0 locals_0 idss_0 rhss_0)))))
43060(define infer-known
43061  (lambda (e_0)
43062    (let ((tmp_0
43063           (if (pair? (correlated-e e_0))
43064             (correlated-e (car (correlated-e e_0)))
43065             #f)))
43066      (if (if (eq? tmp_0 'lambda) #t (eq? tmp_0 'case-lambda))
43067        (known-satisfies8.1 'procedure)
43068        #t))))
43069(define ok-make-struct-type-property?
43070  (lambda (e_0 defns_0)
43071    (let ((l_0 (correlated->list e_0)))
43072      (if (<= 2 (length l_0) 5)
43073        (let ((lst_0 (cdr l_0)))
43074          (let ((lst_1
43075                 (list
43076                  (lambda (v_0) (quoted? symbol? v_0))
43077                  (lambda (v_0) (is-lambda? v_0 2 defns_0))
43078                  (lambda (v_0)
43079                    (ok-make-struct-type-property-super? v_0 defns_0))
43080                  (lambda (v_0)
43081                    (not
43082                     (any-side-effects?.1
43083                      defns_0
43084                      hash2610
43085                      unsafe-undefined
43086                      v_0
43087                      1))))))
43088            (let ((lst_2 lst_0))
43089              (begin
43090                (letrec*
43091                 ((for-loop_0
43092                   (|#%name|
43093                    for-loop
43094                    (lambda (result_0 lst_3 lst_4)
43095                      (begin
43096                        (if (if (pair? lst_3) (pair? lst_4) #f)
43097                          (let ((arg_0 (unsafe-car lst_3)))
43098                            (let ((rest_0 (unsafe-cdr lst_3)))
43099                              (let ((pred_0 (unsafe-car lst_4)))
43100                                (let ((rest_1 (unsafe-cdr lst_4)))
43101                                  (let ((result_1
43102                                         (let ((result_1
43103                                                (|#%app| pred_0 arg_0)))
43104                                           (values result_1))))
43105                                    (if (if (not
43106                                             (let ((x_0 (list arg_0)))
43107                                               (not result_1)))
43108                                          (if (not
43109                                               (let ((x_0 (list pred_0)))
43110                                                 (not result_1)))
43111                                            #t
43112                                            #f)
43113                                          #f)
43114                                      (for-loop_0 result_1 rest_0 rest_1)
43115                                      result_1))))))
43116                          result_0))))))
43117                 (for-loop_0 #t lst_2 lst_1))))))
43118        #f))))
43119(define ok-make-struct-type-property-super?
43120  (lambda (v_0 defns_0)
43121    (let ((or-part_0 (quoted? null? v_0)))
43122      (if or-part_0
43123        or-part_0
43124        (let ((or-part_1 (eq? 'null (correlated-e v_0))))
43125          (if or-part_1
43126            or-part_1
43127            (if (pair? (correlated-e v_0))
43128              (if (eq? (correlated-e (car (correlated-e v_0))) 'list)
43129                (if (let ((lst_0 (cdr (correlated->list v_0))))
43130                      (begin
43131                        (letrec*
43132                         ((for-loop_0
43133                           (|#%name|
43134                            for-loop
43135                            (lambda (result_0 lst_1)
43136                              (begin
43137                                (if (pair? lst_1)
43138                                  (let ((prop+val_0 (unsafe-car lst_1)))
43139                                    (let ((rest_0 (unsafe-cdr lst_1)))
43140                                      (let ((result_1
43141                                             (let ((result_1
43142                                                    (if (=
43143                                                         (correlated-length
43144                                                          prop+val_0)
43145                                                         3)
43146                                                      (let ((prop+val_1
43147                                                             (correlated->list
43148                                                              prop+val_0)))
43149                                                        (if (eq?
43150                                                             'cons
43151                                                             (correlated-e
43152                                                              (car
43153                                                               prop+val_1)))
43154                                                          (if (let ((or-part_2
43155                                                                     (memq
43156                                                                      (correlated-e
43157                                                                       (list-ref
43158                                                                        prop+val_1
43159                                                                        1))
43160                                                                      '(prop:procedure
43161                                                                        prop:equal+hash))))
43162                                                                (if or-part_2
43163                                                                  or-part_2
43164                                                                  (let ((o_0
43165                                                                         (lookup-defn
43166                                                                          defns_0
43167                                                                          (correlated-e
43168                                                                           (list-ref
43169                                                                            prop+val_1
43170                                                                            1)))))
43171                                                                    (let ((or-part_3
43172                                                                           (known-property?
43173                                                                            o_0)))
43174                                                                      (if or-part_3
43175                                                                        or-part_3
43176                                                                        (known-property-of-function?
43177                                                                         o_0))))))
43178                                                            (not
43179                                                             (let ((temp128_0
43180                                                                    (list-ref
43181                                                                     prop+val_1
43182                                                                     2)))
43183                                                               (any-side-effects?.1
43184                                                                defns_0
43185                                                                hash2610
43186                                                                unsafe-undefined
43187                                                                temp128_0
43188                                                                1)))
43189                                                            #f)
43190                                                          #f))
43191                                                      #f)))
43192                                               (values result_1))))
43193                                        (if (if (not
43194                                                 (let ((x_0 (list prop+val_0)))
43195                                                   (not result_1)))
43196                                              #t
43197                                              #f)
43198                                          (for-loop_0 result_1 rest_0)
43199                                          result_1))))
43200                                  result_0))))))
43201                         (for-loop_0 #t lst_0))))
43202                  (let ((app_0 (sub1 (correlated-length v_0))))
43203                    (=
43204                     app_0
43205                     (let ((s_0
43206                            (let ((lst_0 (cdr (correlated->list v_0))))
43207                              (begin
43208                                (letrec*
43209                                 ((for-loop_0
43210                                   (|#%name|
43211                                    for-loop
43212                                    (lambda (table_0 lst_1)
43213                                      (begin
43214                                        (if (pair? lst_1)
43215                                          (let ((prop+val_0
43216                                                 (unsafe-car lst_1)))
43217                                            (let ((rest_0 (unsafe-cdr lst_1)))
43218                                              (let ((table_1
43219                                                     (let ((table_1
43220                                                            (call-with-values
43221                                                             (lambda ()
43222                                                               (values
43223                                                                (correlated-e
43224                                                                 (list-ref
43225                                                                  (correlated->list
43226                                                                   prop+val_0)
43227                                                                  1))
43228                                                                #t))
43229                                                             (case-lambda
43230                                                              ((key_0 val_0)
43231                                                               (hash-set
43232                                                                table_0
43233                                                                key_0
43234                                                                val_0))
43235                                                              (args
43236                                                               (raise-binding-result-arity-error
43237                                                                2
43238                                                                args))))))
43239                                                       (values table_1))))
43240                                                (for-loop_0 table_1 rest_0))))
43241                                          table_0))))))
43242                                 (for-loop_0 hash2725 lst_0))))))
43243                       (begin-unsafe (hash-count s_0)))))
43244                  #f)
43245                #f)
43246              #f)))))))
43247(define ok-make-struct-type?
43248  (lambda (e_0 ready-variable?_0 defns_0)
43249    (let ((l_0 (correlated->list e_0)))
43250      (let ((init-field-count-expr_0
43251             (if (> (length l_0) 3) (list-ref l_0 3) #f)))
43252        (let ((auto-field-count-expr_0
43253               (if (> (length l_0) 4) (list-ref l_0 4) #f)))
43254          (let ((num-fields_0
43255                 (let ((app_0
43256                        (field-count-expr-to-field-count
43257                         init-field-count-expr_0)))
43258                   (maybe+
43259                    app_0
43260                    (field-count-expr-to-field-count
43261                     auto-field-count-expr_0)))))
43262            (let ((immutables-expr_0
43263                   (let ((or-part_0
43264                          (if (> (length l_0) 9) (list-ref l_0 9) #f)))
43265                     (if or-part_0 or-part_0 'null))))
43266              (let ((super-expr_0 (if (> (length l_0) 2) (list-ref l_0 2) #f)))
43267                (if (>= (length l_0) 5)
43268                  (if (<= (length l_0) 12)
43269                    (let ((lst_0 (cdr l_0)))
43270                      (let ((lst_1
43271                             (list
43272                              (lambda (v_0) (quoted? symbol? v_0))
43273                              (lambda (v_0) (super-ok? v_0 defns_0))
43274                              (lambda (v_0)
43275                                (field-count-expr-to-field-count v_0))
43276                              (lambda (v_0)
43277                                (field-count-expr-to-field-count v_0))
43278                              (lambda (v_0)
43279                                (not
43280                                 (any-side-effects?.1
43281                                  defns_0
43282                                  hash2610
43283                                  ready-variable?_0
43284                                  v_0
43285                                  1)))
43286                              (lambda (v_0)
43287                                (known-good-struct-properties?
43288                                 v_0
43289                                 immutables-expr_0
43290                                 super-expr_0
43291                                 defns_0))
43292                              (lambda (v_0) (inspector-or-false? v_0))
43293                              (lambda (v_0) (procedure-spec? v_0 num-fields_0))
43294                              (lambda (v_0)
43295                                (immutables-ok?
43296                                 v_0
43297                                 init-field-count-expr_0)))))
43298                        (let ((lst_2 lst_0))
43299                          (begin
43300                            (letrec*
43301                             ((for-loop_0
43302                               (|#%name|
43303                                for-loop
43304                                (lambda (result_0 lst_3 lst_4)
43305                                  (begin
43306                                    (if (if (pair? lst_3) (pair? lst_4) #f)
43307                                      (let ((arg_0 (unsafe-car lst_3)))
43308                                        (let ((rest_0 (unsafe-cdr lst_3)))
43309                                          (let ((pred_0 (unsafe-car lst_4)))
43310                                            (let ((rest_1 (unsafe-cdr lst_4)))
43311                                              (let ((result_1
43312                                                     (let ((result_1
43313                                                            (|#%app|
43314                                                             pred_0
43315                                                             arg_0)))
43316                                                       (values result_1))))
43317                                                (if (if (not
43318                                                         (let ((x_0
43319                                                                (list arg_0)))
43320                                                           (not result_1)))
43321                                                      (if (not
43322                                                           (let ((x_0
43323                                                                  (list
43324                                                                   pred_0)))
43325                                                             (not result_1)))
43326                                                        #t
43327                                                        #f)
43328                                                      #f)
43329                                                  (for-loop_0
43330                                                   result_1
43331                                                   rest_0
43332                                                   rest_1)
43333                                                  result_1))))))
43334                                      result_0))))))
43335                             (for-loop_0 #t lst_2 lst_1))))))
43336                    #f)
43337                  #f)))))))))
43338(define super-ok?
43339  (lambda (e_0 defns_0)
43340    (let ((or-part_0 (quoted? false? e_0)))
43341      (if or-part_0
43342        or-part_0
43343        (let ((o_0 (lookup-defn defns_0 (correlated-e e_0))))
43344          (if o_0
43345            (if (known-struct-op? o_0)
43346              (eq? 'struct-type (known-struct-op-type o_0))
43347              #f)
43348            #f))))))
43349(define extract-struct-field-count-lower-bound
43350  (lambda (e_0)
43351    (let ((l_0 (correlated->list e_0)))
43352      (let ((app_0 (field-count-expr-to-field-count (list-ref l_0 3))))
43353        (+ app_0 (field-count-expr-to-field-count (list-ref l_0 4)))))))
43354(define quoted?
43355  (lambda (val?_0 v_0)
43356    (let ((or-part_0
43357           (if (pair? (correlated-e v_0))
43358             (if (eq? (correlated-e (car (correlated-e v_0))) 'quote)
43359               (|#%app| val?_0 (correlated-e (correlated-cadr v_0)))
43360               #f)
43361             #f)))
43362      (if or-part_0 or-part_0 (|#%app| val?_0 (correlated-e v_0))))))
43363(define quoted-value
43364  (lambda (v_0)
43365    (if (pair? (correlated-e v_0))
43366      (correlated-e (correlated-cadr v_0))
43367      (correlated-e v_0))))
43368(define false? (lambda (v_0) (eq? (correlated-e v_0) #f)))
43369(define field-count-expr-to-field-count
43370  (lambda (v_0)
43371    (if (quoted? exact-nonnegative-integer? v_0) (quoted-value v_0) #f)))
43372(define inspector-or-false?
43373  (lambda (v_0)
43374    (let ((or-part_0 (quoted? false? v_0)))
43375      (if or-part_0
43376        or-part_0
43377        (let ((or-part_1
43378               (if (quoted? symbol? v_0) (eq? 'prefab (quoted-value v_0)) #f)))
43379          (if or-part_1
43380            or-part_1
43381            (if (= 1 (correlated-length v_0))
43382              (eq? 'current-inspector (correlated-e (car (correlated-e v_0))))
43383              #f)))))))
43384(define known-good-struct-properties?
43385  (lambda (v_0 immutables-expr_0 super-expr_0 defns_0)
43386    (let ((or-part_0 (quoted? null? v_0)))
43387      (if or-part_0
43388        or-part_0
43389        (let ((or-part_1 (eq? 'null (correlated-e v_0))))
43390          (if or-part_1
43391            or-part_1
43392            (if (pair? (correlated-e v_0))
43393              (if (eq? (correlated-e (car (correlated-e v_0))) 'list)
43394                (if (let ((lst_0 (cdr (correlated->list v_0))))
43395                      (begin
43396                        (letrec*
43397                         ((for-loop_0
43398                           (|#%name|
43399                            for-loop
43400                            (lambda (result_0 lst_1)
43401                              (begin
43402                                (if (pair? lst_1)
43403                                  (let ((prop+val_0 (unsafe-car lst_1)))
43404                                    (let ((rest_0 (unsafe-cdr lst_1)))
43405                                      (let ((result_1
43406                                             (let ((result_1
43407                                                    (if (=
43408                                                         (correlated-length
43409                                                          prop+val_0)
43410                                                         3)
43411                                                      (let ((prop+val_1
43412                                                             (correlated->list
43413                                                              prop+val_0)))
43414                                                        (if (eq?
43415                                                             'cons
43416                                                             (correlated-e
43417                                                              (car
43418                                                               prop+val_1)))
43419                                                          (let ((app_0
43420                                                                 (list-ref
43421                                                                  prop+val_1
43422                                                                  1)))
43423                                                            (known-good-struct-property+value?
43424                                                             app_0
43425                                                             (list-ref
43426                                                              prop+val_1
43427                                                              2)
43428                                                             immutables-expr_0
43429                                                             super-expr_0
43430                                                             defns_0))
43431                                                          #f))
43432                                                      #f)))
43433                                               (values result_1))))
43434                                        (if (if (not
43435                                                 (let ((x_0 (list prop+val_0)))
43436                                                   (not result_1)))
43437                                              #t
43438                                              #f)
43439                                          (for-loop_0 result_1 rest_0)
43440                                          result_1))))
43441                                  result_0))))))
43442                         (for-loop_0 #t lst_0))))
43443                  (let ((app_0 (sub1 (correlated-length v_0))))
43444                    (=
43445                     app_0
43446                     (let ((s_0
43447                            (let ((lst_0 (cdr (correlated->list v_0))))
43448                              (begin
43449                                (letrec*
43450                                 ((for-loop_0
43451                                   (|#%name|
43452                                    for-loop
43453                                    (lambda (table_0 lst_1)
43454                                      (begin
43455                                        (if (pair? lst_1)
43456                                          (let ((prop+val_0
43457                                                 (unsafe-car lst_1)))
43458                                            (let ((rest_0 (unsafe-cdr lst_1)))
43459                                              (let ((table_1
43460                                                     (let ((table_1
43461                                                            (call-with-values
43462                                                             (lambda ()
43463                                                               (values
43464                                                                (correlated-e
43465                                                                 (list-ref
43466                                                                  (correlated->list
43467                                                                   prop+val_0)
43468                                                                  1))
43469                                                                #t))
43470                                                             (case-lambda
43471                                                              ((key_0 val_0)
43472                                                               (hash-set
43473                                                                table_0
43474                                                                key_0
43475                                                                val_0))
43476                                                              (args
43477                                                               (raise-binding-result-arity-error
43478                                                                2
43479                                                                args))))))
43480                                                       (values table_1))))
43481                                                (for-loop_0 table_1 rest_0))))
43482                                          table_0))))))
43483                                 (for-loop_0 hash2725 lst_0))))))
43484                       (begin-unsafe (hash-count s_0)))))
43485                  #f)
43486                #f)
43487              #f)))))))
43488(define known-good-struct-property+value?
43489  (lambda (prop-expr_0 val-expr_0 immutables-expr_0 super-expr_0 defns_0)
43490    (let ((prop-name_0 (correlated-e prop-expr_0)))
43491      (if (eq? prop-name_0 'prop:evt)
43492        (let ((or-part_0 (is-lambda? val-expr_0 1 defns_0)))
43493          (if or-part_0
43494            or-part_0
43495            (immutable-field? val-expr_0 immutables-expr_0)))
43496        (if (eq? prop-name_0 'prop:procedure)
43497          (let ((or-part_0 (is-lambda? val-expr_0 1 defns_0)))
43498            (if or-part_0
43499              or-part_0
43500              (immutable-field? val-expr_0 immutables-expr_0)))
43501          (if (eq? prop-name_0 'prop:equal+hash)
43502            (let ((l_0 (correlated->list val-expr_0)))
43503              (if (eq? 'list (car l_0))
43504                (if (is-lambda? (list-ref l_0 1) 3 defns_0)
43505                  (if (is-lambda? (list-ref l_0 2) 2 defns_0)
43506                    (is-lambda? (list-ref l_0 3) 2 defns_0)
43507                    #f)
43508                  #f)
43509                #f))
43510            (if (eq? prop-name_0 'prop:checked-procedure)
43511              (if (quoted? false? super-expr_0)
43512                (immutable-field? 1 immutables-expr_0)
43513                #f)
43514              (let ((o_0 (lookup-defn defns_0 prop-name_0)))
43515                (if (known-property? o_0)
43516                  (not
43517                   (any-side-effects?.1
43518                    defns_0
43519                    hash2610
43520                    unsafe-undefined
43521                    val-expr_0
43522                    1))
43523                  (if (known-property-of-function? o_0)
43524                    (is-lambda?
43525                     val-expr_0
43526                     (known-property-of-function-arity o_0)
43527                     defns_0)
43528                    #f))))))))))
43529(define is-lambda?
43530  (lambda (expr_0 arity_0 defns_0)
43531    (let ((lookup_0 (lookup-defn defns_0 expr_0)))
43532      (let ((or-part_0
43533             (if lookup_0
43534               (if (known-function? lookup_0)
43535                 (let ((or-part_0 (not arity_0)))
43536                   (if or-part_0
43537                     or-part_0
43538                     (arity-includes?
43539                      (known-function-arity lookup_0)
43540                      arity_0)))
43541                 #f)
43542               #f)))
43543        (if or-part_0
43544          or-part_0
43545          (let ((or-part_1
43546                 (if (pair? (correlated-e expr_0))
43547                   (if (eq? 'case-lambda (car (correlated-e expr_0)))
43548                     (not arity_0)
43549                     #f)
43550                   #f)))
43551            (if or-part_1
43552              or-part_1
43553              (if (pair? (correlated-e expr_0))
43554                (if (eq? 'lambda (car (correlated-e expr_0)))
43555                  (let ((or-part_2 (not arity_0)))
43556                    (if or-part_2
43557                      or-part_2
43558                      (letrec*
43559                       ((loop_0
43560                         (|#%name|
43561                          loop
43562                          (lambda (args_0 arity_1)
43563                            (begin
43564                              (if (begin-unsafe (syntax? args_0))
43565                                (loop_0 (correlated-e args_0) arity_1)
43566                                (if (null? args_0)
43567                                  (zero? arity_1)
43568                                  (if (pair? args_0)
43569                                    (let ((app_0 (cdr args_0)))
43570                                      (loop_0 app_0 (sub1 arity_1)))
43571                                    (not (negative? arity_1))))))))))
43572                       (loop_0 (cadr (correlated->list expr_0)) arity_0))))
43573                  #f)
43574                #f))))))))
43575(define arity-includes?
43576  (lambda (a_0 n_0)
43577    (let ((or-part_0 (equal? a_0 n_0)))
43578      (if or-part_0
43579        or-part_0
43580        (if (list? a_0)
43581          (begin
43582            (letrec*
43583             ((for-loop_0
43584               (|#%name|
43585                for-loop
43586                (lambda (result_0 lst_0)
43587                  (begin
43588                    (if (pair? lst_0)
43589                      (let ((a_1 (unsafe-car lst_0)))
43590                        (let ((rest_0 (unsafe-cdr lst_0)))
43591                          (let ((result_1
43592                                 (let ((result_1 (equal? a_1 n_0)))
43593                                   (values result_1))))
43594                            (if (if (not (let ((x_0 (list a_1))) result_1))
43595                                  #t
43596                                  #f)
43597                              (for-loop_0 result_1 rest_0)
43598                              result_1))))
43599                      result_0))))))
43600             (for-loop_0 #f a_0)))
43601          #f)))))
43602(define immutable-field?
43603  (lambda (val-expr_0 immutables-expr_0)
43604    (if (quoted? exact-nonnegative-integer? val-expr_0)
43605      (let ((app_0 (quoted-value val-expr_0)))
43606        (memv app_0 (immutables-expr-to-immutables immutables-expr_0 null)))
43607      #f)))
43608(define immutables-expr-to-immutables
43609  (lambda (e_0 fail-v_0)
43610    (let ((tmp_0
43611           (if (pair? (correlated-e e_0))
43612             (correlated-e (car (correlated-e e_0)))
43613             #f)))
43614      (if (eq? tmp_0 'quote)
43615        (let ((v_0 (correlated-cadr e_0)))
43616          (let ((or-part_0
43617                 (if (correlated-length v_0)
43618                   (let ((l_0 (map_1346 correlated-e (correlated->list v_0))))
43619                     (if (andmap_2344 exact-nonnegative-integer? l_0)
43620                       (if (let ((app_0 (length l_0)))
43621                             (=
43622                              app_0
43623                              (let ((s_0 (list->set l_0)))
43624                                (begin-unsafe (hash-count s_0)))))
43625                         l_0
43626                         #f)
43627                       #f))
43628                   #f)))
43629            (if or-part_0 or-part_0 fail-v_0)))
43630        fail-v_0))))
43631(define procedure-spec?
43632  (lambda (e_0 field-count_0)
43633    (let ((or-part_0 (quoted? false? e_0)))
43634      (if or-part_0
43635        or-part_0
43636        (let ((or-part_1
43637               (if (quoted? exact-nonnegative-integer? e_0)
43638                 (if field-count_0 (< (quoted-value e_0) field-count_0) #f)
43639                 #f)))
43640          (if or-part_1 or-part_1 (is-lambda? e_0 #f hash2610)))))))
43641(define immutables-ok?
43642  (lambda (e_0 init-field-count-expr_0)
43643    (let ((l_0 (immutables-expr-to-immutables e_0 #f)))
43644      (let ((c_0 (field-count-expr-to-field-count init-field-count-expr_0)))
43645        (if l_0
43646          (begin
43647            (letrec*
43648             ((for-loop_0
43649               (|#%name|
43650                for-loop
43651                (lambda (result_0 lst_0)
43652                  (begin
43653                    (if (pair? lst_0)
43654                      (let ((n_0 (unsafe-car lst_0)))
43655                        (let ((rest_0 (unsafe-cdr lst_0)))
43656                          (let ((result_1
43657                                 (let ((result_1 (< n_0 c_0)))
43658                                   (values result_1))))
43659                            (if (if (not
43660                                     (let ((x_0 (list n_0))) (not result_1)))
43661                                  #t
43662                                  #f)
43663                              (for-loop_0 result_1 rest_0)
43664                              result_1))))
43665                      result_0))))))
43666             (for-loop_0 #t l_0)))
43667          #f)))))
43668(define ok-make-struct-field-accessor/mutator?
43669  (lambda (e_0 locals_0 type_0 defns_0)
43670    (let ((l_0 (correlated->list e_0)))
43671      (let ((a_0
43672             (if (let ((or-part_0 (= (length l_0) 3)))
43673                   (if or-part_0 or-part_0 (= (length l_0) 4)))
43674               (let ((or-part_0
43675                      (hash-ref locals_0 (correlated-e (list-ref l_0 1)) #f)))
43676                 (if or-part_0
43677                   or-part_0
43678                   (lookup-defn defns_0 (correlated-e (list-ref l_0 1)))))
43679               #f)))
43680        (if (known-struct-op? a_0)
43681          (if (eq? (known-struct-op-type a_0) type_0)
43682            (if (let ((c_0 (field-count-expr-to-field-count (list-ref l_0 2))))
43683                  (if c_0 (< c_0 (known-struct-op-field-count a_0)) #f))
43684              (let ((or-part_0 (= (length l_0) 3)))
43685                (if or-part_0 or-part_0 (quoted? symbol? (list-ref l_0 3))))
43686              #f)
43687            #f)
43688          #f)))))
43689(define maybe+ (lambda (x_0 y_0) (if x_0 (if y_0 (+ x_0 y_0) #f) #f)))
43690(define compile-single
43691  (lambda (p_0 cctx_0) (compile-top.1 #f #t #f p_0 cctx_0)))
43692(define compile-top.1
43693  (|#%name|
43694   compile-top
43695   (lambda (serializable?1_0
43696            single-expression?2_0
43697            to-correlated-linklet?3_0
43698            p7_0
43699            cctx8_0)
43700     (begin
43701       (begin
43702         (if log-performance?
43703           (start-performance-region
43704            'compile
43705            (if single-expression?2_0 'transformer 'top))
43706           (void))
43707         (begin0
43708           (let ((phase_0 (compile-context-phase cctx8_0)))
43709             (let ((mpis_0 (make-module-path-index-table)))
43710               (let ((purely-functional?_0 #t))
43711                 (call-with-values
43712                  (lambda ()
43713                    (let ((temp14_0 (flatten-begin p7_0)))
43714                      (let ((temp17_0
43715                             (if single-expression?2_0
43716                               (list* '() (list syntax-literals-id) '(()))
43717                               (list
43718                                (list top-level-bind!-id top-level-require!-id)
43719                                (list mpi-vector-id syntax-literals-id)
43720                                instance-imports))))
43721                        (let ((temp18_0
43722                               (list
43723                                top-level-instance
43724                                empty-top-syntax-literal-instance
43725                                empty-instance-instance)))
43726                          (let ((temp21_0
43727                                 (lambda () (set! purely-functional?_0 #f))))
43728                            (let ((temp22_0
43729                                   (lambda (e_0
43730                                            expected-results_0
43731                                            phase_1
43732                                            required-reference?_0)
43733                                     (if (if purely-functional?_0
43734                                           (any-side-effects?.1
43735                                            hash2610
43736                                            hash2610
43737                                            required-reference?_0
43738                                            e_0
43739                                            expected-results_0)
43740                                           #f)
43741                                       (set! purely-functional?_0 #f)
43742                                       (void)))))
43743                              (let ((temp23_0
43744                                     (lambda (s_0 cctx_0)
43745                                       (begin
43746                                         (set! purely-functional?_0 #f)
43747                                         (compile-top-level-require
43748                                          s_0
43749                                          cctx_0)))))
43750                                (let ((temp24_0 (not single-expression?2_0)))
43751                                  (let ((temp23_1 temp23_0)
43752                                        (temp22_1 temp22_0)
43753                                        (temp21_1 temp21_0)
43754                                        (temp18_1 temp18_0)
43755                                        (temp17_1 temp17_0)
43756                                        (temp14_1 temp14_0))
43757                                    (compile-forms.1
43758                                     temp18_1
43759                                     temp17_1
43760                                     null
43761                                     temp22_1
43762                                     temp21_1
43763                                     #f
43764                                     null
43765                                     unsafe-undefined
43766                                     #f
43767                                     temp24_0
43768                                     temp23_1
43769                                     #f
43770                                     serializable?1_0
43771                                     to-correlated-linklet?3_0
43772                                     #f
43773                                     temp14_1
43774                                     cctx8_0
43775                                     mpis_0))))))))))
43776                  (case-lambda
43777                   ((body-linklets_0
43778                     min-phase_0
43779                     max-phase_0
43780                     phase-to-link-module-uses_0
43781                     phase-to-link-module-uses-expr_0
43782                     phase-to-link-extra-inspectorss_0
43783                     syntax-literals_0
43784                     no-root-context-pos_0)
43785                    (let ((add-metadata_0
43786                           (|#%name|
43787                            add-metadata
43788                            (lambda (ht_0)
43789                              (begin
43790                                (let ((ht_1
43791                                       (hash-set
43792                                        ht_0
43793                                        'original-phase
43794                                        phase_0)))
43795                                  (let ((ht_2
43796                                         (hash-set
43797                                          ht_1
43798                                          'max-phase
43799                                          max-phase_0)))
43800                                    ht_2)))))))
43801                      (let ((bundle_0
43802                             (1/hash->linklet-bundle
43803                              (add-metadata_0
43804                               (if serializable?1_0
43805                                 (let ((syntax-literals-expr_0
43806                                        (begin
43807                                          (if log-performance?
43808                                            (start-performance-region
43809                                             'compile
43810                                             'top
43811                                             'serialize)
43812                                            (void))
43813                                          (begin0
43814                                            (generate-eager-syntax-literals!
43815                                             syntax-literals_0
43816                                             mpis_0
43817                                             phase_0
43818                                             (compile-context-self cctx8_0)
43819                                             (compile-context-namespace
43820                                              cctx8_0))
43821                                            (if log-performance?
43822                                              (end-performance-region)
43823                                              (void))))))
43824                                   (let ((app_0
43825                                          (list
43826                                           deserialize-imports
43827                                           eager-instance-imports)))
43828                                     (let ((link-linklet_0
43829                                            (let ((s_0
43830                                                   (let ((app_1
43831                                                          (list
43832                                                           mpi-vector-id
43833                                                           deserialized-syntax-vector-id
43834                                                           'phase-to-link-modules
43835                                                           syntax-literals-id)))
43836                                                     (let ((app_2
43837                                                            (let ((app_2
43838                                                                   (list
43839                                                                    mpi-vector-id)))
43840                                                              (list
43841                                                               'define-values
43842                                                               app_2
43843                                                               (generate-module-path-index-deserialize.1
43844                                                                #f
43845                                                                mpis_0)))))
43846                                                       (let ((app_3
43847                                                              (let ((app_3
43848                                                                     (list
43849                                                                      deserialized-syntax-vector-id)))
43850                                                                (list
43851                                                                 'define-values
43852                                                                 app_3
43853                                                                 (list*
43854                                                                  'make-vector
43855                                                                  (add1
43856                                                                   phase_0)
43857                                                                  '(#f))))))
43858                                                         (list
43859                                                          'linklet
43860                                                          app_0
43861                                                          app_1
43862                                                          app_2
43863                                                          app_3
43864                                                          (list
43865                                                           'define-values
43866                                                           '(phase-to-link-modules)
43867                                                           phase-to-link-module-uses-expr_0)
43868                                                          (list
43869                                                           'define-values
43870                                                           (list
43871                                                            syntax-literals-id)
43872                                                           syntax-literals-expr_0)))))))
43873                                              (if to-correlated-linklet?3_0
43874                                                (begin-unsafe
43875                                                 (correlated-linklet1.1
43876                                                  s_0
43877                                                  #f
43878                                                  #f))
43879                                                (begin
43880                                                  (if log-performance?
43881                                                    (start-performance-region
43882                                                     'compile
43883                                                     'top
43884                                                     'linklet)
43885                                                    (void))
43886                                                  (begin0
43887                                                    (call-with-values
43888                                                     (lambda ()
43889                                                       (compile-linklet
43890                                                        s_0
43891                                                        #f
43892                                                        (vector
43893                                                         deserialize-instance
43894                                                         empty-eager-instance-instance)
43895                                                        (lambda (inst_0)
43896                                                          (values inst_0 #f))))
43897                                                     (case-lambda
43898                                                      ((linklet_0 new-keys_0)
43899                                                       linklet_0)
43900                                                      (args
43901                                                       (raise-binding-result-arity-error
43902                                                        2
43903                                                        args))))
43904                                                    (if log-performance?
43905                                                      (end-performance-region)
43906                                                      (void))))))))
43907                                       (hash-set
43908                                        body-linklets_0
43909                                        'link
43910                                        link-linklet_0))))
43911                                 body-linklets_0)))))
43912                        (let ((app_0
43913                               (1/hash->linklet-directory
43914                                (hasheq #f bundle_0))))
43915                          (let ((app_1 (current-code-inspector)))
43916                            (let ((app_2 (mpis-as-vector mpis_0)))
43917                              (let ((app_3
43918                                     (syntax-literals-as-vector
43919                                      syntax-literals_0)))
43920                                (let ((app_4
43921                                       (extract-namespace-scopes
43922                                        (compile-context-namespace cctx8_0))))
43923                                  (compiled-in-memory1.1
43924                                   app_0
43925                                   #f
43926                                   #f
43927                                   #f
43928                                   phase-to-link-module-uses_0
43929                                   app_1
43930                                   phase-to-link-extra-inspectorss_0
43931                                   app_2
43932                                   app_3
43933                                   null
43934                                   null
43935                                   app_4
43936                                   purely-functional?_0)))))))))
43937                   (args (raise-binding-result-arity-error 8 args)))))))
43938           (if log-performance? (end-performance-region) (void))))))))
43939(define compile-top-level-require
43940  (lambda (p_0 cctx_0)
43941    (let ((phase_0 (compile-context-phase cctx_0)))
43942      (if (parsed-require? p_0)
43943        (let ((form-stx_0 (compile-quote-syntax (parsed-s p_0) cctx_0)))
43944          (list top-level-require!-id form-stx_0 ns-id))
43945        #f))))
43946(define flatten-begin
43947  (lambda (p_0)
43948    (if (parsed-begin? p_0)
43949      (apply append (map_1346 flatten-begin (parsed-begin-body p_0)))
43950      (list p_0))))
43951(define core-scope (new-multi-scope))
43952(define core-stx (add-scope empty-syntax core-scope))
43953(define core-module-name (1/make-resolved-module-path '|#%core|))
43954(define core-mpi (1/module-path-index-join ''|#%core| #f))
43955(define cell.1$4 (unsafe-make-place-local (make-hasheq)))
43956(define cell.2$1 (unsafe-make-place-local (make-hasheq)))
43957(define core-place-init!
43958  (lambda ()
43959    (begin
43960      (unsafe-place-local-set! cell.1$4 (make-hasheq))
43961      (unsafe-place-local-set! cell.2$1 (make-hasheq)))))
43962(define core-id
43963  (lambda (sym_0 phase_0)
43964    (if (eqv? phase_0 0)
43965      (let ((or-part_0 (hash-ref (unsafe-place-local-ref cell.1$4) sym_0 #f)))
43966        (if or-part_0
43967          or-part_0
43968          (let ((s_0 (datum->syntax$1 core-stx sym_0)))
43969            (begin
43970              (hash-set! (unsafe-place-local-ref cell.1$4) sym_0 s_0)
43971              s_0))))
43972      (if (eq? phase_0 1)
43973        (let ((or-part_0
43974               (hash-ref (unsafe-place-local-ref cell.2$1) sym_0 #f)))
43975          (if or-part_0
43976            or-part_0
43977            (let ((s_0
43978                   (datum->syntax$1
43979                    (syntax-shift-phase-level$1 core-stx 1)
43980                    sym_0)))
43981              (begin
43982                (hash-set! (unsafe-place-local-ref cell.2$1) sym_0 s_0)
43983                s_0))))
43984        (datum->syntax$1
43985         (syntax-shift-phase-level$1 core-stx phase_0)
43986         sym_0)))))
43987(define core-forms hash2610)
43988(define core-primitives hash2610)
43989(define finish_2981
43990  (make-struct-type-install-properties
43991   '(protected-core)
43992   1
43993   0
43994   #f
43995   (list (cons prop:authentic #t))
43996   (current-inspector)
43997   #f
43998   '(0)
43999   #f
44000   'protected-core))
44001(define struct:protected-core
44002  (make-record-type-descriptor*
44003   'protected-core
44004   #f
44005   (|#%nongenerative-uid| protected-core)
44006   #f
44007   #f
44008   1
44009   0))
44010(define effect_3023 (finish_2981 struct:protected-core))
44011(define protected-core1.1
44012  (|#%name|
44013   protected-core
44014   (record-constructor
44015    (make-record-constructor-descriptor struct:protected-core #f #f))))
44016(define protected-core?
44017  (|#%name| protected-core? (record-predicate struct:protected-core)))
44018(define protected-core-val
44019  (|#%name| protected-core-val (record-accessor struct:protected-core 0)))
44020(define add-core-form!*
44021  (lambda (sym_0 proc_0)
44022    (begin
44023      (add-core-binding! sym_0)
44024      (set! core-forms (hash-set core-forms sym_0 proc_0)))))
44025(define add-core-primitive!.1
44026  (|#%name|
44027   add-core-primitive!
44028   (lambda (protected?2_0 sym4_0 val5_0)
44029     (begin
44030       (begin
44031         (add-core-binding! sym4_0)
44032         (set! core-primitives
44033           (let ((app_0 core-primitives))
44034             (hash-set
44035              app_0
44036              sym4_0
44037              (if protected?2_0 (protected-core1.1 val5_0) val5_0)))))))))
44038(define add-core-binding!
44039  (lambda (sym_0)
44040    (let ((temp8_0 (datum->syntax$1 core-stx sym_0)))
44041      (let ((temp9_0
44042             (make-module-binding.1
44043              #f
44044              null
44045              #f
44046              #f
44047              unsafe-undefined
44048              unsafe-undefined
44049              0
44050              unsafe-undefined
44051              core-mpi
44052              0
44053              sym_0)))
44054        (let ((temp8_1 temp8_0)) (add-binding!.1 #f #f temp8_1 temp9_0 0))))))
44055(define declare-core-module!
44056  (lambda (ns_0)
44057    (let ((temp15_0
44058           (let ((temp20_0
44059                  (hasheqv
44060                   0
44061                   (let ((lst_0
44062                          (let ((app_0 core-primitives))
44063                            (list app_0 core-forms))))
44064                     (let ((lst_1 '(#f #t)))
44065                       (let ((lst_2 lst_0))
44066                         (begin
44067                           (letrec*
44068                            ((for-loop_0
44069                              (|#%name|
44070                               for-loop
44071                               (lambda (table_0 lst_3 lst_4)
44072                                 (begin
44073                                   (if (if (pair? lst_3) (pair? lst_4) #f)
44074                                     (let ((syms_0 (unsafe-car lst_3)))
44075                                       (let ((rest_0 (unsafe-cdr lst_3)))
44076                                         (let ((syntax?_0 (unsafe-car lst_4)))
44077                                           (let ((rest_1 (unsafe-cdr lst_4)))
44078                                             (let ((table_1
44079                                                    (begin
44080                                                      (letrec*
44081                                                       ((for-loop_1
44082                                                         (|#%name|
44083                                                          for-loop
44084                                                          (lambda (table_1 i_0)
44085                                                            (begin
44086                                                              (if i_0
44087                                                                (call-with-values
44088                                                                 (lambda ()
44089                                                                   (hash-iterate-key+value
44090                                                                    syms_0
44091                                                                    i_0))
44092                                                                 (case-lambda
44093                                                                  ((sym_0
44094                                                                    val_0)
44095                                                                   (let ((table_2
44096                                                                          (let ((table_2
44097                                                                                 (call-with-values
44098                                                                                  (lambda ()
44099                                                                                    (let ((b_0
44100                                                                                           (make-module-binding.1
44101                                                                                            #f
44102                                                                                            null
44103                                                                                            #f
44104                                                                                            #f
44105                                                                                            unsafe-undefined
44106                                                                                            unsafe-undefined
44107                                                                                            0
44108                                                                                            unsafe-undefined
44109                                                                                            core-mpi
44110                                                                                            0
44111                                                                                            sym_0)))
44112                                                                                      (values
44113                                                                                       sym_0
44114                                                                                       (if syntax?_0
44115                                                                                         (provided1.1
44116                                                                                          b_0
44117                                                                                          #f
44118                                                                                          #t)
44119                                                                                         (if (protected-core?
44120                                                                                              val_0)
44121                                                                                           (provided1.1
44122                                                                                            b_0
44123                                                                                            #t
44124                                                                                            #f)
44125                                                                                           b_0)))))
44126                                                                                  (case-lambda
44127                                                                                   ((key_0
44128                                                                                     val_1)
44129                                                                                    (hash-set
44130                                                                                     table_1
44131                                                                                     key_0
44132                                                                                     val_1))
44133                                                                                   (args
44134                                                                                    (raise-binding-result-arity-error
44135                                                                                     2
44136                                                                                     args))))))
44137                                                                            (values
44138                                                                             table_2))))
44139                                                                     (for-loop_1
44140                                                                      table_2
44141                                                                      (hash-iterate-next
44142                                                                       syms_0
44143                                                                       i_0))))
44144                                                                  (args
44145                                                                   (raise-binding-result-arity-error
44146                                                                    2
44147                                                                    args))))
44148                                                                table_1))))))
44149                                                       (for-loop_1
44150                                                        table_0
44151                                                        (hash-iterate-first
44152                                                         syms_0))))))
44153                                               (for-loop_0
44154                                                table_1
44155                                                rest_0
44156                                                rest_1))))))
44157                                     table_0))))))
44158                            (for-loop_0 hash2610 lst_2 lst_1)))))))))
44159             (let ((temp21_0
44160                    (lambda (phase-level_0 ns_1 insp_0)
44161                      (if (zero? phase-level_0)
44162                        (let ((ns_2
44163                               (namespace->module-namespace.1
44164                                #f
44165                                #f
44166                                void
44167                                ns_1
44168                                core-module-name
44169                                0)))
44170                          (if ns_2
44171                            (module-linklet-info2.1
44172                             (begin-unsafe
44173                              (definitions-variables
44174                               (namespace->definitions ns_2 0)))
44175                             #f
44176                             core-mpi
44177                             #f
44178                             #f
44179                             #f)
44180                            #f))
44181                        #f))))
44182               (let ((temp22_0
44183                      (lambda (data-box_0
44184                               ns_1
44185                               phase_0
44186                               phase-level_0
44187                               self_0
44188                               bulk-binding-registry_0
44189                               insp_0)
44190                        (if (eq? phase-level_0 0)
44191                          (begin
44192                            (let ((ht_0 core-primitives))
44193                              (begin
44194                                (letrec*
44195                                 ((for-loop_0
44196                                   (|#%name|
44197                                    for-loop
44198                                    (lambda (i_0)
44199                                      (begin
44200                                        (if i_0
44201                                          (call-with-values
44202                                           (lambda ()
44203                                             (hash-iterate-key+value ht_0 i_0))
44204                                           (case-lambda
44205                                            ((sym_0 val_0)
44206                                             (begin
44207                                               (namespace-set-consistent!
44208                                                ns_1
44209                                                0
44210                                                sym_0
44211                                                (if (protected-core? val_0)
44212                                                  (protected-core-val val_0)
44213                                                  val_0))
44214                                               (for-loop_0
44215                                                (hash-iterate-next ht_0 i_0))))
44216                                            (args
44217                                             (raise-binding-result-arity-error
44218                                              2
44219                                              args))))
44220                                          (values)))))))
44221                                 (for-loop_0 (hash-iterate-first ht_0)))))
44222                            (void)
44223                            (let ((ht_0 core-forms))
44224                              (begin
44225                                (letrec*
44226                                 ((for-loop_0
44227                                   (|#%name|
44228                                    for-loop
44229                                    (lambda (i_0)
44230                                      (begin
44231                                        (if i_0
44232                                          (call-with-values
44233                                           (lambda ()
44234                                             (hash-iterate-key+value ht_0 i_0))
44235                                           (case-lambda
44236                                            ((sym_0 proc_0)
44237                                             (begin
44238                                               (namespace-set-transformer!
44239                                                ns_1
44240                                                0
44241                                                sym_0
44242                                                (if (procedure-arity-includes?
44243                                                     proc_0
44244                                                     2)
44245                                                  (core-form7.1 proc_0 sym_0)
44246                                                  proc_0))
44247                                               (for-loop_0
44248                                                (hash-iterate-next ht_0 i_0))))
44249                                            (args
44250                                             (raise-binding-result-arity-error
44251                                              2
44252                                              args))))
44253                                          (values)))))))
44254                                 (for-loop_0 (hash-iterate-first ht_0)))))
44255                            (void))
44256                          (void)))))
44257                 (let ((temp21_1 temp21_0) (temp20_1 temp20_0))
44258                   (make-module.1
44259                    #t
44260                    void
44261                    unsafe-undefined
44262                    temp22_0
44263                    #f
44264                    0
44265                    0
44266                    #f
44267                    temp21_1
44268                    #t
44269                    void
44270                    #f
44271                    temp20_1
44272                    null
44273                    core-mpi
44274                    #f
44275                    null
44276                    #f)))))))
44277      (declare-module!.1 #t ns_0 temp15_0 core-module-name))))
44278(define core-form-sym
44279  (lambda (s_0 phase_0)
44280    (call-with-values
44281     (lambda ()
44282       (if (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
44283             (if (pair? s_1)
44284               (if (let ((s_2 (car s_1)))
44285                     (let ((or-part_0
44286                            (if (syntax?$1 s_2)
44287                              (symbol? (syntax-e$1 s_2))
44288                              #f)))
44289                       (if or-part_0 or-part_0 (symbol? s_2))))
44290                 (let ((s_2 (cdr s_1))) #t)
44291                 #f)
44292               #f))
44293         (call-with-values
44294          (lambda ()
44295            (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
44296              (let ((id31_0 (let ((s_2 (car s_1))) s_2)))
44297                (let ((_0 (let ((s_2 (cdr s_1))) s_2)))
44298                  (let ((id31_1 id31_0)) (values id31_1 _0))))))
44299          (case-lambda
44300           ((id29_0 _0) (values #t id29_0 _0))
44301           (args (raise-binding-result-arity-error 2 args))))
44302         (values #f #f #f)))
44303     (case-lambda
44304      ((ok?_0 id29_0 _0)
44305       (if ok?_0
44306         (let ((b_0
44307                (resolve+shift.1
44308                 #f
44309                 #f
44310                 null
44311                 unsafe-undefined
44312                 #f
44313                 id29_0
44314                 phase_0)))
44315           (if (module-binding? b_0)
44316             (if (eq?
44317                  core-module-name
44318                  (1/module-path-index-resolve (module-binding-module b_0)))
44319               (module-binding-sym b_0)
44320               #f)
44321             #f))
44322         #f))
44323      (args (raise-binding-result-arity-error 3 args))))))
44324(define select-defined-syms-and-bind!.1
44325  (|#%name|
44326   select-defined-syms-and-bind!
44327   (lambda (as-transformer?5_0
44328            frame-id1_0
44329            in4_0
44330            requires+provides3_0
44331            top-level-bind-scope2_0
44332            ids11_0
44333            defined-syms12_0
44334            self13_0
44335            phase14_0
44336            all-scopes-stx15_0)
44337     (begin
44338       (let ((defined-syms-at-phase_0
44339              (let ((or-part_0 (hash-ref defined-syms12_0 phase14_0 #f)))
44340                (if or-part_0
44341                  or-part_0
44342                  (let ((ht_0 (make-hasheq)))
44343                    (begin
44344                      (hash-set! defined-syms12_0 phase14_0 ht_0)
44345                      ht_0))))))
44346         (reverse$1
44347          (begin
44348            (letrec*
44349             ((for-loop_0
44350               (|#%name|
44351                for-loop
44352                (lambda (fold-var_0 lst_0)
44353                  (begin
44354                    (if (pair? lst_0)
44355                      (let ((id_0 (unsafe-car lst_0)))
44356                        (let ((rest_0 (unsafe-cdr lst_0)))
44357                          (let ((fold-var_1
44358                                 (let ((fold-var_1
44359                                        (cons
44360                                         (let ((sym_0 (syntax-e$1 id_0)))
44361                                           (let ((defined-sym_0
44362                                                  (if (if (not
44363                                                           (defined-as-other?
44364                                                            (hash-ref
44365                                                             defined-syms-at-phase_0
44366                                                             sym_0
44367                                                             #f)
44368                                                            id_0
44369                                                            phase14_0
44370                                                            top-level-bind-scope2_0))
44371                                                        (if (no-extra-scopes?
44372                                                             id_0
44373                                                             all-scopes-stx15_0
44374                                                             top-level-bind-scope2_0
44375                                                             phase14_0)
44376                                                          (symbol-interned?
44377                                                           sym_0)
44378                                                          #f)
44379                                                        #f)
44380                                                    sym_0
44381                                                    (letrec*
44382                                                     ((loop_0
44383                                                       (|#%name|
44384                                                        loop
44385                                                        (lambda (pos_0)
44386                                                          (begin
44387                                                            (let ((s_0
44388                                                                   (string->unreadable-symbol
44389                                                                    (let ((app_0
44390                                                                           (symbol->string
44391                                                                            sym_0)))
44392                                                                      (string-append
44393                                                                       app_0
44394                                                                       "."
44395                                                                       (number->string
44396                                                                        pos_0))))))
44397                                                              (if (defined-as-other?
44398                                                                   (hash-ref
44399                                                                    defined-syms-at-phase_0
44400                                                                    s_0
44401                                                                    #f)
44402                                                                   id_0
44403                                                                   phase14_0
44404                                                                   top-level-bind-scope2_0)
44405                                                                (loop_0
44406                                                                 (add1 pos_0))
44407                                                                s_0)))))))
44408                                                     (loop_0 1)))))
44409                                             (begin
44410                                               (hash-set!
44411                                                defined-syms-at-phase_0
44412                                                defined-sym_0
44413                                                id_0)
44414                                               (let ((b_0
44415                                                      (make-module-binding.1
44416                                                       #f
44417                                                       null
44418                                                       frame-id1_0
44419                                                       #f
44420                                                       unsafe-undefined
44421                                                       unsafe-undefined
44422                                                       0
44423                                                       sym_0
44424                                                       self13_0
44425                                                       phase14_0
44426                                                       defined-sym_0)))
44427                                                 (begin
44428                                                   (if requires+provides3_0
44429                                                     (remove-required-id!
44430                                                      requires+provides3_0
44431                                                      id_0
44432                                                      phase14_0)
44433                                                     (void))
44434                                                   (add-binding!.1
44435                                                    in4_0
44436                                                    #f
44437                                                    id_0
44438                                                    b_0
44439                                                    phase14_0)
44440                                                   (if requires+provides3_0
44441                                                     (add-defined-or-required-id!.1
44442                                                      as-transformer?5_0
44443                                                      #f
44444                                                      requires+provides3_0
44445                                                      id_0
44446                                                      phase14_0
44447                                                      b_0)
44448                                                     (void))
44449                                                   defined-sym_0)))))
44450                                         fold-var_0)))
44451                                   (values fold-var_1))))
44452                            (for-loop_0 fold-var_1 rest_0))))
44453                      fold-var_0))))))
44454             (for-loop_0 null ids11_0)))))))))
44455(define no-extra-scopes?
44456  (lambda (id_0 all-scopes-stx_0 top-level-bind-scope_0 phase_0)
44457    (let ((m-id_0 (datum->syntax$1 all-scopes-stx_0 (syntax-e$1 id_0))))
44458      (let ((or-part_0 (bound-identifier=?$1 id_0 m-id_0 phase_0)))
44459        (if or-part_0
44460          or-part_0
44461          (if top-level-bind-scope_0
44462            (bound-identifier=?$1
44463             id_0
44464             (add-scope m-id_0 top-level-bind-scope_0)
44465             phase_0)
44466            #f))))))
44467(define defined-as-other?
44468  (lambda (prev-id_0 id_0 phase_0 top-level-bind-scope_0)
44469    (if prev-id_0
44470      (if (not (bound-identifier=?$1 prev-id_0 id_0 phase_0))
44471        (let ((or-part_0 (not top-level-bind-scope_0)))
44472          (if or-part_0
44473            or-part_0
44474            (not
44475             (let ((app_0 (remove-scope prev-id_0 top-level-bind-scope_0)))
44476               (bound-identifier=?$1
44477                app_0
44478                (remove-scope id_0 top-level-bind-scope_0)
44479                phase_0)))))
44480        #f)
44481      #f)))
44482(define select-defined-syms-and-bind!/ctx
44483  (lambda (tl-ids_0 ctx_0)
44484    (let ((temp32_0
44485           (begin-unsafe
44486            (root-expand-context/inner-defined-syms
44487             (root-expand-context/outer-inner ctx_0)))))
44488      (let ((temp33_0
44489             (begin-unsafe
44490              (root-expand-context/inner-self-mpi
44491               (root-expand-context/outer-inner ctx_0)))))
44492        (let ((temp34_0
44493               (begin-unsafe
44494                (expand-context/inner-phase
44495                 (root-expand-context/outer-inner ctx_0)))))
44496          (let ((temp35_0
44497                 (begin-unsafe
44498                  (root-expand-context/inner-all-scopes-stx
44499                   (root-expand-context/outer-inner ctx_0)))))
44500            (let ((temp36_0
44501                   (begin-unsafe (root-expand-context/outer-frame-id ctx_0))))
44502              (let ((temp37_0
44503                     (begin-unsafe
44504                      (root-expand-context/inner-top-level-bind-scope
44505                       (root-expand-context/outer-inner ctx_0)))))
44506                (select-defined-syms-and-bind!.1
44507                 #f
44508                 temp36_0
44509                 #f
44510                 #f
44511                 temp37_0
44512                 tl-ids_0
44513                 temp32_0
44514                 temp33_0
44515                 temp34_0
44516                 temp35_0)))))))))
44517(define add-defined-sym!
44518  (lambda (defined-syms_0 phase_0 sym_0 id_0)
44519    (let ((defined-syms-at-phase_0
44520           (let ((or-part_0 (hash-ref defined-syms_0 phase_0 #f)))
44521             (if or-part_0
44522               or-part_0
44523               (let ((ht_0 (make-hasheq)))
44524                 (begin (hash-set! defined-syms_0 phase_0 ht_0) ht_0))))))
44525      (hash-set! defined-syms-at-phase_0 sym_0 id_0))))
44526(define make-create-root-expand-context-from-module
44527  (lambda (requires_0 evaled-ld-h_0)
44528    (lambda (ns_0 phase-shift_0 original-self_0 self_0)
44529      (let ((temp1_0 (namespace-mpi ns_0)))
44530        (let ((root-ctx_0
44531               (make-root-expand-context.1
44532                #f
44533                null
44534                unsafe-undefined
44535                unsafe-undefined
44536                temp1_0)))
44537          (let ((s_0
44538                 (add-scopes
44539                  empty-syntax
44540                  (begin-unsafe
44541                   (root-expand-context/inner-module-scopes
44542                    (root-expand-context/outer-inner root-ctx_0))))))
44543            (begin
44544              (begin
44545                (letrec*
44546                 ((for-loop_0
44547                   (|#%name|
44548                    for-loop
44549                    (lambda (lst_0)
44550                      (begin
44551                        (if (pair? lst_0)
44552                          (let ((phase+reqs_0 (unsafe-car lst_0)))
44553                            (let ((rest_0 (unsafe-cdr lst_0)))
44554                              (begin
44555                                (let ((phase_0 (car phase+reqs_0)))
44556                                  (begin
44557                                    (let ((lst_1 (cdr phase+reqs_0)))
44558                                      (begin
44559                                        (letrec*
44560                                         ((for-loop_1
44561                                           (|#%name|
44562                                            for-loop
44563                                            (lambda (lst_2)
44564                                              (begin
44565                                                (if (pair? lst_2)
44566                                                  (let ((req_0
44567                                                         (unsafe-car lst_2)))
44568                                                    (let ((rest_1
44569                                                           (unsafe-cdr lst_2)))
44570                                                      (begin
44571                                                        (let ((mpi_0
44572                                                               (module-path-index-shift
44573                                                                req_0
44574                                                                original-self_0
44575                                                                self_0)))
44576                                                          (let ((temp7_0
44577                                                                 (phase+
44578                                                                  phase_0
44579                                                                  phase-shift_0)))
44580                                                            (perform-require!.1
44581                                                             #f
44582                                                             #t
44583                                                             #f
44584                                                             #f
44585                                                             #f
44586                                                             #f
44587                                                             'all
44588                                                             #t
44589                                                             temp7_0
44590                                                             #f
44591                                                             phase-shift_0
44592                                                             #f
44593                                                             #f
44594                                                             unsafe-undefined
44595                                                             #t
44596                                                             'module
44597                                                             mpi_0
44598                                                             s_0
44599                                                             self_0
44600                                                             s_0
44601                                                             ns_0)))
44602                                                        (for-loop_1 rest_1))))
44603                                                  (values)))))))
44604                                         (for-loop_1 lst_1))))
44605                                    (void)))
44606                                (for-loop_0 rest_0))))
44607                          (values)))))))
44608                 (for-loop_0 requires_0)))
44609              (let ((defined-syms_0
44610                     (begin-unsafe
44611                      (root-expand-context/inner-defined-syms
44612                       (root-expand-context/outer-inner root-ctx_0)))))
44613                (begin
44614                  (begin
44615                    (letrec*
44616                     ((for-loop_0
44617                       (|#%name|
44618                        for-loop
44619                        (lambda (i_0)
44620                          (begin
44621                            (if i_0
44622                              (call-with-values
44623                               (lambda ()
44624                                 (hash-iterate-key+value evaled-ld-h_0 i_0))
44625                               (case-lambda
44626                                ((phase_0 linklet_0)
44627                                 (begin
44628                                   (begin
44629                                     (let ((lst_0
44630                                            (linklet-export-variables
44631                                             linklet_0)))
44632                                       (begin
44633                                         (letrec*
44634                                          ((for-loop_1
44635                                            (|#%name|
44636                                             for-loop
44637                                             (lambda (lst_1)
44638                                               (begin
44639                                                 (if (pair? lst_1)
44640                                                   (let ((sym_0
44641                                                          (unsafe-car lst_1)))
44642                                                     (let ((rest_0
44643                                                            (unsafe-cdr
44644                                                             lst_1)))
44645                                                       (begin
44646                                                         (let ((id_0
44647                                                                (datum->syntax$1
44648                                                                 s_0
44649                                                                 sym_0)))
44650                                                           (begin
44651                                                             (let ((temp11_0
44652                                                                    (make-module-binding.1
44653                                                                     #f
44654                                                                     null
44655                                                                     #f
44656                                                                     #f
44657                                                                     unsafe-undefined
44658                                                                     unsafe-undefined
44659                                                                     0
44660                                                                     unsafe-undefined
44661                                                                     self_0
44662                                                                     phase_0
44663                                                                     sym_0)))
44664                                                               (add-binding!.1
44665                                                                #f
44666                                                                #f
44667                                                                id_0
44668                                                                temp11_0
44669                                                                phase_0))
44670                                                             (add-defined-sym!
44671                                                              defined-syms_0
44672                                                              phase_0
44673                                                              sym_0
44674                                                              id_0)))
44675                                                         (for-loop_1 rest_0))))
44676                                                   (values)))))))
44677                                          (for-loop_1 lst_0))))
44678                                     (void))
44679                                   (for-loop_0
44680                                    (hash-iterate-next evaled-ld-h_0 i_0))))
44681                                (args
44682                                 (raise-binding-result-arity-error 2 args))))
44683                              (values)))))))
44684                     (for-loop_0 (hash-iterate-first evaled-ld-h_0))))
44685                  (void)
44686                  root-ctx_0)))))))))
44687(define shift-to-inside-root-context
44688  (lambda (root-context_0)
44689    (let ((outside-mpi_0
44690           (begin-unsafe
44691            (root-expand-context/inner-self-mpi
44692             (root-expand-context/outer-inner root-context_0)))))
44693      (let ((inside-mpi_0
44694             (make-self-module-path-index
44695              (module-path-index-resolved outside-mpi_0))))
44696        (if (root-expand-context/outer? root-context_0)
44697          (let ((the-struct_0
44698                 (root-expand-context/outer-inner root-context_0)))
44699            (let ((inner16_0
44700                   (if (root-expand-context/inner? the-struct_0)
44701                     (let ((temp19_0
44702                            (begin-unsafe
44703                             (root-expand-context/inner-all-scopes-stx
44704                              (root-expand-context/outer-inner
44705                               root-context_0)))))
44706                       (let ((all-scopes-stx18_0
44707                              (syntax-module-path-index-shift.1
44708                               #f
44709                               temp19_0
44710                               outside-mpi_0
44711                               inside-mpi_0
44712                               #f)))
44713                         (root-expand-context/inner2.1
44714                          inside-mpi_0
44715                          (root-expand-context/inner-module-scopes
44716                           the-struct_0)
44717                          (root-expand-context/inner-top-level-bind-scope
44718                           the-struct_0)
44719                          all-scopes-stx18_0
44720                          (root-expand-context/inner-defined-syms the-struct_0)
44721                          (root-expand-context/inner-counter the-struct_0)
44722                          (root-expand-context/inner-lift-key the-struct_0))))
44723                     (raise-argument-error
44724                      'struct-copy
44725                      "root-expand-context/inner?"
44726                      the-struct_0))))
44727              (root-expand-context/outer1.1
44728               inner16_0
44729               (root-expand-context/outer-post-expansion root-context_0)
44730               (root-expand-context/outer-use-site-scopes root-context_0)
44731               (root-expand-context/outer-frame-id root-context_0))))
44732          (raise-argument-error
44733           'struct-copy
44734           "root-expand-context/outer?"
44735           root-context_0))))))
44736(define initial-code-inspector (current-code-inspector))
44737(define check-require-access.1
44738  (|#%name|
44739   check-require-access
44740   (lambda (skip-imports1_0
44741            linklet3_0
44742            import-module-uses4_0
44743            import-module-instances5_0
44744            insp6_0
44745            extra-inspector7_0
44746            extra-inspectorsss8_0)
44747     (begin
44748       (begin
44749         (let ((lst_0
44750                (list-tail
44751                 (linklet-import-variables linklet3_0)
44752                 skip-imports1_0)))
44753           (let ((lst_1
44754                  (if extra-inspectorsss8_0
44755                    extra-inspectorsss8_0
44756                    import-module-uses4_0)))
44757             (let ((lst_2 lst_0))
44758               (begin
44759                 (letrec*
44760                  ((for-loop_0
44761                    (|#%name|
44762                     for-loop
44763                     (lambda (lst_3 lst_4 lst_5 lst_6)
44764                       (begin
44765                         (if (if (pair? lst_3)
44766                               (if (pair? lst_4)
44767                                 (if (pair? lst_5) (pair? lst_6) #f)
44768                                 #f)
44769                               #f)
44770                           (let ((import-syms_0 (unsafe-car lst_3)))
44771                             (let ((rest_0 (unsafe-cdr lst_3)))
44772                               (let ((mu_0 (unsafe-car lst_4)))
44773                                 (let ((rest_1 (unsafe-cdr lst_4)))
44774                                   (let ((mi_0 (unsafe-car lst_5)))
44775                                     (let ((rest_2 (unsafe-cdr lst_5)))
44776                                       (let ((extra-inspectorss_0
44777                                              (unsafe-car lst_6)))
44778                                         (let ((rest_3 (unsafe-cdr lst_6)))
44779                                           (begin
44780                                             (let ((m_0
44781                                                    (module-instance-module
44782                                                     mi_0)))
44783                                               (if (module-no-protected? m_0)
44784                                                 (void)
44785                                                 (let ((access_0
44786                                                        (let ((or-part_0
44787                                                               (module-access
44788                                                                m_0)))
44789                                                          (if or-part_0
44790                                                            or-part_0
44791                                                            (module-compute-access!
44792                                                             m_0)))))
44793                                                   (begin
44794                                                     (begin
44795                                                       (letrec*
44796                                                        ((for-loop_1
44797                                                          (|#%name|
44798                                                           for-loop
44799                                                           (lambda (lst_7)
44800                                                             (begin
44801                                                               (if (pair?
44802                                                                    lst_7)
44803                                                                 (let ((import-sym_0
44804                                                                        (unsafe-car
44805                                                                         lst_7)))
44806                                                                   (let ((rest_4
44807                                                                          (unsafe-cdr
44808                                                                           lst_7)))
44809                                                                     (begin
44810                                                                       (let ((a_0
44811                                                                              (hash-ref
44812                                                                               (hash-ref
44813                                                                                access_0
44814                                                                                (module-use-phase
44815                                                                                 mu_0)
44816                                                                                hash2610)
44817                                                                               import-sym_0
44818                                                                               'unexported)))
44819                                                                         (if (let ((or-part_0
44820                                                                                    (eq?
44821                                                                                     a_0
44822                                                                                     'unexported)))
44823                                                                               (if or-part_0
44824                                                                                 or-part_0
44825                                                                                 (eq?
44826                                                                                  a_0
44827                                                                                  'protected)))
44828                                                                           (let ((guard-insp_0
44829                                                                                  (namespace-inspector
44830                                                                                   (module-instance-namespace
44831                                                                                    mi_0))))
44832                                                                             (if (let ((or-part_0
44833                                                                                        (inspector-superior?
44834                                                                                         insp6_0
44835                                                                                         guard-insp_0)))
44836                                                                                   (if or-part_0
44837                                                                                     or-part_0
44838                                                                                     (let ((or-part_1
44839                                                                                            (if extra-inspector7_0
44840                                                                                              (inspector-superior?
44841                                                                                               extra-inspector7_0
44842                                                                                               guard-insp_0)
44843                                                                                              #f)))
44844                                                                                       (if or-part_1
44845                                                                                         or-part_1
44846                                                                                         (if extra-inspectorsss8_0
44847                                                                                           (if extra-inspectorss_0
44848                                                                                             (extra-inspectors-allow?
44849                                                                                              (hash-ref
44850                                                                                               extra-inspectorss_0
44851                                                                                               import-sym_0
44852                                                                                               #f)
44853                                                                                              guard-insp_0)
44854                                                                                             #f)
44855                                                                                           #f)))))
44856                                                                               (void)
44857                                                                               (let ((app_0
44858                                                                                      (string-append
44859                                                                                       "access disallowed by code inspector to ~a variable\n"
44860                                                                                       "  variable: ~s\n"
44861                                                                                       "  from module: ~a")))
44862                                                                                 (error
44863                                                                                  'link
44864                                                                                  app_0
44865                                                                                  a_0
44866                                                                                  import-sym_0
44867                                                                                  (1/module-path-index-resolve
44868                                                                                   (namespace-mpi
44869                                                                                    (module-instance-namespace
44870                                                                                     mi_0)))))))
44871                                                                           (void)))
44872                                                                       (for-loop_1
44873                                                                        rest_4))))
44874                                                                 (values)))))))
44875                                                        (for-loop_1
44876                                                         import-syms_0)))
44877                                                     (void)))))
44878                                             (for-loop_0
44879                                              rest_0
44880                                              rest_1
44881                                              rest_2
44882                                              rest_3))))))))))
44883                           (values)))))))
44884                  (for-loop_0
44885                   lst_2
44886                   import-module-uses4_0
44887                   import-module-instances5_0
44888                   lst_1))))))
44889         (void))))))
44890(define check-single-require-access
44891  (lambda (mi_0 phase_0 sym_0 insp_0)
44892    (let ((m_0 (module-instance-module mi_0)))
44893      (if (module-no-protected? m_0)
44894        #t
44895        (let ((access_0
44896               (let ((or-part_0 (module-access m_0)))
44897                 (if or-part_0 or-part_0 (module-compute-access! m_0)))))
44898          (let ((a_0
44899                 (hash-ref
44900                  (hash-ref access_0 phase_0 hash2610)
44901                  sym_0
44902                  'unexported)))
44903            (if (let ((or-part_0 (eq? a_0 'unexported)))
44904                  (if or-part_0 or-part_0 (eq? a_0 'protected)))
44905              (let ((guard-insp_0
44906                     (namespace-inspector (module-instance-namespace mi_0))))
44907                (let ((or-part_0
44908                       (if insp_0
44909                         (inspector-superior? insp_0 guard-insp_0)
44910                         #f)))
44911                  (if or-part_0
44912                    or-part_0
44913                    (inspector-superior?
44914                     (current-code-inspector)
44915                     guard-insp_0))))
44916              #t)))))))
44917(define cell.1$3 (unsafe-make-place-local (make-weak-hasheq)))
44918(define module-cache-place-init!
44919  (lambda () (unsafe-place-local-set! cell.1$3 (make-weak-hasheq))))
44920(define make-module-cache-key
44921  (lambda (hash-code_0)
44922    (if hash-code_0
44923      (string->symbol
44924       (format
44925        "~s"
44926        (list
44927         hash-code_0
44928         (path->directory-path
44929          (let ((or-part_0 (current-load-relative-directory)))
44930            (if or-part_0 or-part_0 (current-directory)))))))
44931      #f)))
44932(define module-cache-set!
44933  (lambda (key_0 proc_0)
44934    (hash-set!
44935     (unsafe-place-local-ref cell.1$3)
44936     key_0
44937     (make-ephemeron key_0 proc_0))))
44938(define module-cache-ref
44939  (lambda (key_0)
44940    (let ((e_0 (hash-ref (unsafe-place-local-ref cell.1$3) key_0 #f)))
44941      (if e_0 (ephemeron-value e_0) #f))))
44942(define current-module-declare-as-predefined
44943  (make-parameter #f #f 'current-module-declare-as-predefined))
44944(define eval-module.1
44945  (|#%name|
44946   eval-module
44947   (lambda (namespace1_0 supermodule-name3_0 with-submodules?2_0 c7_0)
44948     (begin
44949       (let ((ns_0
44950              (if (eq? namespace1_0 unsafe-undefined)
44951                (1/current-namespace)
44952                namespace1_0)))
44953         (begin
44954           (if log-performance?
44955             (start-performance-region 'eval 'module)
44956             (void))
44957           (begin0
44958             (call-with-values
44959              (lambda ()
44960                (compiled-module->dh+h+data-instance+declaration-instance
44961                 c7_0))
44962              (case-lambda
44963               ((dh_0 h_0 data-instance_0 declaration-instance_0)
44964                (let ((syntax-literals-data-instance_0
44965                       (if (compiled-in-memory? c7_0)
44966                         (make-syntax-literal-data-instance-from-compiled-in-memory
44967                          c7_0)
44968                         (let ((l_0 (hash-ref h_0 'stx-data #f)))
44969                           (if l_0
44970                             (let ((app_0
44971                                    (begin-unsafe
44972                                     (eval-linklet
44973                                      (force-compile-linklet l_0)))))
44974                               (instantiate-linklet
44975                                app_0
44976                                (list deserialize-instance data-instance_0)))
44977                             (if (eq?
44978                                  (hash-ref h_0 'module->namespace #f)
44979                                  'empty)
44980                               empty-syntax-literals-instance/empty-namespace
44981                               empty-syntax-literals-data-instance))))))
44982                  (let ((decl_0
44983                         (|#%name|
44984                          decl
44985                          (lambda (key_0)
44986                            (begin
44987                              (instance-variable-value
44988                               declaration-instance_0
44989                               key_0))))))
44990                    (let ((pre-submodule-names_0 (hash-ref h_0 'pre null)))
44991                      (let ((post-submodule-names_0 (hash-ref h_0 'post null)))
44992                        (let ((default-name_0 (hash-ref h_0 'name 'module)))
44993                          (let ((cache-key_0
44994                                 (make-module-cache-key
44995                                  (if (null? pre-submodule-names_0)
44996                                    (if (null? post-submodule-names_0)
44997                                      (hash-ref h_0 'hash-code #f)
44998                                      #f)
44999                                    #f))))
45000                            (let ((cross-phase-persistent?_0
45001                                   (hash-ref h_0 'cross-phase-persistent? #f)))
45002                              (let ((min-phase_0 (hash-ref h_0 'min-phase 0)))
45003                                (let ((max-phase_0
45004                                       (hash-ref h_0 'max-phase 0)))
45005                                  (let ((language-info_0
45006                                         (hash-ref h_0 'language-info #f)))
45007                                    (let ((phases-h_0
45008                                           (let ((end_0 (add1 max-phase_0)))
45009                                             (begin
45010                                               (letrec*
45011                                                ((for-loop_0
45012                                                  (|#%name|
45013                                                   for-loop
45014                                                   (lambda (table_0 pos_0)
45015                                                     (begin
45016                                                       (if (< pos_0 end_0)
45017                                                         (let ((table_1
45018                                                                (let ((id*_0
45019                                                                       (hash-ref
45020                                                                        h_0
45021                                                                        pos_0
45022                                                                        #f)))
45023                                                                  (begin
45024                                                                    #t
45025                                                                    (letrec*
45026                                                                     ((for-loop_1
45027                                                                       (|#%name|
45028                                                                        for-loop
45029                                                                        (lambda (table_1)
45030                                                                          (begin
45031                                                                            (let ((table_2
45032                                                                                   (if id*_0
45033                                                                                     (let ((table_2
45034                                                                                            (call-with-values
45035                                                                                             (lambda ()
45036                                                                                               (values
45037                                                                                                pos_0
45038                                                                                                (begin-unsafe
45039                                                                                                 (eval-linklet
45040                                                                                                  (force-compile-linklet
45041                                                                                                   id*_0)))))
45042                                                                                             (case-lambda
45043                                                                                              ((key_0
45044                                                                                                val_0)
45045                                                                                               (hash-set
45046                                                                                                table_1
45047                                                                                                key_0
45048                                                                                                val_0))
45049                                                                                              (args
45050                                                                                               (raise-binding-result-arity-error
45051                                                                                                2
45052                                                                                                args))))))
45053                                                                                       (values
45054                                                                                        table_2))
45055                                                                                     table_1)))
45056                                                                              table_2))))))
45057                                                                     (for-loop_1
45058                                                                      table_0))))))
45059                                                           (for-loop_0
45060                                                            table_1
45061                                                            (+ pos_0 1)))
45062                                                         table_0))))))
45063                                                (for-loop_0
45064                                                 hash2725
45065                                                 min-phase_0))))))
45066                                      (let ((syntax-literals-linklet_0
45067                                             (let ((l_0
45068                                                    (hash-ref h_0 'stx #f)))
45069                                               (if l_0
45070                                                 (begin-unsafe
45071                                                  (eval-linklet
45072                                                   (force-compile-linklet
45073                                                    l_0)))
45074                                                 #f))))
45075                                        (let ((extra-inspector_0
45076                                               (if (compiled-in-memory? c7_0)
45077                                                 (compiled-in-memory-compile-time-inspector
45078                                                  c7_0)
45079                                                 #f)))
45080                                          (let ((phase-to-link-extra-inspectorsss_0
45081                                                 (if (compiled-in-memory? c7_0)
45082                                                   (compiled-in-memory-phase-to-link-extra-inspectorsss
45083                                                    c7_0)
45084                                                   hash2589)))
45085                                            (let ((requires_0
45086                                                   (begin-unsafe
45087                                                    (begin
45088                                                      (instance-variable-value
45089                                                       declaration-instance_0
45090                                                       'requires)))))
45091                                              (let ((provides_0
45092                                                     (begin-unsafe
45093                                                      (begin
45094                                                        (instance-variable-value
45095                                                         declaration-instance_0
45096                                                         'provides)))))
45097                                                (let ((original-self_0
45098                                                       (begin-unsafe
45099                                                        (begin
45100                                                          (instance-variable-value
45101                                                           declaration-instance_0
45102                                                           'self-mpi)))))
45103                                                  (let ((phase-to-link-modules_0
45104                                                         (begin-unsafe
45105                                                          (begin
45106                                                            (instance-variable-value
45107                                                             declaration-instance_0
45108                                                             'phase-to-link-modules)))))
45109                                                    (let ((create-root-expand-context-from-module_0
45110                                                           (make-create-root-expand-context-from-module
45111                                                            requires_0
45112                                                            phases-h_0)))
45113                                                      (let ((declare-submodules_0
45114                                                             (if dh_0
45115                                                               (|#%name|
45116                                                                declare-submodules
45117                                                                (lambda (ns_1
45118                                                                         names_0
45119                                                                         declare-name_0
45120                                                                         pre?_0)
45121                                                                  (begin
45122                                                                    (if (compiled-in-memory?
45123                                                                         c7_0)
45124                                                                      (begin
45125                                                                        (let ((lst_0
45126                                                                               (if pre?_0
45127                                                                                 (compiled-in-memory-pre-compiled-in-memorys
45128                                                                                  c7_0)
45129                                                                                 (compiled-in-memory-post-compiled-in-memorys
45130                                                                                  c7_0))))
45131                                                                          (begin
45132                                                                            (letrec*
45133                                                                             ((for-loop_0
45134                                                                               (|#%name|
45135                                                                                for-loop
45136                                                                                (lambda (lst_1)
45137                                                                                  (begin
45138                                                                                    (if (pair?
45139                                                                                         lst_1)
45140                                                                                      (let ((c_0
45141                                                                                             (unsafe-car
45142                                                                                              lst_1)))
45143                                                                                        (let ((rest_0
45144                                                                                               (unsafe-cdr
45145                                                                                                lst_1)))
45146                                                                                          (begin
45147                                                                                            (eval-module.1
45148                                                                                             ns_1
45149                                                                                             declare-name_0
45150                                                                                             #t
45151                                                                                             c_0)
45152                                                                                            (for-loop_0
45153                                                                                             rest_0))))
45154                                                                                      (values)))))))
45155                                                                             (for-loop_0
45156                                                                              lst_0))))
45157                                                                        (void))
45158                                                                      (begin
45159                                                                        (begin
45160                                                                          (letrec*
45161                                                                           ((for-loop_0
45162                                                                             (|#%name|
45163                                                                              for-loop
45164                                                                              (lambda (lst_0)
45165                                                                                (begin
45166                                                                                  (if (pair?
45167                                                                                       lst_0)
45168                                                                                    (let ((name_0
45169                                                                                           (unsafe-car
45170                                                                                            lst_0)))
45171                                                                                      (let ((rest_0
45172                                                                                             (unsafe-cdr
45173                                                                                              lst_0)))
45174                                                                                        (begin
45175                                                                                          (let ((sm-cd_0
45176                                                                                                 (hash-ref
45177                                                                                                  dh_0
45178                                                                                                  name_0
45179                                                                                                  #f)))
45180                                                                                            (begin
45181                                                                                              (if sm-cd_0
45182                                                                                                (void)
45183                                                                                                (error
45184                                                                                                 "missing submodule declaration:"
45185                                                                                                 name_0))
45186                                                                                              (eval-module.1
45187                                                                                               ns_1
45188                                                                                               declare-name_0
45189                                                                                               #t
45190                                                                                               sm-cd_0)))
45191                                                                                          (for-loop_0
45192                                                                                           rest_0))))
45193                                                                                    (values)))))))
45194                                                                           (for-loop_0
45195                                                                            names_0)))
45196                                                                        (void))))))
45197                                                               void)))
45198                                                        (let ((declare-this-module_0
45199                                                               (|#%name|
45200                                                                declare-this-module
45201                                                                (lambda (ns_1)
45202                                                                  (begin
45203                                                                    (let ((m_0
45204                                                                           (let ((temp20_0
45205                                                                                  (1/current-module-declare-source)))
45206                                                                             (let ((temp28_0
45207                                                                                    (current-module-declare-as-predefined)))
45208                                                                               (let ((temp29_0
45209                                                                                      (append
45210                                                                                       pre-submodule-names_0
45211                                                                                       post-submodule-names_0)))
45212                                                                                 (let ((temp31_0
45213                                                                                        (lambda ()
45214                                                                                          (get-all-variables
45215                                                                                           phases-h_0))))
45216                                                                                   (let ((temp32_0
45217                                                                                          (lambda (phase-level_0
45218                                                                                                   ns_2
45219                                                                                                   insp_0)
45220                                                                                            (let ((app_0
45221                                                                                                   (hash-ref
45222                                                                                                    phases-h_0
45223                                                                                                    phase-level_0
45224                                                                                                    #f)))
45225                                                                                              (let ((app_1
45226                                                                                                     (hash-ref
45227                                                                                                      phase-to-link-modules_0
45228                                                                                                      phase-level_0
45229                                                                                                      #f)))
45230                                                                                                (module-linklet-info2.1
45231                                                                                                 app_0
45232                                                                                                 app_1
45233                                                                                                 original-self_0
45234                                                                                                 insp_0
45235                                                                                                 extra-inspector_0
45236                                                                                                 (hash-ref
45237                                                                                                  phase-to-link-extra-inspectorsss_0
45238                                                                                                  phase-level_0
45239                                                                                                  #f)))))))
45240                                                                                     (let ((temp33_0
45241                                                                                            (lambda (bulk-binding-registry_0)
45242                                                                                              (force-syntax-deserialize
45243                                                                                               syntax-literals-data-instance_0
45244                                                                                               bulk-binding-registry_0))))
45245                                                                                       (let ((temp34_0
45246                                                                                              (lambda (data-box_0
45247                                                                                                       ns_2
45248                                                                                                       phase-shift_0
45249                                                                                                       self_0
45250                                                                                                       bulk-binding-registry_0
45251                                                                                                       insp_0)
45252                                                                                                (if (unbox
45253                                                                                                     data-box_0)
45254                                                                                                  (void)
45255                                                                                                  (init-instance-data!
45256                                                                                                   data-box_0
45257                                                                                                   cache-key_0
45258                                                                                                   ns_2
45259                                                                                                   syntax-literals-linklet_0
45260                                                                                                   data-instance_0
45261                                                                                                   syntax-literals-data-instance_0
45262                                                                                                   phase-shift_0
45263                                                                                                   original-self_0
45264                                                                                                   self_0
45265                                                                                                   bulk-binding-registry_0
45266                                                                                                   insp_0
45267                                                                                                   create-root-expand-context-from-module_0)))))
45268                                                                                         (let ((temp35_0
45269                                                                                                (lambda (data-box_0
45270                                                                                                         ns_2
45271                                                                                                         phase-shift_0
45272                                                                                                         phase-level_0
45273                                                                                                         self_0
45274                                                                                                         bulk-binding-registry_0
45275                                                                                                         insp_0)
45276                                                                                                  (begin
45277                                                                                                    (if log-performance?
45278                                                                                                      (start-performance-region
45279                                                                                                       'eval
45280                                                                                                       'instantiate)
45281                                                                                                      (void))
45282                                                                                                    (begin0
45283                                                                                                      (let ((syntax-literals-instance_0
45284                                                                                                             (instance-data-syntax-literals-instance
45285                                                                                                              (unbox
45286                                                                                                               data-box_0))))
45287                                                                                                        (let ((phase-linklet_0
45288                                                                                                               (hash-ref
45289                                                                                                                phases-h_0
45290                                                                                                                phase-level_0
45291                                                                                                                #f)))
45292                                                                                                          (if phase-linklet_0
45293                                                                                                            (let ((module-uses_0
45294                                                                                                                   (hash-ref
45295                                                                                                                    phase-to-link-modules_0
45296                                                                                                                    phase-level_0)))
45297                                                                                                              (call-with-values
45298                                                                                                               (lambda ()
45299                                                                                                                 (call-with-values
45300                                                                                                                  (lambda ()
45301                                                                                                                    (begin
45302                                                                                                                      (letrec*
45303                                                                                                                       ((for-loop_0
45304                                                                                                                         (|#%name|
45305                                                                                                                          for-loop
45306                                                                                                                          (lambda (mis_0
45307                                                                                                                                   is_0
45308                                                                                                                                   lst_0)
45309                                                                                                                            (begin
45310                                                                                                                              (if (pair?
45311                                                                                                                                   lst_0)
45312                                                                                                                                (let ((mu_0
45313                                                                                                                                       (unsafe-car
45314                                                                                                                                        lst_0)))
45315                                                                                                                                  (let ((rest_0
45316                                                                                                                                         (unsafe-cdr
45317                                                                                                                                          lst_0)))
45318                                                                                                                                    (call-with-values
45319                                                                                                                                     (lambda ()
45320                                                                                                                                       (call-with-values
45321                                                                                                                                        (lambda ()
45322                                                                                                                                          (call-with-values
45323                                                                                                                                           (lambda ()
45324                                                                                                                                             (let ((temp49_0
45325                                                                                                                                                    (phase+
45326                                                                                                                                                     (phase-
45327                                                                                                                                                      phase-level_0
45328                                                                                                                                                      (module-use-phase
45329                                                                                                                                                       mu_0))
45330                                                                                                                                                     phase-shift_0)))
45331                                                                                                                                               (namespace-module-use->module+linklet-instances.1
45332                                                                                                                                                temp49_0
45333                                                                                                                                                original-self_0
45334                                                                                                                                                self_0
45335                                                                                                                                                ns_2
45336                                                                                                                                                mu_0)))
45337                                                                                                                                           (case-lambda
45338                                                                                                                                            ((mis43_0
45339                                                                                                                                              is44_0)
45340                                                                                                                                             (values
45341                                                                                                                                              (cons
45342                                                                                                                                               mis43_0
45343                                                                                                                                               mis_0)
45344                                                                                                                                              (cons
45345                                                                                                                                               is44_0
45346                                                                                                                                               is_0)))
45347                                                                                                                                            (args
45348                                                                                                                                             (raise-binding-result-arity-error
45349                                                                                                                                              2
45350                                                                                                                                              args)))))
45351                                                                                                                                        (case-lambda
45352                                                                                                                                         ((mis_1
45353                                                                                                                                           is_1)
45354                                                                                                                                          (values
45355                                                                                                                                           mis_1
45356                                                                                                                                           is_1))
45357                                                                                                                                         (args
45358                                                                                                                                          (raise-binding-result-arity-error
45359                                                                                                                                           2
45360                                                                                                                                           args)))))
45361                                                                                                                                     (case-lambda
45362                                                                                                                                      ((mis_1
45363                                                                                                                                        is_1)
45364                                                                                                                                       (for-loop_0
45365                                                                                                                                        mis_1
45366                                                                                                                                        is_1
45367                                                                                                                                        rest_0))
45368                                                                                                                                      (args
45369                                                                                                                                       (raise-binding-result-arity-error
45370                                                                                                                                        2
45371                                                                                                                                        args))))))
45372                                                                                                                                (values
45373                                                                                                                                 mis_0
45374                                                                                                                                 is_0)))))))
45375                                                                                                                       (for-loop_0
45376                                                                                                                        null
45377                                                                                                                        null
45378                                                                                                                        module-uses_0))))
45379                                                                                                                  (case-lambda
45380                                                                                                                   ((mis_0
45381                                                                                                                     is_0)
45382                                                                                                                    (let ((app_0
45383                                                                                                                           (reverse$1
45384                                                                                                                            mis_0)))
45385                                                                                                                      (values
45386                                                                                                                       app_0
45387                                                                                                                       (reverse$1
45388                                                                                                                        is_0))))
45389                                                                                                                   (args
45390                                                                                                                    (raise-binding-result-arity-error
45391                                                                                                                     2
45392                                                                                                                     args)))))
45393                                                                                                               (case-lambda
45394                                                                                                                ((import-module-instances_0
45395                                                                                                                  import-instances_0)
45396                                                                                                                 (begin
45397                                                                                                                   (let ((temp42_0
45398                                                                                                                          (hash-ref
45399                                                                                                                           phase-to-link-extra-inspectorsss_0
45400                                                                                                                           phase-level_0
45401                                                                                                                           #f)))
45402                                                                                                                     (check-require-access.1
45403                                                                                                                      2
45404                                                                                                                      phase-linklet_0
45405                                                                                                                      module-uses_0
45406                                                                                                                      import-module-instances_0
45407                                                                                                                      insp_0
45408                                                                                                                      extra-inspector_0
45409                                                                                                                      temp42_0))
45410                                                                                                                   (let ((module-body-instance-instance_0
45411                                                                                                                          (let ((temp50_0
45412                                                                                                                                 (if (begin-unsafe
45413                                                                                                                                      (eq?
45414                                                                                                                                       phase-level_0
45415                                                                                                                                       0))
45416                                                                                                                                   (|#%name|
45417                                                                                                                                    temp50
45418                                                                                                                                    (lambda (name_0
45419                                                                                                                                             val_0)
45420                                                                                                                                      (begin
45421                                                                                                                                        (error
45422                                                                                                                                         'define-syntax
45423                                                                                                                                         "should not happen at phase level 0"))))
45424                                                                                                                                   (|#%name|
45425                                                                                                                                    temp50
45426                                                                                                                                    (lambda (name_0
45427                                                                                                                                             val_0)
45428                                                                                                                                      (begin
45429                                                                                                                                        (namespace-set-transformer!
45430                                                                                                                                         ns_2
45431                                                                                                                                         (sub1
45432                                                                                                                                          phase-level_0)
45433                                                                                                                                         name_0
45434                                                                                                                                         val_0)))))))
45435                                                                                                                            (make-module-body-instance-instance.1
45436                                                                                                                             temp50_0))))
45437                                                                                                                     (let ((instantiate-body_0
45438                                                                                                                            (|#%name|
45439                                                                                                                             instantiate-body
45440                                                                                                                             (lambda ()
45441                                                                                                                               (begin
45442                                                                                                                                 (let ((app_0
45443                                                                                                                                        (list*
45444                                                                                                                                         syntax-literals-instance_0
45445                                                                                                                                         module-body-instance-instance_0
45446                                                                                                                                         import-instances_0)))
45447                                                                                                                                   (instantiate-linklet
45448                                                                                                                                    phase-linklet_0
45449                                                                                                                                    app_0
45450                                                                                                                                    (begin-unsafe
45451                                                                                                                                     (definitions-variables
45452                                                                                                                                      (namespace->definitions
45453                                                                                                                                       ns_2
45454                                                                                                                                       phase-level_0))))))))))
45455                                                                                                                       (if (begin-unsafe
45456                                                                                                                            (eq?
45457                                                                                                                             phase-level_0
45458                                                                                                                             0))
45459                                                                                                                         (if (begin-unsafe
45460                                                                                                                              (eq?
45461                                                                                                                               phase-shift_0
45462                                                                                                                               0))
45463                                                                                                                           (instantiate-body_0)
45464                                                                                                                           (with-continuation-mark*
45465                                                                                                                            push-authentic
45466                                                                                                                            parameterization-key
45467                                                                                                                            (extend-parameterization
45468                                                                                                                             (continuation-mark-set-first
45469                                                                                                                              #f
45470                                                                                                                              parameterization-key)
45471                                                                                                                             1/current-namespace
45472                                                                                                                             ns_2)
45473                                                                                                                            (instantiate-body_0)))
45474                                                                                                                         (let ((ns-1_0
45475                                                                                                                                (namespace->namespace-at-phase
45476                                                                                                                                 ns_2
45477                                                                                                                                 (phase+
45478                                                                                                                                  phase-shift_0
45479                                                                                                                                  (sub1
45480                                                                                                                                   phase-level_0)))))
45481                                                                                                                           (with-continuation-mark*
45482                                                                                                                            push-authentic
45483                                                                                                                            parameterization-key
45484                                                                                                                            (extend-parameterization
45485                                                                                                                             (continuation-mark-set-first
45486                                                                                                                              #f
45487                                                                                                                              parameterization-key)
45488                                                                                                                             1/current-namespace
45489                                                                                                                             ns_2)
45490                                                                                                                            (with-continuation-mark*
45491                                                                                                                             authentic
45492                                                                                                                             current-expand-context
45493                                                                                                                             (promise1.1
45494                                                                                                                              (lambda ()
45495                                                                                                                                (make-expand-context.1
45496                                                                                                                                 #f
45497                                                                                                                                 #f
45498                                                                                                                                 #t
45499                                                                                                                                 #f
45500                                                                                                                                 #f
45501                                                                                                                                 ns-1_0))
45502                                                                                                                              #f)
45503                                                                                                                             (with-continuation-mark*
45504                                                                                                                              authentic
45505                                                                                                                              current-module-code-inspector
45506                                                                                                                              insp_0
45507                                                                                                                              (instantiate-body_0))))))))))
45508                                                                                                                (args
45509                                                                                                                 (raise-binding-result-arity-error
45510                                                                                                                  2
45511                                                                                                                  args)))))
45512                                                                                                            (void))))
45513                                                                                                      (if log-performance?
45514                                                                                                        (end-performance-region)
45515                                                                                                        (void)))))))
45516                                                                                           (let ((temp34_1
45517                                                                                                  temp34_0)
45518                                                                                                 (temp33_1
45519                                                                                                  temp33_0)
45520                                                                                                 (temp32_1
45521                                                                                                  temp32_0)
45522                                                                                                 (temp31_1
45523                                                                                                  temp31_0)
45524                                                                                                 (temp29_1
45525                                                                                                  temp29_0)
45526                                                                                                 (temp28_1
45527                                                                                                  temp28_0)
45528                                                                                                 (temp20_1
45529                                                                                                  temp20_0))
45530                                                                                             (make-module.1
45531                                                                                              cross-phase-persistent?_0
45532                                                                                              temp33_1
45533                                                                                              temp31_1
45534                                                                                              temp35_0
45535                                                                                              language-info_0
45536                                                                                              max-phase_0
45537                                                                                              min-phase_0
45538                                                                                              #f
45539                                                                                              temp32_1
45540                                                                                              temp28_1
45541                                                                                              temp34_1
45542                                                                                              #f
45543                                                                                              provides_0
45544                                                                                              requires_0
45545                                                                                              original-self_0
45546                                                                                              temp20_1
45547                                                                                              temp29_1
45548                                                                                              supermodule-name3_0))))))))))))
45549                                                                      (let ((declare-name_0
45550                                                                             (substitute-module-declare-name
45551                                                                              default-name_0)))
45552                                                                        (begin
45553                                                                          (if with-submodules?2_0
45554                                                                            (|#%app|
45555                                                                             declare-submodules_0
45556                                                                             ns_1
45557                                                                             pre-submodule-names_0
45558                                                                             declare-name_0
45559                                                                             #t)
45560                                                                            (void))
45561                                                                          (declare-module!.1
45562                                                                           with-submodules?2_0
45563                                                                           ns_1
45564                                                                           m_0
45565                                                                           declare-name_0)
45566                                                                          (if with-submodules?2_0
45567                                                                            (|#%app|
45568                                                                             declare-submodules_0
45569                                                                             ns_1
45570                                                                             post-submodule-names_0
45571                                                                             declare-name_0
45572                                                                             #f)
45573                                                                            (void))))))))))
45574                                                          (begin
45575                                                            (if cache-key_0
45576                                                              (module-cache-set!
45577                                                               cache-key_0
45578                                                               declare-this-module_0)
45579                                                              (void))
45580                                                            (declare-this-module_0
45581                                                             ns_0))))))))))))))))))))))))
45582               (args (raise-binding-result-arity-error 4 args))))
45583             (if log-performance? (end-performance-region) (void)))))))))
45584(define finish_2479
45585  (make-struct-type-install-properties
45586   '(instance-data)
45587   2
45588   0
45589   #f
45590   null
45591   (current-inspector)
45592   #f
45593   '(0 1)
45594   #f
45595   'instance-data))
45596(define struct:instance-data
45597  (make-record-type-descriptor*
45598   'instance-data
45599   #f
45600   (|#%nongenerative-uid| instance-data)
45601   #f
45602   #f
45603   2
45604   0))
45605(define effect_2595 (finish_2479 struct:instance-data))
45606(define instance-data9.1
45607  (|#%name|
45608   instance-data
45609   (record-constructor
45610    (make-record-constructor-descriptor struct:instance-data #f #f))))
45611(define instance-data?_2770
45612  (|#%name| instance-data? (record-predicate struct:instance-data)))
45613(define instance-data?
45614  (|#%name|
45615   instance-data?
45616   (lambda (v)
45617     (if (instance-data?_2770 v)
45618       #t
45619       ($value
45620        (if (impersonator? v)
45621          (instance-data?_2770 (impersonator-val v))
45622          #f))))))
45623(define instance-data-syntax-literals-instance_2650
45624  (|#%name|
45625   instance-data-syntax-literals-instance
45626   (record-accessor struct:instance-data 0)))
45627(define instance-data-syntax-literals-instance
45628  (|#%name|
45629   instance-data-syntax-literals-instance
45630   (lambda (s)
45631     (if (instance-data?_2770 s)
45632       (instance-data-syntax-literals-instance_2650 s)
45633       ($value
45634        (impersonate-ref
45635         instance-data-syntax-literals-instance_2650
45636         struct:instance-data
45637         0
45638         s
45639         'instance-data
45640         'syntax-literals-instance))))))
45641(define instance-data-cache-key_2423
45642  (|#%name| instance-data-cache-key (record-accessor struct:instance-data 1)))
45643(define instance-data-cache-key
45644  (|#%name|
45645   instance-data-cache-key
45646   (lambda (s)
45647     (if (instance-data?_2770 s)
45648       (instance-data-cache-key_2423 s)
45649       ($value
45650        (impersonate-ref
45651         instance-data-cache-key_2423
45652         struct:instance-data
45653         1
45654         s
45655         'instance-data
45656         'cache-key))))))
45657(define init-instance-data!
45658  (lambda (data-box_0
45659           cache-key_0
45660           ns_0
45661           syntax-literals-linklet_0
45662           data-instance_0
45663           syntax-literals-data-instance_0
45664           phase-shift_0
45665           original-self_0
45666           self_0
45667           bulk-binding-registry_0
45668           insp_0
45669           create-root-expand-context-from-module_0)
45670    (begin
45671      (if (not (load-on-demand-enabled))
45672        (force-syntax-deserialize
45673         syntax-literals-data-instance_0
45674         bulk-binding-registry_0)
45675        (void))
45676      (let ((temp59_0
45677             (lambda (name_0 val_0)
45678               (error "shouldn't get here for the root-ctx linklet"))))
45679        (let ((inst_0
45680               (make-instance-instance.1
45681                bulk-binding-registry_0
45682                insp_0
45683                ns_0
45684                phase-shift_0
45685                self_0
45686                temp59_0)))
45687          (let ((syntax-literals-instance_0
45688                 (if syntax-literals-linklet_0
45689                   (instantiate-linklet
45690                    syntax-literals-linklet_0
45691                    (list
45692                     deserialize-instance
45693                     data-instance_0
45694                     syntax-literals-data-instance_0
45695                     inst_0))
45696                   empty-syntax-literals-instance)))
45697            (begin
45698              (set-box!
45699               data-box_0
45700               (instance-data9.1 syntax-literals-instance_0 cache-key_0))
45701              (let ((get-encoded-root-expand-ctx_0
45702                     (instance-variable-value
45703                      syntax-literals-instance_0
45704                      'get-encoded-root-expand-ctx)))
45705                (if (eq? get-encoded-root-expand-ctx_0 'empty)
45706                  (let ((root-ctx_0
45707                         (promise1.1
45708                          (lambda ()
45709                            (shift-to-inside-root-context
45710                             (make-root-expand-context.1
45711                              #f
45712                              null
45713                              unsafe-undefined
45714                              unsafe-undefined
45715                              self_0)))
45716                          #f)))
45717                    (begin-unsafe
45718                     (set-box! (namespace-root-expand-ctx ns_0) root-ctx_0)))
45719                  (if (procedure? get-encoded-root-expand-ctx_0)
45720                    (let ((root-ctx_0
45721                           (promise1.1
45722                            (lambda ()
45723                              (shift-to-inside-root-context
45724                               (root-expand-context-decode-for-module
45725                                (|#%app| get-encoded-root-expand-ctx_0)
45726                                self_0)))
45727                            #f)))
45728                      (begin-unsafe
45729                       (set-box! (namespace-root-expand-ctx ns_0) root-ctx_0)))
45730                    (let ((root-ctx_0
45731                           (promise1.1
45732                            (lambda ()
45733                              (shift-to-inside-root-context
45734                               (|#%app|
45735                                create-root-expand-context-from-module_0
45736                                ns_0
45737                                phase-shift_0
45738                                original-self_0
45739                                self_0)))
45740                            #f)))
45741                      (begin-unsafe
45742                       (set-box!
45743                        (namespace-root-expand-ctx ns_0)
45744                        root-ctx_0)))))))))))))
45745(define force-syntax-deserialize
45746  (lambda (syntax-literals-data-instance_0 bulk-binding-registry_0)
45747    (if (let ((or-part_0
45748               (eq?
45749                syntax-literals-data-instance_0
45750                empty-syntax-literals-data-instance)))
45751          (if or-part_0
45752            or-part_0
45753            (eq?
45754             syntax-literals-data-instance_0
45755             empty-syntax-literals-instance/empty-namespace)))
45756      (void)
45757      (let ((deserialize-syntax_0
45758             (instance-variable-value
45759              syntax-literals-data-instance_0
45760              deserialize-syntax-id)))
45761        (if deserialize-syntax_0
45762          (|#%app| deserialize-syntax_0 bulk-binding-registry_0)
45763          (void))))))
45764(define compiled-module->dh+h
45765  (lambda (c_0)
45766    (let ((ld/h_0
45767           (if (compiled-in-memory? c_0)
45768             (compiled-in-memory-linklet-directory c_0)
45769             c_0)))
45770      (let ((dh_0
45771             (if (linklet-directory?$1 ld/h_0)
45772               (linklet-directory->hash$1 ld/h_0)
45773               #f)))
45774        (let ((h_0
45775               (1/linklet-bundle->hash (if dh_0 (hash-ref dh_0 #f) ld/h_0))))
45776          (values dh_0 h_0))))))
45777(define compiled-module->h
45778  (lambda (c_0)
45779    (call-with-values
45780     (lambda () (compiled-module->dh+h c_0))
45781     (case-lambda
45782      ((dh_0 h_0) h_0)
45783      (args (raise-binding-result-arity-error 2 args))))))
45784(define compiled-module->dh+h+data-instance+declaration-instance
45785  (lambda (c_0)
45786    (call-with-values
45787     (lambda () (compiled-module->dh+h c_0))
45788     (case-lambda
45789      ((dh_0 h_0)
45790       (let ((data-instance_0
45791              (if (compiled-in-memory? c_0)
45792                (make-data-instance-from-compiled-in-memory c_0)
45793                (let ((app_0
45794                       (let ((l_0 (hash-ref h_0 'data)))
45795                         (begin-unsafe
45796                          (eval-linklet (force-compile-linklet l_0))))))
45797                  (instantiate-linklet app_0 (list deserialize-instance))))))
45798         (let ((declaration-instance_0
45799                (if (if (compiled-in-memory? c_0)
45800                      (compiled-in-memory-original-self c_0)
45801                      #f)
45802                  (make-declaration-instance-from-compiled-in-memory c_0)
45803                  (let ((app_0
45804                         (let ((l_0 (hash-ref h_0 'decl)))
45805                           (begin-unsafe
45806                            (eval-linklet (force-compile-linklet l_0))))))
45807                    (instantiate-linklet
45808                     app_0
45809                     (list deserialize-instance data-instance_0))))))
45810           (values dh_0 h_0 data-instance_0 declaration-instance_0))))
45811      (args (raise-binding-result-arity-error 2 args))))))
45812(define compiled-module->declaration-instance
45813  (lambda (c_0)
45814    (call-with-values
45815     (lambda () (compiled-module->dh+h+data-instance+declaration-instance c_0))
45816     (case-lambda
45817      ((dh_0 h_0 data-instance_0 declaration-instance_0)
45818       declaration-instance_0)
45819      (args (raise-binding-result-arity-error 4 args))))))
45820(define compiled-module->h+declaration-instance
45821  (lambda (c_0)
45822    (call-with-values
45823     (lambda () (compiled-module->dh+h+data-instance+declaration-instance c_0))
45824     (case-lambda
45825      ((dh_0 h_0 data-instance_0 declaration-instance_0)
45826       (values h_0 declaration-instance_0))
45827      (args (raise-binding-result-arity-error 4 args))))))
45828(define make-data-instance-from-compiled-in-memory
45829  (lambda (cim_0)
45830    (make-instance
45831     'data
45832     #f
45833     'constant
45834     mpi-vector-id
45835     (compiled-in-memory-mpis cim_0))))
45836(define make-declaration-instance-from-compiled-in-memory
45837  (lambda (cim_0)
45838    (let ((app_0 (compiled-in-memory-original-self cim_0)))
45839      (let ((app_1 (compiled-in-memory-requires cim_0)))
45840        (let ((app_2 (compiled-in-memory-provides cim_0)))
45841          (make-instance
45842           'decl
45843           #f
45844           'constant
45845           'self-mpi
45846           app_0
45847           'requires
45848           app_1
45849           'provides
45850           app_2
45851           'phase-to-link-modules
45852           (compiled-in-memory-phase-to-link-module-uses cim_0)))))))
45853(define make-syntax-literal-data-instance-from-compiled-in-memory
45854  (lambda (cim_0)
45855    (make-instance
45856     'syntax-literal-data
45857     #f
45858     #f
45859     deserialize-syntax-id
45860     void
45861     deserialized-syntax-vector-id
45862     (compiled-in-memory-syntax-literals cim_0))))
45863(define empty-syntax-literals-instance/empty-namespace
45864  (make-instance
45865   'empty-stx/empty-ns
45866   #f
45867   'constant
45868   get-syntax-literal!-id
45869   (lambda (pos_0) #f)
45870   'get-encoded-root-expand-ctx
45871   'empty))
45872(define get-all-variables
45873  (lambda (phases-h_0)
45874    (begin
45875      (letrec*
45876       ((for-loop_0
45877         (|#%name|
45878          for-loop
45879          (lambda (table_0 i_0)
45880            (begin
45881              (if i_0
45882                (call-with-values
45883                 (lambda () (hash-iterate-key+value phases-h_0 i_0))
45884                 (case-lambda
45885                  ((phase_0 linklet_0)
45886                   (let ((table_1
45887                          (let ((table_1
45888                                 (call-with-values
45889                                  (lambda ()
45890                                    (values
45891                                     phase_0
45892                                     (linklet-export-variables linklet_0)))
45893                                  (case-lambda
45894                                   ((key_0 val_0)
45895                                    (hash-set table_0 key_0 val_0))
45896                                   (args
45897                                    (raise-binding-result-arity-error
45898                                     2
45899                                     args))))))
45900                            (values table_1))))
45901                     (for-loop_0 table_1 (hash-iterate-next phases-h_0 i_0))))
45902                  (args (raise-binding-result-arity-error 2 args))))
45903                table_0))))))
45904       (for-loop_0 hash2725 (hash-iterate-first phases-h_0))))))
45905(define eval-linklet*
45906  (lambda (l_0) (eval-linklet (force-compile-linklet l_0))))
45907(define check-provides-verbosity
45908  (lambda (who_0 verbosity_0)
45909    (if (let ((or-part_0 (not verbosity_0)))
45910          (if or-part_0 or-part_0 (eq? verbosity_0 'defined-names)))
45911      (void)
45912      (raise-argument-error who_0 "(or/c #f 'defined-names)" verbosity_0))))
45913(define provides->api-provides
45914  (lambda (provides_0 self_0 verbosity_0)
45915    (let ((defined-names?_0 (eq? verbosity_0 'defined-names)))
45916      (let ((extract_0
45917             (|#%name|
45918              extract
45919              (lambda (ok?_0)
45920                (begin
45921                  (let ((result-l_0
45922                         (reverse$1
45923                          (begin
45924                            (letrec*
45925                             ((for-loop_0
45926                               (|#%name|
45927                                for-loop
45928                                (lambda (fold-var_0 i_0)
45929                                  (begin
45930                                    (if i_0
45931                                      (call-with-values
45932                                       (lambda ()
45933                                         (hash-iterate-key+value
45934                                          provides_0
45935                                          i_0))
45936                                       (case-lambda
45937                                        ((phase_0 at-phase_0)
45938                                         (let ((fold-var_1
45939                                                (let ((id*_0
45940                                                       (reverse$1
45941                                                        (begin
45942                                                          (letrec*
45943                                                           ((for-loop_1
45944                                                             (|#%name|
45945                                                              for-loop
45946                                                              (lambda (fold-var_1
45947                                                                       i_1)
45948                                                                (begin
45949                                                                  (if i_1
45950                                                                    (call-with-values
45951                                                                     (lambda ()
45952                                                                       (hash-iterate-key+value
45953                                                                        at-phase_0
45954                                                                        i_1))
45955                                                                     (case-lambda
45956                                                                      ((sym_0
45957                                                                        b/p_0)
45958                                                                       (let ((fold-var_2
45959                                                                              (if (|#%app|
45960                                                                                   ok?_0
45961                                                                                   b/p_0)
45962                                                                                (let ((fold-var_2
45963                                                                                       (cons
45964                                                                                        (let ((b_0
45965                                                                                               (provided-as-binding
45966                                                                                                b/p_0)))
45967                                                                                          (let ((app_0
45968                                                                                                 (if (eq?
45969                                                                                                      self_0
45970                                                                                                      (module-binding-module
45971                                                                                                       b_0))
45972                                                                                                   null
45973                                                                                                   (reverse$1
45974                                                                                                    (let ((lst_0
45975                                                                                                           (cons
45976                                                                                                            b_0
45977                                                                                                            (module-binding-extra-nominal-bindings
45978                                                                                                             b_0))))
45979                                                                                                      (begin
45980                                                                                                        (letrec*
45981                                                                                                         ((for-loop_2
45982                                                                                                           (|#%name|
45983                                                                                                            for-loop
45984                                                                                                            (lambda (fold-var_2
45985                                                                                                                     lst_1)
45986                                                                                                              (begin
45987                                                                                                                (if (pair?
45988                                                                                                                     lst_1)
45989                                                                                                                  (let ((b_1
45990                                                                                                                         (unsafe-car
45991                                                                                                                          lst_1)))
45992                                                                                                                    (let ((rest_0
45993                                                                                                                           (unsafe-cdr
45994                                                                                                                            lst_1)))
45995                                                                                                                      (let ((fold-var_3
45996                                                                                                                             (let ((fold-var_3
45997                                                                                                                                    (cons
45998                                                                                                                                     (if (if (eqv?
45999                                                                                                                                              (module-binding-nominal-phase+space
46000                                                                                                                                               b_1)
46001                                                                                                                                              phase_0)
46002                                                                                                                                           (eq?
46003                                                                                                                                            (module-binding-nominal-sym
46004                                                                                                                                             b_1)
46005                                                                                                                                            sym_0)
46006                                                                                                                                           #f)
46007                                                                                                                                       (module-binding-nominal-module
46008                                                                                                                                        b_1)
46009                                                                                                                                       (let ((app_0
46010                                                                                                                                              (module-binding-nominal-module
46011                                                                                                                                               b_1)))
46012                                                                                                                                         (let ((app_1
46013                                                                                                                                                (module-binding-phase
46014                                                                                                                                                 b_1)))
46015                                                                                                                                           (let ((app_2
46016                                                                                                                                                  (module-binding-nominal-sym
46017                                                                                                                                                   b_1)))
46018                                                                                                                                             (list
46019                                                                                                                                              app_0
46020                                                                                                                                              app_1
46021                                                                                                                                              app_2
46022                                                                                                                                              (module-binding-nominal-phase+space
46023                                                                                                                                               b_1))))))
46024                                                                                                                                     fold-var_2)))
46025                                                                                                                               (values
46026                                                                                                                                fold-var_3))))
46027                                                                                                                        (for-loop_2
46028                                                                                                                         fold-var_3
46029                                                                                                                         rest_0))))
46030                                                                                                                  fold-var_2))))))
46031                                                                                                         (for-loop_2
46032                                                                                                          null
46033                                                                                                          lst_0))))))))
46034                                                                                            (list*
46035                                                                                             sym_0
46036                                                                                             app_0
46037                                                                                             (if defined-names?_0
46038                                                                                               (list
46039                                                                                                (module-binding-sym
46040                                                                                                 b_0))
46041                                                                                               null))))
46042                                                                                        fold-var_1)))
46043                                                                                  (values
46044                                                                                   fold-var_2))
46045                                                                                fold-var_1)))
46046                                                                         (for-loop_1
46047                                                                          fold-var_2
46048                                                                          (hash-iterate-next
46049                                                                           at-phase_0
46050                                                                           i_1))))
46051                                                                      (args
46052                                                                       (raise-binding-result-arity-error
46053                                                                        2
46054                                                                        args))))
46055                                                                    fold-var_1))))))
46056                                                           (for-loop_1
46057                                                            null
46058                                                            (hash-iterate-first
46059                                                             at-phase_0)))))))
46060                                                  (begin
46061                                                    #t
46062                                                    (letrec*
46063                                                     ((for-loop_1
46064                                                       (|#%name|
46065                                                        for-loop
46066                                                        (lambda (fold-var_1)
46067                                                          (begin
46068                                                            (let ((fold-var_2
46069                                                                   (if (null?
46070                                                                        id*_0)
46071                                                                     fold-var_1
46072                                                                     (let ((fold-var_2
46073                                                                            (cons
46074                                                                             (cons
46075                                                                              phase_0
46076                                                                              (sort.1
46077                                                                               #f
46078                                                                               car
46079                                                                               id*_0
46080                                                                               symbol<?))
46081                                                                             fold-var_1)))
46082                                                                       (values
46083                                                                        fold-var_2)))))
46084                                                              fold-var_2))))))
46085                                                     (for-loop_1
46086                                                      fold-var_0))))))
46087                                           (for-loop_0
46088                                            fold-var_1
46089                                            (hash-iterate-next
46090                                             provides_0
46091                                             i_0))))
46092                                        (args
46093                                         (raise-binding-result-arity-error
46094                                          2
46095                                          args))))
46096                                      fold-var_0))))))
46097                             (for-loop_0
46098                              null
46099                              (hash-iterate-first provides_0)))))))
46100                    (sort.1 #f car result-l_0 phase+space<?)))))))
46101        (let ((app_0
46102               (extract_0
46103                (lambda (b/p_0) (not (provided-as-transformer? b/p_0))))))
46104          (values app_0 (extract_0 provided-as-transformer?)))))))
46105(define variables->api-nonprovides
46106  (lambda (provides_0 all-vars_0)
46107    (let ((result-l_0
46108           (reverse$1
46109            (begin
46110              (letrec*
46111               ((for-loop_0
46112                 (|#%name|
46113                  for-loop
46114                  (lambda (fold-var_0 i_0)
46115                    (begin
46116                      (if i_0
46117                        (call-with-values
46118                         (lambda () (hash-iterate-key+value all-vars_0 i_0))
46119                         (case-lambda
46120                          ((phase_0 vars_0)
46121                           (let ((fold-var_1
46122                                  (let ((id*_0
46123                                         (let ((syms_0
46124                                                (hash-ref
46125                                                 provides_0
46126                                                 phase_0
46127                                                 hash2610)))
46128                                           (reverse$1
46129                                            (begin
46130                                              (letrec*
46131                                               ((for-loop_1
46132                                                 (|#%name|
46133                                                  for-loop
46134                                                  (lambda (fold-var_1 lst_0)
46135                                                    (begin
46136                                                      (if (pair? lst_0)
46137                                                        (let ((var-sym_0
46138                                                               (unsafe-car
46139                                                                lst_0)))
46140                                                          (let ((rest_0
46141                                                                 (unsafe-cdr
46142                                                                  lst_0)))
46143                                                            (let ((fold-var_2
46144                                                                   (if (hash-ref
46145                                                                        syms_0
46146                                                                        var-sym_0
46147                                                                        #f)
46148                                                                     fold-var_1
46149                                                                     (let ((fold-var_2
46150                                                                            (cons
46151                                                                             var-sym_0
46152                                                                             fold-var_1)))
46153                                                                       (values
46154                                                                        fold-var_2)))))
46155                                                              (for-loop_1
46156                                                               fold-var_2
46157                                                               rest_0))))
46158                                                        fold-var_1))))))
46159                                               (for-loop_1 null vars_0)))))))
46160                                    (begin
46161                                      #t
46162                                      (letrec*
46163                                       ((for-loop_1
46164                                         (|#%name|
46165                                          for-loop
46166                                          (lambda (fold-var_1)
46167                                            (begin
46168                                              (let ((fold-var_2
46169                                                     (if (null? id*_0)
46170                                                       fold-var_1
46171                                                       (let ((fold-var_2
46172                                                              (cons
46173                                                               (cons
46174                                                                phase_0
46175                                                                (sort.1
46176                                                                 #f
46177                                                                 #f
46178                                                                 id*_0
46179                                                                 symbol<?))
46180                                                               fold-var_1)))
46181                                                         (values
46182                                                          fold-var_2)))))
46183                                                fold-var_2))))))
46184                                       (for-loop_1 fold-var_0))))))
46185                             (for-loop_0
46186                              fold-var_1
46187                              (hash-iterate-next all-vars_0 i_0))))
46188                          (args (raise-binding-result-arity-error 2 args))))
46189                        fold-var_0))))))
46190               (for-loop_0 null (hash-iterate-first all-vars_0)))))))
46191      (sort.1 #f car result-l_0 phase+space<?))))
46192(define 1/compiled-expression?
46193  (|#%name|
46194   compiled-expression?
46195   (lambda (c_0)
46196     (begin
46197       (let ((or-part_0 (compiled-in-memory? c_0)))
46198         (if or-part_0
46199           or-part_0
46200           (let ((or-part_1 (linklet-directory?$1 c_0)))
46201             (if or-part_1 or-part_1 (1/linklet-bundle? c_0)))))))))
46202(define 1/compiled-module-expression?
46203  (|#%name|
46204   compiled-module-expression?
46205   (lambda (c_0)
46206     (begin
46207       (let ((ld_0 (compiled->linklet-directory-or-bundle c_0)))
46208         (let ((or-part_0
46209                (if (linklet-directory?$1 ld_0)
46210                  (if (let ((b_0
46211                             (hash-ref
46212                              (linklet-directory->hash$1 ld_0)
46213                              #f
46214                              #f)))
46215                        (if b_0
46216                          (hash-ref (1/linklet-bundle->hash b_0) 'decl #f)
46217                          #f))
46218                    #t
46219                    #f)
46220                  #f)))
46221           (if or-part_0
46222             or-part_0
46223             (if (1/linklet-bundle? ld_0)
46224               (if (hash-ref (1/linklet-bundle->hash ld_0) 'decl #f) #t #f)
46225               #f))))))))
46226(define compiled->linklet-directory-or-bundle
46227  (lambda (c_0)
46228    (if (compiled-in-memory? c_0)
46229      (compiled-in-memory-linklet-directory c_0)
46230      c_0)))
46231(define normalize-to-linklet-directory
46232  (lambda (c_0)
46233    (if (linklet-directory?$1 (compiled->linklet-directory-or-bundle c_0))
46234      c_0
46235      (if (1/linklet-bundle? c_0)
46236        (1/hash->linklet-directory (hasheq #f c_0))
46237        (if (compiled-in-memory? c_0)
46238          (let ((linklet-directory1_0
46239                 (normalize-to-linklet-directory
46240                  (compiled-in-memory-linklet-directory c_0))))
46241            (let ((app_0 (compiled-in-memory-original-self c_0)))
46242              (let ((app_1 (compiled-in-memory-requires c_0)))
46243                (let ((app_2 (compiled-in-memory-provides c_0)))
46244                  (let ((app_3
46245                         (compiled-in-memory-phase-to-link-module-uses c_0)))
46246                    (let ((app_4
46247                           (compiled-in-memory-compile-time-inspector c_0)))
46248                      (let ((app_5
46249                             (compiled-in-memory-phase-to-link-extra-inspectorsss
46250                              c_0)))
46251                        (let ((app_6 (compiled-in-memory-mpis c_0)))
46252                          (let ((app_7
46253                                 (compiled-in-memory-syntax-literals c_0)))
46254                            (let ((app_8
46255                                   (compiled-in-memory-pre-compiled-in-memorys
46256                                    c_0)))
46257                              (let ((app_9
46258                                     (compiled-in-memory-post-compiled-in-memorys
46259                                      c_0)))
46260                                (let ((app_10
46261                                       (compiled-in-memory-namespace-scopes
46262                                        c_0)))
46263                                  (compiled-in-memory1.1
46264                                   linklet-directory1_0
46265                                   app_0
46266                                   app_1
46267                                   app_2
46268                                   app_3
46269                                   app_4
46270                                   app_5
46271                                   app_6
46272                                   app_7
46273                                   app_8
46274                                   app_9
46275                                   app_10
46276                                   (compiled-in-memory-purely-functional?
46277                                    c_0))))))))))))))
46278          (raise-argument-error 'struct-copy "compiled-in-memory?" c_0))))))
46279(define 1/module-compiled-name
46280  (|#%name|
46281   module-compiled-name
46282   (case-lambda
46283    ((c_0)
46284     (begin
46285       (begin
46286         (if (1/compiled-module-expression? c_0)
46287           (void)
46288           (raise-argument-error
46289            'module-compiled-name
46290            "compiled-module-expression?"
46291            c_0))
46292         (module-compiled-current-name c_0))))
46293    ((c_0 name_0)
46294     (begin
46295       (if (1/compiled-module-expression? c_0)
46296         (void)
46297         (raise-argument-error
46298          'module-compiled-name
46299          "compiled-module-expression?"
46300          c_0))
46301       (begin
46302         (if (let ((or-part_0 (symbol? name_0)))
46303               (if or-part_0
46304                 or-part_0
46305                 (if (pair? name_0)
46306                   (if (list? name_0) (andmap_2344 symbol? name_0) #f)
46307                   #f)))
46308           (void)
46309           (raise-argument-error
46310            'module-compiled-name
46311            "(or/c symbol? (cons/c symbol? (non-empty-listof symbol?)))"
46312            name_0))
46313         (call-with-values
46314          (lambda ()
46315            (if (symbol? name_0)
46316              (values name_0 null)
46317              (let ((r_0 (reverse$1 name_0)))
46318                (let ((app_0 (car r_0)))
46319                  (values app_0 (reverse$1 (cdr r_0)))))))
46320          (case-lambda
46321           ((i-name_0 prefix_0) (change-module-name c_0 i-name_0 prefix_0))
46322           (args (raise-binding-result-arity-error 2 args))))))))))
46323(define module-compiled-current-name
46324  (lambda (c_0)
46325    (let ((ld_0 (compiled->linklet-directory-or-bundle c_0)))
46326      (let ((b_0
46327             (if (1/linklet-bundle? ld_0)
46328               ld_0
46329               (hash-ref (linklet-directory->hash$1 ld_0) #f))))
46330        (hash-ref (1/linklet-bundle->hash b_0) 'name)))))
46331(define module-compiled-immediate-name
46332  (lambda (c_0)
46333    (let ((n_0 (module-compiled-current-name c_0)))
46334      (if (pair? n_0) (car (reverse$1 n_0)) n_0))))
46335(define change-module-name
46336  (lambda (c_0 name_0 prefix_0)
46337    (let ((full-name_0
46338           (if (null? prefix_0) name_0 (append prefix_0 (list name_0)))))
46339      (let ((next-prefix_0 (if (null? prefix_0) (list name_0) full-name_0)))
46340        (let ((recur_0
46341               (|#%name|
46342                recur
46343                (lambda (sub-c_0 name_1)
46344                  (begin
46345                    (if (let ((app_0 (module-compiled-current-name sub-c_0)))
46346                          (equal? app_0 (append next-prefix_0 (list name_1))))
46347                      sub-c_0
46348                      (change-module-name sub-c_0 name_1 next-prefix_0)))))))
46349          (if (compiled-in-memory? c_0)
46350            (let ((change-submodule-name_0
46351                   (|#%name|
46352                    change-submodule-name
46353                    (lambda (sub-c_0)
46354                      (begin
46355                        (recur_0
46356                         sub-c_0
46357                         (module-compiled-immediate-name sub-c_0)))))))
46358              (let ((pre-compiled-in-memorys_0
46359                     (map_1346
46360                      change-submodule-name_0
46361                      (compiled-in-memory-pre-compiled-in-memorys c_0))))
46362                (let ((post-compiled-in-memorys_0
46363                       (map_1346
46364                        change-submodule-name_0
46365                        (compiled-in-memory-post-compiled-in-memorys c_0))))
46366                  (if (compiled-in-memory? c_0)
46367                    (let ((linklet-directory9_0
46368                           (let ((temp10_0
46369                                  (update-one-name
46370                                   (let ((ld_0
46371                                          (compiled->linklet-directory-or-bundle
46372                                           c_0)))
46373                                     (if (1/linklet-bundle? ld_0)
46374                                       ld_0
46375                                       (hash-ref
46376                                        (linklet-directory->hash$1 ld_0)
46377                                        #f)))
46378                                   full-name_0)))
46379                             (let ((temp11_0 (symbol? full-name_0)))
46380                               (let ((temp12_0
46381                                      (append
46382                                       pre-compiled-in-memorys_0
46383                                       post-compiled-in-memorys_0)))
46384                                 (let ((temp11_1 temp11_0) (temp10_1 temp10_0))
46385                                   (rebuild-linklet-directory.1
46386                                    temp11_1
46387                                    temp10_1
46388                                    temp12_0)))))))
46389                      (let ((app_0 (compiled-in-memory-original-self c_0)))
46390                        (let ((app_1 (compiled-in-memory-requires c_0)))
46391                          (let ((app_2 (compiled-in-memory-provides c_0)))
46392                            (let ((app_3
46393                                   (compiled-in-memory-phase-to-link-module-uses
46394                                    c_0)))
46395                              (let ((app_4
46396                                     (compiled-in-memory-compile-time-inspector
46397                                      c_0)))
46398                                (let ((app_5
46399                                       (compiled-in-memory-phase-to-link-extra-inspectorsss
46400                                        c_0)))
46401                                  (let ((app_6 (compiled-in-memory-mpis c_0)))
46402                                    (let ((app_7
46403                                           (compiled-in-memory-syntax-literals
46404                                            c_0)))
46405                                      (let ((app_8
46406                                             (compiled-in-memory-namespace-scopes
46407                                              c_0)))
46408                                        (compiled-in-memory1.1
46409                                         linklet-directory9_0
46410                                         app_0
46411                                         app_1
46412                                         app_2
46413                                         app_3
46414                                         app_4
46415                                         app_5
46416                                         app_6
46417                                         app_7
46418                                         pre-compiled-in-memorys_0
46419                                         post-compiled-in-memorys_0
46420                                         app_8
46421                                         (compiled-in-memory-purely-functional?
46422                                          c_0))))))))))))
46423                    (raise-argument-error
46424                     'struct-copy
46425                     "compiled-in-memory?"
46426                     c_0)))))
46427            (if (linklet-directory?$1 c_0)
46428              (1/hash->linklet-directory
46429               (let ((ht_0 (linklet-directory->hash$1 c_0)))
46430                 (begin
46431                   (letrec*
46432                    ((for-loop_0
46433                      (|#%name|
46434                       for-loop
46435                       (lambda (table_0 i_0)
46436                         (begin
46437                           (if i_0
46438                             (call-with-values
46439                              (lambda () (hash-iterate-key+value ht_0 i_0))
46440                              (case-lambda
46441                               ((key_0 val_0)
46442                                (let ((table_1
46443                                       (let ((table_1
46444                                              (call-with-values
46445                                               (lambda ()
46446                                                 (values
46447                                                  key_0
46448                                                  (if (not key_0)
46449                                                    (update-one-name
46450                                                     val_0
46451                                                     full-name_0)
46452                                                    (recur_0 val_0 key_0))))
46453                                               (case-lambda
46454                                                ((key_1 val_1)
46455                                                 (hash-set
46456                                                  table_0
46457                                                  key_1
46458                                                  val_1))
46459                                                (args
46460                                                 (raise-binding-result-arity-error
46461                                                  2
46462                                                  args))))))
46463                                         (values table_1))))
46464                                  (for-loop_0
46465                                   table_1
46466                                   (hash-iterate-next ht_0 i_0))))
46467                               (args
46468                                (raise-binding-result-arity-error 2 args))))
46469                             table_0))))))
46470                    (for-loop_0 hash2610 (hash-iterate-first ht_0))))))
46471              (update-one-name c_0 full-name_0))))))))
46472(define update-one-name
46473  (lambda (lb_0 name_0)
46474    (1/hash->linklet-bundle
46475     (hash-set (1/linklet-bundle->hash lb_0) 'name name_0))))
46476(define rebuild-linklet-directory.1
46477  (|#%name|
46478   rebuild-linklet-directory
46479   (lambda (bundle-ok?1_0 main3_0 submods4_0)
46480     (begin
46481       (if (if (null? submods4_0) bundle-ok?1_0 #f)
46482         main3_0
46483         (1/hash->linklet-directory
46484          (hash-set
46485           (begin
46486             (letrec*
46487              ((for-loop_0
46488                (|#%name|
46489                 for-loop
46490                 (lambda (ht_0 lst_0)
46491                   (begin
46492                     (if (pair? lst_0)
46493                       (let ((submod_0 (unsafe-car lst_0)))
46494                         (let ((rest_0 (unsafe-cdr lst_0)))
46495                           (let ((ht_1
46496                                  (let ((ht_1
46497                                         (let ((name_0
46498                                                (module-compiled-immediate-name
46499                                                 submod_0)))
46500                                           (if (hash-ref ht_0 name_0 #f)
46501                                             (raise-arguments-error
46502                                              'module-compiled-submodules
46503                                              "change would result in duplicate submodule name"
46504                                              "name"
46505                                              name_0)
46506                                             (hash-set
46507                                              ht_0
46508                                              name_0
46509                                              (compiled->linklet-directory-or-bundle
46510                                               submod_0))))))
46511                                    (values ht_1))))
46512                             (for-loop_0 ht_1 rest_0))))
46513                       ht_0))))))
46514              (for-loop_0 hash2610 submods4_0)))
46515           #f
46516           main3_0)))))))
46517(define 1/module-compiled-submodules
46518  (|#%name|
46519   module-compiled-submodules
46520   (case-lambda
46521    ((c_0 non-star?_0)
46522     (begin
46523       (begin
46524         (if (1/compiled-module-expression? c_0)
46525           (void)
46526           (raise-argument-error
46527            'module-compiled-submodules
46528            "compiled-module-expression?"
46529            c_0))
46530         (if (compiled-in-memory? c_0)
46531           (if non-star?_0
46532             (compiled-in-memory-pre-compiled-in-memorys c_0)
46533             (compiled-in-memory-post-compiled-in-memorys c_0))
46534           (if (linklet-directory?$1 c_0)
46535             (let ((ht_0 (linklet-directory->hash$1 c_0)))
46536               (let ((bh_0 (1/linklet-bundle->hash (hash-ref ht_0 #f))))
46537                 (let ((names_0
46538                        (hash-ref bh_0 (if non-star?_0 'pre 'post) null)))
46539                   (reverse$1
46540                    (begin
46541                      (letrec*
46542                       ((for-loop_0
46543                         (|#%name|
46544                          for-loop
46545                          (lambda (fold-var_0 lst_0)
46546                            (begin
46547                              (if (pair? lst_0)
46548                                (let ((name_0 (unsafe-car lst_0)))
46549                                  (let ((rest_0 (unsafe-cdr lst_0)))
46550                                    (let ((fold-var_1
46551                                           (let ((fold-var_1
46552                                                  (cons
46553                                                   (hash-ref ht_0 name_0)
46554                                                   fold-var_0)))
46555                                             (values fold-var_1))))
46556                                      (for-loop_0 fold-var_1 rest_0))))
46557                                fold-var_0))))))
46558                       (for-loop_0 null names_0)))))))
46559             null)))))
46560    ((c_0 non-star?_0 submods_0)
46561     (begin
46562       (if (1/compiled-module-expression? c_0)
46563         (void)
46564         (raise-argument-error
46565          'module-compiled-submodules
46566          "compiled-module-expression?"
46567          c_0))
46568       (if (if (list? submods_0)
46569             (andmap_2344 1/compiled-module-expression? submods_0)
46570             #f)
46571         (void)
46572         (raise-argument-error
46573          'module-compiled-submodules
46574          "(listof compiled-module-expression?)"
46575          submods_0))
46576       (if (if (null? submods_0)
46577             (let ((or-part_0
46578                    (1/linklet-bundle?
46579                     (compiled->linklet-directory-or-bundle c_0))))
46580               (if or-part_0
46581                 or-part_0
46582                 (if (compiled-in-memory? c_0)
46583                   (null?
46584                    (if non-star?_0
46585                      (compiled-in-memory-pre-compiled-in-memorys c_0)
46586                      (compiled-in-memory-post-compiled-in-memorys c_0)))
46587                   #f)))
46588             #f)
46589         c_0
46590         (if (if (compiled-in-memory? c_0)
46591               (andmap_2344 compiled-in-memory? submods_0)
46592               #f)
46593           (let ((pre-compiled-in-memorys_0
46594                  (if non-star?_0
46595                    submods_0
46596                    (compiled-in-memory-pre-compiled-in-memorys c_0))))
46597             (let ((post-compiled-in-memorys_0
46598                    (if non-star?_0
46599                      (compiled-in-memory-post-compiled-in-memorys c_0)
46600                      submods_0)))
46601               (let ((n-c_0 (normalize-to-linklet-directory c_0)))
46602                 (fixup-submodule-names
46603                  (if (compiled-in-memory? n-c_0)
46604                    (let ((linklet-directory4_0
46605                           (let ((temp5_0
46606                                  (reset-submodule-names
46607                                   (hash-ref
46608                                    (linklet-directory->hash$1
46609                                     (compiled->linklet-directory-or-bundle
46610                                      n-c_0))
46611                                    #f)
46612                                   non-star?_0
46613                                   submods_0)))
46614                             (let ((temp6_0
46615                                    (symbol?
46616                                     (module-compiled-current-name c_0))))
46617                               (let ((temp7_0
46618                                      (append
46619                                       pre-compiled-in-memorys_0
46620                                       post-compiled-in-memorys_0)))
46621                                 (let ((temp6_1 temp6_0) (temp5_1 temp5_0))
46622                                   (rebuild-linklet-directory.1
46623                                    temp6_1
46624                                    temp5_1
46625                                    temp7_0)))))))
46626                      (let ((app_0 (compiled-in-memory-original-self n-c_0)))
46627                        (let ((app_1 (compiled-in-memory-requires n-c_0)))
46628                          (let ((app_2 (compiled-in-memory-provides n-c_0)))
46629                            (let ((app_3
46630                                   (compiled-in-memory-phase-to-link-module-uses
46631                                    n-c_0)))
46632                              (let ((app_4
46633                                     (compiled-in-memory-compile-time-inspector
46634                                      n-c_0)))
46635                                (let ((app_5
46636                                       (compiled-in-memory-phase-to-link-extra-inspectorsss
46637                                        n-c_0)))
46638                                  (let ((app_6
46639                                         (compiled-in-memory-mpis n-c_0)))
46640                                    (let ((app_7
46641                                           (compiled-in-memory-syntax-literals
46642                                            n-c_0)))
46643                                      (let ((app_8
46644                                             (compiled-in-memory-namespace-scopes
46645                                              n-c_0)))
46646                                        (compiled-in-memory1.1
46647                                         linklet-directory4_0
46648                                         app_0
46649                                         app_1
46650                                         app_2
46651                                         app_3
46652                                         app_4
46653                                         app_5
46654                                         app_6
46655                                         app_7
46656                                         pre-compiled-in-memorys_0
46657                                         post-compiled-in-memorys_0
46658                                         app_8
46659                                         (compiled-in-memory-purely-functional?
46660                                          n-c_0))))))))))))
46661                    (raise-argument-error
46662                     'struct-copy
46663                     "compiled-in-memory?"
46664                     n-c_0))))))
46665           (let ((n-c_0 (normalize-to-linklet-directory c_0)))
46666             (fixup-submodule-names
46667              (let ((temp8_0
46668                     (reset-submodule-names
46669                      (hash-ref
46670                       (linklet-directory->hash$1
46671                        (compiled->linklet-directory-or-bundle n-c_0))
46672                       #f)
46673                      non-star?_0
46674                      submods_0)))
46675                (let ((temp9_0
46676                       (map_1346
46677                        compiled->linklet-directory-or-bundle
46678                        (let ((app_0
46679                               (if non-star?_0
46680                                 submods_0
46681                                 (1/module-compiled-submodules c_0 #t))))
46682                          (append
46683                           app_0
46684                           (if non-star?_0
46685                             (1/module-compiled-submodules c_0 #f)
46686                             submods_0))))))
46687                  (let ((temp8_1 temp8_0))
46688                    (rebuild-linklet-directory.1
46689                     #f
46690                     temp8_1
46691                     temp9_0)))))))))))))
46692(define fixup-submodule-names
46693  (lambda (c_0) (1/module-compiled-name c_0 (1/module-compiled-name c_0))))
46694(define reset-submodule-names
46695  (lambda (b_0 pre?_0 submods_0)
46696    (1/hash->linklet-bundle
46697     (let ((app_0 (1/linklet-bundle->hash b_0)))
46698       (let ((app_1 (if pre?_0 'pre 'post)))
46699         (hash-set
46700          app_0
46701          app_1
46702          (let ((temp10_0 (map_1346 module-compiled-immediate-name submods_0)))
46703            (sort.1 #f #f temp10_0 symbol<?))))))))
46704(define 1/module-compiled-language-info
46705  (|#%name|
46706   module-compiled-language-info
46707   (lambda (c_0)
46708     (begin
46709       (begin
46710         (if (1/compiled-module-expression? c_0)
46711           (void)
46712           (raise-argument-error
46713            'module-compiled-language-info
46714            "compiled-module-expression?"
46715            c_0))
46716         (let ((h_0 (compiled-module->h c_0)))
46717           (hash-ref h_0 'language-info #f)))))))
46718(define 1/module-compiled-imports
46719  (|#%name|
46720   module-compiled-imports
46721   (lambda (c_0)
46722     (begin
46723       (begin
46724         (if (1/compiled-module-expression? c_0)
46725           (void)
46726           (raise-argument-error
46727            'module-compiled-imports
46728            "compiled-module-expression?"
46729            c_0))
46730         (let ((inst_0 (compiled-module->declaration-instance c_0)))
46731           (instance-variable-value inst_0 'requires)))))))
46732(define 1/module-compiled-exports
46733  (let ((module-compiled-exports_0
46734         (|#%name|
46735          module-compiled-exports
46736          (lambda (c2_0 verbosity1_0)
46737            (begin
46738              (begin
46739                (if (1/compiled-module-expression? c2_0)
46740                  (void)
46741                  (raise-argument-error
46742                   'module-compiled-exports
46743                   "compiled-module-expression?"
46744                   c2_0))
46745                (begin
46746                  (check-provides-verbosity
46747                   'module-compiled-exports
46748                   verbosity1_0)
46749                  (let ((inst_0 (compiled-module->declaration-instance c2_0)))
46750                    (let ((app_0 (instance-variable-value inst_0 'provides)))
46751                      (provides->api-provides
46752                       app_0
46753                       (instance-variable-value inst_0 'self-mpi)
46754                       verbosity1_0))))))))))
46755    (|#%name|
46756     module-compiled-exports
46757     (case-lambda
46758      ((c_0) (begin (module-compiled-exports_0 c_0 #f)))
46759      ((c_0 verbosity1_0) (module-compiled-exports_0 c_0 verbosity1_0))))))
46760(define 1/module-compiled-indirect-exports
46761  (|#%name|
46762   module-compiled-indirect-exports
46763   (lambda (c_0)
46764     (begin
46765       (begin
46766         (if (1/compiled-module-expression? c_0)
46767           (void)
46768           (raise-argument-error
46769            'module-compiled-indirect-exports
46770            "compiled-module-expression?"
46771            c_0))
46772         (call-with-values
46773          (lambda () (compiled-module->h+declaration-instance c_0))
46774          (case-lambda
46775           ((h_0 inst_0)
46776            (let ((min-phase_0 (hash-ref h_0 'min-phase 0)))
46777              (let ((max-phase_0 (hash-ref h_0 'max-phase 0)))
46778                (let ((app_0 (instance-variable-value inst_0 'provides)))
46779                  (variables->api-nonprovides
46780                   app_0
46781                   (let ((end_0 (add1 max-phase_0)))
46782                     (begin
46783                       (letrec*
46784                        ((for-loop_0
46785                          (|#%name|
46786                           for-loop
46787                           (lambda (table_0 pos_0)
46788                             (begin
46789                               (if (< pos_0 end_0)
46790                                 (let ((table_1
46791                                        (let ((table_1
46792                                               (call-with-values
46793                                                (lambda ()
46794                                                  (let ((linklet_0
46795                                                         (hash-ref
46796                                                          h_0
46797                                                          pos_0
46798                                                          #f)))
46799                                                    (values
46800                                                     pos_0
46801                                                     (if linklet_0
46802                                                       (linklet-export-variables
46803                                                        linklet_0)
46804                                                       null))))
46805                                                (case-lambda
46806                                                 ((key_0 val_0)
46807                                                  (hash-set
46808                                                   table_0
46809                                                   key_0
46810                                                   val_0))
46811                                                 (args
46812                                                  (raise-binding-result-arity-error
46813                                                   2
46814                                                   args))))))
46815                                          (values table_1))))
46816                                   (for-loop_0 table_1 (+ pos_0 1)))
46817                                 table_0))))))
46818                        (for-loop_0 hash2725 min-phase_0)))))))))
46819           (args (raise-binding-result-arity-error 2 args)))))))))
46820(define 1/module-compiled-cross-phase-persistent?
46821  (|#%name|
46822   module-compiled-cross-phase-persistent?
46823   (lambda (c_0)
46824     (begin
46825       (begin
46826         (if (1/compiled-module-expression? c_0)
46827           (void)
46828           (raise-argument-error
46829            'module-compiled-cross-phase-persistent?
46830            "compiled-module-expression?"
46831            c_0))
46832         (let ((h_0 (compiled-module->h c_0)))
46833           (hash-ref h_0 'cross-phase-persistent? #f)))))))
46834(define compile-module.1
46835  (|#%name|
46836   compile-module
46837   (lambda (force-linklet-directory?1_0
46838            modules-being-compiled4_0
46839            need-compiled-submodule-rename?5_0
46840            serializable?2_0
46841            to-correlated-linklet?3_0
46842            p11_0
46843            cctx12_0)
46844     (begin
46845       (let ((modules-being-compiled_0
46846              (if (eq? modules-being-compiled4_0 unsafe-undefined)
46847                (make-hasheq)
46848                modules-being-compiled4_0)))
46849         (let ((parent-full-name_0
46850                (compile-context-full-module-name cctx12_0)))
46851           (let ((full-module-name_0
46852                  (let ((name_0 (syntax-e$1 (parsed-module-name-id p11_0))))
46853                    (let ((parent-full-name_1 parent-full-name_0))
46854                      (if parent-full-name_1
46855                        (let ((app_0
46856                               (if (list? parent-full-name_1)
46857                                 parent-full-name_1
46858                                 (list parent-full-name_1))))
46859                          (append app_0 (list name_0)))
46860                        name_0)))))
46861             (let ((compiled-submodules_0
46862                    (parsed-module-compiled-submodules p11_0)))
46863               (let ((get-submodules_0
46864                      (|#%name|
46865                       get-submodules
46866                       (lambda (star?_0)
46867                         (begin
46868                           (reverse$1
46869                            (begin
46870                              (letrec*
46871                               ((for-loop_0
46872                                 (|#%name|
46873                                  for-loop
46874                                  (lambda (fold-var_0 i_0)
46875                                    (begin
46876                                      (if i_0
46877                                        (call-with-values
46878                                         (lambda ()
46879                                           (hash-iterate-key+value
46880                                            compiled-submodules_0
46881                                            i_0))
46882                                         (case-lambda
46883                                          ((name_0 star?+compiled_0)
46884                                           (let ((fold-var_1
46885                                                  (if (eq?
46886                                                       star?_0
46887                                                       (car star?+compiled_0))
46888                                                    (let ((fold-var_1
46889                                                           (cons
46890                                                            (cons
46891                                                             name_0
46892                                                             (if (if need-compiled-submodule-rename?5_0
46893                                                                   (not
46894                                                                    (parsed-module-compiled-module
46895                                                                     p11_0))
46896                                                                   #f)
46897                                                               (update-submodule-names
46898                                                                (cdr
46899                                                                 star?+compiled_0)
46900                                                                name_0
46901                                                                full-module-name_0)
46902                                                               (cdr
46903                                                                star?+compiled_0)))
46904                                                            fold-var_0)))
46905                                                      (values fold-var_1))
46906                                                    fold-var_0)))
46907                                             (for-loop_0
46908                                              fold-var_1
46909                                              (hash-iterate-next
46910                                               compiled-submodules_0
46911                                               i_0))))
46912                                          (args
46913                                           (raise-binding-result-arity-error
46914                                            2
46915                                            args))))
46916                                        fold-var_0))))))
46917                               (for-loop_0
46918                                null
46919                                (hash-iterate-first
46920                                 compiled-submodules_0))))))))))
46921                 (let ((pre-submodules_0
46922                        (let ((temp33_0 (get-submodules_0 #f)))
46923                          (sort.1 #f car temp33_0 symbol<?))))
46924                   (let ((post-submodules_0
46925                          (let ((temp36_0 (get-submodules_0 #t)))
46926                            (sort.1 #f car temp36_0 symbol<?))))
46927                     (let ((c1_0 (parsed-module-compiled-module p11_0)))
46928                       (if c1_0
46929                         (call-with-values
46930                          (lambda ()
46931                            (if (symbol? full-module-name_0)
46932                              (values full-module-name_0 null)
46933                              (let ((r_0 (reverse$1 full-module-name_0)))
46934                                (let ((app_0 (car r_0)))
46935                                  (values app_0 (reverse$1 (cdr r_0)))))))
46936                          (case-lambda
46937                           ((name_0 prefix_0)
46938                            (let ((m_0
46939                                   (change-module-name c1_0 name_0 prefix_0)))
46940                              (let ((app_0
46941                                     (1/module-compiled-submodules
46942                                      m_0
46943                                      #t
46944                                      (map_1346 cdr pre-submodules_0))))
46945                                (1/module-compiled-submodules
46946                                 app_0
46947                                 #f
46948                                 (map_1346 cdr post-submodules_0)))))
46949                           (args (raise-binding-result-arity-error 2 args))))
46950                         (compile-module-from-parsed.1
46951                          force-linklet-directory?1_0
46952                          full-module-name_0
46953                          modules-being-compiled_0
46954                          need-compiled-submodule-rename?5_0
46955                          post-submodules_0
46956                          pre-submodules_0
46957                          serializable?2_0
46958                          to-correlated-linklet?3_0
46959                          p11_0
46960                          cctx12_0))))))))))))))
46961(define compile-module-from-parsed.1
46962  (|#%name|
46963   compile-module-from-parsed
46964   (lambda (force-linklet-directory?15_0
46965            full-module-name14_0
46966            modules-being-compiled18_0
46967            need-compiled-submodule-rename?21_0
46968            post-submodules20_0
46969            pre-submodules19_0
46970            serializable?16_0
46971            to-correlated-linklet?17_0
46972            p30_0
46973            cctx31_0)
46974     (begin
46975       (begin
46976         (if log-performance?
46977           (start-performance-region 'compile 'module)
46978           (void))
46979         (begin0
46980           (let ((enclosing-self_0 (compile-context-module-self cctx31_0)))
46981             (let ((self_0 (parsed-module-self p30_0)))
46982               (let ((requires_0 (parsed-module-requires p30_0)))
46983                 (let ((provides_0 (parsed-module-provides p30_0)))
46984                   (let ((encoded-root-expand-ctx-box_0
46985                          (box (parsed-module-encoded-root-ctx p30_0))))
46986                     (let ((body-context-simple?_0
46987                            (parsed-module-root-ctx-simple? p30_0)))
46988                       (let ((language-info_0
46989                              (filter-language-info
46990                               (syntax-property$1
46991                                (parsed-s p30_0)
46992                                'module-language))))
46993                         (let ((bodys_0 (parsed-module-body p30_0)))
46994                           (let ((empty-result-for-module->namespace?_0 #f))
46995                             (let ((mpis_0 (make-module-path-index-table)))
46996                               (let ((body-cctx_0
46997                                      (if (compile-context? cctx31_0)
46998                                        (compile-context1.1
46999                                         (compile-context-namespace cctx31_0)
47000                                         0
47001                                         self_0
47002                                         self_0
47003                                         full-module-name14_0
47004                                         #t
47005                                         (compile-context-header cctx31_0))
47006                                        (raise-argument-error
47007                                         'struct-copy
47008                                         "compile-context?"
47009                                         cctx31_0))))
47010                                 (let ((cross-phase-persistent?_0 #f))
47011                                   (let ((unsafe?-box_0 (box #f)))
47012                                     (let ((side-effects_0 (make-hasheqv)))
47013                                       (let ((check-side-effects!_0
47014                                              (|#%name|
47015                                               check-side-effects!
47016                                               (lambda (e_0
47017                                                        expected-results_0
47018                                                        phase_0
47019                                                        required-reference?_0)
47020                                                 (begin
47021                                                   (if (hash-ref
47022                                                        side-effects_0
47023                                                        phase_0
47024                                                        #f)
47025                                                     (void)
47026                                                     (if (any-side-effects?.1
47027                                                          hash2610
47028                                                          hash2610
47029                                                          required-reference?_0
47030                                                          e_0
47031                                                          expected-results_0)
47032                                                       (hash-set!
47033                                                        side-effects_0
47034                                                        phase_0
47035                                                        #t)
47036                                                       (void))))))))
47037                                         (begin
47038                                           (if (if need-compiled-submodule-rename?21_0
47039                                                 modules-being-compiled18_0
47040                                                 #f)
47041                                             (begin
47042                                               (if (null? post-submodules20_0)
47043                                                 (void)
47044                                                 (error
47045                                                  "internal error: have post submodules, but not already compiled"))
47046                                               (register-compiled-submodules
47047                                                modules-being-compiled18_0
47048                                                pre-submodules19_0
47049                                                self_0))
47050                                             (void))
47051                                           (call-with-values
47052                                            (lambda ()
47053                                              (let ((temp60_0
47054                                                     (list
47055                                                      (list
47056                                                       get-syntax-literal!-id)
47057                                                      (list
47058                                                       set-transformer!-id))))
47059                                                (let ((temp61_0
47060                                                       (list
47061                                                        empty-syntax-literals-instance
47062                                                        empty-module-body-instance)))
47063                                                  (let ((temp62_0 '((void))))
47064                                                    (let ((temp63_0 '(0)))
47065                                                      (let ((temp67_0
47066                                                             (lambda (body_0
47067                                                                      cctx_0)
47068                                                               (if (|parsed-#%declare?|
47069                                                                    body_0)
47070                                                                 (call-with-values
47071                                                                  (lambda ()
47072                                                                    (let ((s_0
47073                                                                           (parsed-s
47074                                                                            body_0)))
47075                                                                      (call-with-values
47076                                                                       (lambda ()
47077                                                                         (let ((s_1
47078                                                                                (if (syntax?$1
47079                                                                                     s_0)
47080                                                                                  (syntax-e$1
47081                                                                                   s_0)
47082                                                                                  s_0)))
47083                                                                           (if (pair?
47084                                                                                s_1)
47085                                                                             (let ((_0
47086                                                                                    (let ((s_2
47087                                                                                           (car
47088                                                                                            s_1)))
47089                                                                                      s_2)))
47090                                                                               (let ((kw76_0
47091                                                                                      (let ((s_2
47092                                                                                             (cdr
47093                                                                                              s_1)))
47094                                                                                        (let ((s_3
47095                                                                                               (if (syntax?$1
47096                                                                                                    s_2)
47097                                                                                                 (syntax-e$1
47098                                                                                                  s_2)
47099                                                                                                 s_2)))
47100                                                                                          (let ((flat-s_0
47101                                                                                                 (to-syntax-list.1
47102                                                                                                  s_3)))
47103                                                                                            (if (not
47104                                                                                                 flat-s_0)
47105                                                                                              (raise-syntax-error$1
47106                                                                                               #f
47107                                                                                               "bad syntax"
47108                                                                                               s_0)
47109                                                                                              flat-s_0))))))
47110                                                                                 (let ((_1
47111                                                                                        _0))
47112                                                                                   (values
47113                                                                                    _1
47114                                                                                    kw76_0))))
47115                                                                             (raise-syntax-error$1
47116                                                                              #f
47117                                                                              "bad syntax"
47118                                                                              s_0))))
47119                                                                       (case-lambda
47120                                                                        ((_0
47121                                                                          kw74_0)
47122                                                                         (values
47123                                                                          #t
47124                                                                          _0
47125                                                                          kw74_0))
47126                                                                        (args
47127                                                                         (raise-binding-result-arity-error
47128                                                                          2
47129                                                                          args))))))
47130                                                                  (case-lambda
47131                                                                   ((ok?_0
47132                                                                     _0
47133                                                                     kw74_0)
47134                                                                    (begin
47135                                                                      (begin
47136                                                                        (letrec*
47137                                                                         ((for-loop_0
47138                                                                           (|#%name|
47139                                                                            for-loop
47140                                                                            (lambda (lst_0)
47141                                                                              (begin
47142                                                                                (if (pair?
47143                                                                                     lst_0)
47144                                                                                  (let ((kw_0
47145                                                                                         (unsafe-car
47146                                                                                          lst_0)))
47147                                                                                    (let ((rest_0
47148                                                                                           (unsafe-cdr
47149                                                                                            lst_0)))
47150                                                                                      (begin
47151                                                                                        (begin
47152                                                                                          (if (eq?
47153                                                                                               (syntax-e$1
47154                                                                                                kw_0)
47155                                                                                               kw2208)
47156                                                                                            (set! cross-phase-persistent?_0
47157                                                                                              #t)
47158                                                                                            (void))
47159                                                                                          (if (eq?
47160                                                                                               (syntax-e$1
47161                                                                                                kw_0)
47162                                                                                               kw2910)
47163                                                                                            (begin
47164                                                                                              (set! empty-result-for-module->namespace?_0
47165                                                                                                #t)
47166                                                                                              (set-box!
47167                                                                                               encoded-root-expand-ctx-box_0
47168                                                                                               #f))
47169                                                                                            (void))
47170                                                                                          (if (eq?
47171                                                                                               (syntax-e$1
47172                                                                                                kw_0)
47173                                                                                               kw2838)
47174                                                                                            (set-box!
47175                                                                                             unsafe?-box_0
47176                                                                                             #t)
47177                                                                                            (void)))
47178                                                                                        (for-loop_0
47179                                                                                         rest_0))))
47180                                                                                  (values)))))))
47181                                                                         (for-loop_0
47182                                                                          kw74_0)))
47183                                                                      (void)
47184                                                                      #f))
47185                                                                   (args
47186                                                                    (raise-binding-result-arity-error
47187                                                                     3
47188                                                                     args))))
47189                                                                 #f))))
47190                                                        (let ((temp68_0
47191                                                               (lambda (mod-name_0
47192                                                                        phase_0)
47193                                                                 (let ((ht_0
47194                                                                        (if modules-being-compiled18_0
47195                                                                          (hash-ref
47196                                                                           modules-being-compiled18_0
47197                                                                           mod-name_0
47198                                                                           #f)
47199                                                                          #f)))
47200                                                                   (if ht_0
47201                                                                     (hash-ref
47202                                                                      ht_0
47203                                                                      phase_0
47204                                                                      #f)
47205                                                                     #f)))))
47206                                                          (compile-forms.1
47207                                                           temp61_0
47208                                                           temp60_0
47209                                                           temp62_0
47210                                                           check-side-effects!_0
47211                                                           void
47212                                                           encoded-root-expand-ctx-box_0
47213                                                           temp63_0
47214                                                           temp68_0
47215                                                           #t
47216                                                           #t
47217                                                           temp67_0
47218                                                           body-context-simple?_0
47219                                                           serializable?16_0
47220                                                           to-correlated-linklet?17_0
47221                                                           unsafe?-box_0
47222                                                           bodys_0
47223                                                           body-cctx_0
47224                                                           mpis_0))))))))
47225                                            (case-lambda
47226                                             ((body-linklets_0
47227                                               min-phase_0
47228                                               max-phase_0
47229                                               phase-to-link-module-uses_0
47230                                               phase-to-link-module-uses-expr_0
47231                                               phase-to-link-extra-inspectorsss_0
47232                                               syntax-literals_0
47233                                               root-ctx-pos_0)
47234                                              (begin
47235                                                (if modules-being-compiled18_0
47236                                                  (let ((app_0
47237                                                         (1/module-path-index-resolve
47238                                                          self_0)))
47239                                                    (hash-set!
47240                                                     modules-being-compiled18_0
47241                                                     app_0
47242                                                     (begin
47243                                                       (letrec*
47244                                                        ((for-loop_0
47245                                                          (|#%name|
47246                                                           for-loop
47247                                                           (lambda (table_0
47248                                                                    i_0)
47249                                                             (begin
47250                                                               (if i_0
47251                                                                 (call-with-values
47252                                                                  (lambda ()
47253                                                                    (hash-iterate-key+value
47254                                                                     body-linklets_0
47255                                                                     i_0))
47256                                                                  (case-lambda
47257                                                                   ((phase_0
47258                                                                     linklet_0)
47259                                                                    (let ((table_1
47260                                                                           (let ((table_1
47261                                                                                  (call-with-values
47262                                                                                   (lambda ()
47263                                                                                     (values
47264                                                                                      phase_0
47265                                                                                      (let ((app_1
47266                                                                                             (hash-ref
47267                                                                                              phase-to-link-module-uses_0
47268                                                                                              phase_0
47269                                                                                              #f)))
47270                                                                                        (module-linklet-info2.1
47271                                                                                         linklet_0
47272                                                                                         app_1
47273                                                                                         self_0
47274                                                                                         #f
47275                                                                                         #f
47276                                                                                         (if phase-to-link-extra-inspectorsss_0
47277                                                                                           (hash-ref
47278                                                                                            phase-to-link-extra-inspectorsss_0
47279                                                                                            phase_0
47280                                                                                            #f)
47281                                                                                           #f)))))
47282                                                                                   (case-lambda
47283                                                                                    ((key_0
47284                                                                                      val_0)
47285                                                                                     (hash-set
47286                                                                                      table_0
47287                                                                                      key_0
47288                                                                                      val_0))
47289                                                                                    (args
47290                                                                                     (raise-binding-result-arity-error
47291                                                                                      2
47292                                                                                      args))))))
47293                                                                             (values
47294                                                                              table_1))))
47295                                                                      (for-loop_0
47296                                                                       table_1
47297                                                                       (hash-iterate-next
47298                                                                        body-linklets_0
47299                                                                        i_0))))
47300                                                                   (args
47301                                                                    (raise-binding-result-arity-error
47302                                                                     2
47303                                                                     args))))
47304                                                                 table_0))))))
47305                                                        (for-loop_0
47306                                                         hash2610
47307                                                         (hash-iterate-first
47308                                                          body-linklets_0))))))
47309                                                  (void))
47310                                                (let ((declaration-linklet_0
47311                                                       (if serializable?16_0
47312                                                         (let ((s_0
47313                                                                (generate-module-declaration-linklet
47314                                                                 mpis_0
47315                                                                 self_0
47316                                                                 requires_0
47317                                                                 provides_0
47318                                                                 phase-to-link-module-uses-expr_0)))
47319                                                           (if to-correlated-linklet?17_0
47320                                                             (begin-unsafe
47321                                                              (correlated-linklet1.1
47322                                                               s_0
47323                                                               'decl
47324                                                               #f))
47325                                                             (begin
47326                                                               (if log-performance?
47327                                                                 (start-performance-region
47328                                                                  'compile
47329                                                                  'module
47330                                                                  'linklet)
47331                                                                 (void))
47332                                                               (begin0
47333                                                                 (compile-linklet
47334                                                                  s_0
47335                                                                  'decl)
47336                                                                 (if log-performance?
47337                                                                   (end-performance-region)
47338                                                                   (void))))))
47339                                                         #f)))
47340                                                  (let ((syntax-literals-linklet_0
47341                                                         (if (not
47342                                                              (begin-unsafe
47343                                                               (null?
47344                                                                (syntax-literals-stxes
47345                                                                 syntax-literals_0))))
47346                                                           (let ((s_0
47347                                                                  (let ((app_0
47348                                                                         (let ((app_0
47349                                                                                (list
47350                                                                                 mpi-vector-id)))
47351                                                                           (list
47352                                                                            deserialize-imports
47353                                                                            app_0
47354                                                                            (list*
47355                                                                             deserialized-syntax-vector-id
47356                                                                             (if serializable?16_0
47357                                                                               (list
47358                                                                                deserialize-syntax-id)
47359                                                                               '()))
47360                                                                            instance-imports))))
47361                                                                    (let ((app_1
47362                                                                           (list*
47363                                                                            get-syntax-literal!-id
47364                                                                            '(get-encoded-root-expand-ctx))))
47365                                                                      (list*
47366                                                                       'linklet
47367                                                                       app_0
47368                                                                       app_1
47369                                                                       (let ((app_2
47370                                                                              (let ((temp80_0
47371                                                                                     (not
47372                                                                                      serializable?16_0)))
47373                                                                                (generate-lazy-syntax-literals!.1
47374                                                                                 temp80_0
47375                                                                                 syntax-literals_0
47376                                                                                 mpis_0
47377                                                                                 self_0))))
47378                                                                         (qq-append
47379                                                                          app_2
47380                                                                          (list
47381                                                                           (list
47382                                                                            'define-values
47383                                                                            '(get-encoded-root-expand-ctx)
47384                                                                            (if root-ctx-pos_0
47385                                                                              (list
47386                                                                               'lambda
47387                                                                               '()
47388                                                                               (begin-unsafe
47389                                                                                (list
47390                                                                                 get-syntax-literal!-id
47391                                                                                 root-ctx-pos_0)))
47392                                                                              (if empty-result-for-module->namespace?_0
47393                                                                                ''empty
47394                                                                                ''#f)))))))))))
47395                                                             (if to-correlated-linklet?17_0
47396                                                               (begin-unsafe
47397                                                                (correlated-linklet1.1
47398                                                                 s_0
47399                                                                 'syntax-literals
47400                                                                 #f))
47401                                                               (begin
47402                                                                 (if log-performance?
47403                                                                   (start-performance-region
47404                                                                    'compile
47405                                                                    'module
47406                                                                    'linklet)
47407                                                                   (void))
47408                                                                 (begin0
47409                                                                   (call-with-values
47410                                                                    (lambda ()
47411                                                                      (let ((app_0
47412                                                                             (vector
47413                                                                              deserialize-instance
47414                                                                              empty-top-syntax-literal-instance
47415                                                                              empty-syntax-literals-data-instance
47416                                                                              empty-instance-instance)))
47417                                                                        (compile-linklet
47418                                                                         s_0
47419                                                                         'syntax-literals
47420                                                                         app_0
47421                                                                         (lambda (inst_0)
47422                                                                           (values
47423                                                                            inst_0
47424                                                                            #f))
47425                                                                         (if serializable?16_0
47426                                                                           '(serializable)
47427                                                                           '()))))
47428                                                                    (case-lambda
47429                                                                     ((linklet_0
47430                                                                       new-keys_0)
47431                                                                      linklet_0)
47432                                                                     (args
47433                                                                      (raise-binding-result-arity-error
47434                                                                       2
47435                                                                       args))))
47436                                                                   (if log-performance?
47437                                                                     (end-performance-region)
47438                                                                     (void))))))
47439                                                           #f)))
47440                                                    (let ((syntax-literals-data-linklet_0
47441                                                           (if serializable?16_0
47442                                                             (if (not
47443                                                                  (begin-unsafe
47444                                                                   (null?
47445                                                                    (syntax-literals-stxes
47446                                                                     syntax-literals_0))))
47447                                                               (let ((app_0
47448                                                                      (list
47449                                                                       deserialize-imports
47450                                                                       (list
47451                                                                        mpi-vector-id))))
47452                                                                 (let ((s_0
47453                                                                        (let ((app_1
47454                                                                               (list
47455                                                                                deserialized-syntax-vector-id
47456                                                                                deserialize-syntax-id)))
47457                                                                          (let ((app_2
47458                                                                                 (let ((app_2
47459                                                                                        (list
47460                                                                                         deserialized-syntax-vector-id)))
47461                                                                                   (list
47462                                                                                    'define-values
47463                                                                                    app_2
47464                                                                                    (list*
47465                                                                                     'make-vector
47466                                                                                     (syntax-literals-count
47467                                                                                      syntax-literals_0)
47468                                                                                     '(#f))))))
47469                                                                            (list*
47470                                                                             'linklet
47471                                                                             app_0
47472                                                                             app_1
47473                                                                             app_2
47474                                                                             (begin
47475                                                                               (if log-performance?
47476                                                                                 (start-performance-region
47477                                                                                  'compile
47478                                                                                  'module
47479                                                                                  'serialize)
47480                                                                                 (void))
47481                                                                               (begin0
47482                                                                                 (generate-lazy-syntax-literals-data!
47483                                                                                  syntax-literals_0
47484                                                                                  mpis_0)
47485                                                                                 (if log-performance?
47486                                                                                   (end-performance-region)
47487                                                                                   (void)))))))))
47488                                                                   (if to-correlated-linklet?17_0
47489                                                                     (begin-unsafe
47490                                                                      (correlated-linklet1.1
47491                                                                       s_0
47492                                                                       'syntax-literals-data
47493                                                                       #f))
47494                                                                     (begin
47495                                                                       (if log-performance?
47496                                                                         (start-performance-region
47497                                                                          'compile
47498                                                                          'module
47499                                                                          'linklet)
47500                                                                         (void))
47501                                                                       (begin0
47502                                                                         (compile-linklet
47503                                                                          s_0
47504                                                                          'syntax-literals-data
47505                                                                          #f
47506                                                                          #f
47507                                                                          '(serializable))
47508                                                                         (if log-performance?
47509                                                                           (end-performance-region)
47510                                                                           (void)))))))
47511                                                               #f)
47512                                                             #f)))
47513                                                      (let ((data-linklet_0
47514                                                             (if serializable?16_0
47515                                                               (let ((s_0
47516                                                                      (generate-module-data-linklet
47517                                                                       mpis_0)))
47518                                                                 (if to-correlated-linklet?17_0
47519                                                                   (begin-unsafe
47520                                                                    (correlated-linklet1.1
47521                                                                     s_0
47522                                                                     'data
47523                                                                     #f))
47524                                                                   (begin
47525                                                                     (if log-performance?
47526                                                                       (start-performance-region
47527                                                                        'compile
47528                                                                        'module
47529                                                                        'linklet)
47530                                                                       (void))
47531                                                                     (begin0
47532                                                                       (compile-linklet
47533                                                                        s_0
47534                                                                        'data)
47535                                                                       (if log-performance?
47536                                                                         (end-performance-region)
47537                                                                         (void))))))
47538                                                               #f)))
47539                                                        (let ((bundle_0
47540                                                               (let ((bundle_0
47541                                                                      (hash-set
47542                                                                       body-linklets_0
47543                                                                       'name
47544                                                                       full-module-name14_0)))
47545                                                                 (let ((bundle_1
47546                                                                        (hash-set
47547                                                                         bundle_0
47548                                                                         'decl
47549                                                                         (if declaration-linklet_0
47550                                                                           declaration-linklet_0
47551                                                                           'in-memory))))
47552                                                                   (let ((bundle_2
47553                                                                          (if data-linklet_0
47554                                                                            (hash-set
47555                                                                             bundle_1
47556                                                                             'data
47557                                                                             data-linklet_0)
47558                                                                            bundle_1)))
47559                                                                     (let ((bundle_3
47560                                                                            (if syntax-literals-linklet_0
47561                                                                              (hash-set
47562                                                                               bundle_2
47563                                                                               'stx
47564                                                                               syntax-literals-linklet_0)
47565                                                                              bundle_2)))
47566                                                                       (let ((bundle_4
47567                                                                              (if syntax-literals-data-linklet_0
47568                                                                                (hash-set
47569                                                                                 bundle_3
47570                                                                                 'stx-data
47571                                                                                 syntax-literals-data-linklet_0)
47572                                                                                bundle_3)))
47573                                                                         (let ((bundle_5
47574                                                                                (if (null?
47575                                                                                     pre-submodules19_0)
47576                                                                                  bundle_4
47577                                                                                  (hash-set
47578                                                                                   bundle_4
47579                                                                                   'pre
47580                                                                                   (map_1346
47581                                                                                    car
47582                                                                                    pre-submodules19_0)))))
47583                                                                           (let ((bundle_6
47584                                                                                  (if (null?
47585                                                                                       post-submodules20_0)
47586                                                                                    bundle_5
47587                                                                                    (hash-set
47588                                                                                     bundle_5
47589                                                                                     'post
47590                                                                                     (map_1346
47591                                                                                      car
47592                                                                                      post-submodules20_0)))))
47593                                                                             (let ((bundle_7
47594                                                                                    (if cross-phase-persistent?_0
47595                                                                                      (hash-set
47596                                                                                       bundle_6
47597                                                                                       'cross-phase-persistent?
47598                                                                                       #t)
47599                                                                                      bundle_6)))
47600                                                                               (let ((bundle_8
47601                                                                                      (if language-info_0
47602                                                                                        (hash-set
47603                                                                                         bundle_7
47604                                                                                         'language-info
47605                                                                                         language-info_0)
47606                                                                                        bundle_7)))
47607                                                                                 (let ((bundle_9
47608                                                                                        (if (zero?
47609                                                                                             min-phase_0)
47610                                                                                          bundle_8
47611                                                                                          (hash-set
47612                                                                                           bundle_8
47613                                                                                           'min-phase
47614                                                                                           min-phase_0))))
47615                                                                                   (let ((bundle_10
47616                                                                                          (if (zero?
47617                                                                                               max-phase_0)
47618                                                                                            bundle_9
47619                                                                                            (hash-set
47620                                                                                             bundle_9
47621                                                                                             'max-phase
47622                                                                                             max-phase_0))))
47623                                                                                     (let ((bundle_11
47624                                                                                            (if (hash-count
47625                                                                                                 side-effects_0)
47626                                                                                              (hash-set
47627                                                                                               bundle_10
47628                                                                                               'side-effects
47629                                                                                               (let ((temp81_0
47630                                                                                                      (hash-keys
47631                                                                                                       side-effects_0)))
47632                                                                                                 (sort.1
47633                                                                                                  #f
47634                                                                                                  #f
47635                                                                                                  temp81_0
47636                                                                                                  <)))
47637                                                                                              bundle_10)))
47638                                                                                       (let ((bundle_12
47639                                                                                              (if empty-result-for-module->namespace?_0
47640                                                                                                (hash-set
47641                                                                                                 bundle_11
47642                                                                                                 'module->namespace
47643                                                                                                 'empty)
47644                                                                                                bundle_11)))
47645                                                                                         (let ((bundle_13
47646                                                                                                (if (unbox
47647                                                                                                     unsafe?-box_0)
47648                                                                                                  (hash-set
47649                                                                                                   bundle_12
47650                                                                                                   'unsafe?
47651                                                                                                   #t)
47652                                                                                                  bundle_12)))
47653                                                                                           (1/hash->linklet-bundle
47654                                                                                            bundle_13)))))))))))))))))
47655                                                          (let ((ld_0
47656                                                                 (if (if (null?
47657                                                                          pre-submodules19_0)
47658                                                                       (if (null?
47659                                                                            post-submodules20_0)
47660                                                                         (not
47661                                                                          force-linklet-directory?15_0)
47662                                                                         #f)
47663                                                                       #f)
47664                                                                   bundle_0
47665                                                                   (let ((ht_0
47666                                                                          (let ((lst_0
47667                                                                                 (append
47668                                                                                  pre-submodules19_0
47669                                                                                  post-submodules20_0)))
47670                                                                            (begin
47671                                                                              (letrec*
47672                                                                               ((for-loop_0
47673                                                                                 (|#%name|
47674                                                                                  for-loop
47675                                                                                  (lambda (ht_0
47676                                                                                           lst_1)
47677                                                                                    (begin
47678                                                                                      (if (pair?
47679                                                                                           lst_1)
47680                                                                                        (let ((sm_0
47681                                                                                               (unsafe-car
47682                                                                                                lst_1)))
47683                                                                                          (let ((rest_0
47684                                                                                                 (unsafe-cdr
47685                                                                                                  lst_1)))
47686                                                                                            (let ((ht_1
47687                                                                                                   (let ((ht_1
47688                                                                                                          (let ((app_0
47689                                                                                                                 (car
47690                                                                                                                  sm_0)))
47691                                                                                                            (hash-set
47692                                                                                                             ht_0
47693                                                                                                             app_0
47694                                                                                                             (compiled-in-memory-linklet-directory
47695                                                                                                              (cdr
47696                                                                                                               sm_0))))))
47697                                                                                                     (values
47698                                                                                                      ht_1))))
47699                                                                                              (for-loop_0
47700                                                                                               ht_1
47701                                                                                               rest_0))))
47702                                                                                        ht_0))))))
47703                                                                               (for-loop_0
47704                                                                                (hasheq
47705                                                                                 #f
47706                                                                                 bundle_0)
47707                                                                                lst_0))))))
47708                                                                     (1/hash->linklet-directory
47709                                                                      ht_0)))))
47710                                                            (let ((app_0
47711                                                                   (current-code-inspector)))
47712                                                              (let ((app_1
47713                                                                     (mpis-as-vector
47714                                                                      mpis_0)))
47715                                                                (let ((app_2
47716                                                                       (syntax-literals-as-vector
47717                                                                        syntax-literals_0)))
47718                                                                  (let ((app_3
47719                                                                         (map_1346
47720                                                                          cdr
47721                                                                          pre-submodules19_0)))
47722                                                                    (compiled-in-memory1.1
47723                                                                     ld_0
47724                                                                     self_0
47725                                                                     requires_0
47726                                                                     provides_0
47727                                                                     phase-to-link-module-uses_0
47728                                                                     app_0
47729                                                                     phase-to-link-extra-inspectorsss_0
47730                                                                     app_1
47731                                                                     app_2
47732                                                                     app_3
47733                                                                     (map_1346
47734                                                                      cdr
47735                                                                      post-submodules20_0)
47736                                                                     #f
47737                                                                     #f)))))))))))))
47738                                             (args
47739                                              (raise-binding-result-arity-error
47740                                               8
47741                                               args))))))))))))))))))))
47742           (if log-performance? (end-performance-region) (void))))))))
47743(define update-submodule-names
47744  (lambda (cim_0 name_0 full-module-name_0)
47745    (change-module-name
47746     cim_0
47747     name_0
47748     (if (symbol? full-module-name_0)
47749       (list full-module-name_0)
47750       (reverse$1 (cdr (reverse$1 full-module-name_0)))))))
47751(define register-compiled-submodules
47752  (lambda (modules-being-compiled_0 pre-submodules_0 self_0)
47753    (begin
47754      (begin
47755        (letrec*
47756         ((for-loop_0
47757           (|#%name|
47758            for-loop
47759            (lambda (lst_0)
47760              (begin
47761                (if (pair? lst_0)
47762                  (let ((s_0 (unsafe-car lst_0)))
47763                    (let ((rest_0 (unsafe-cdr lst_0)))
47764                      (begin
47765                        (let ((name_0 (car s_0)))
47766                          (let ((cim_0 (cdr s_0)))
47767                            (let ((phase-to-link-module-uses_0
47768                                   (compiled-in-memory-phase-to-link-module-uses
47769                                    cim_0)))
47770                              (let ((ld_0
47771                                     (compiled-in-memory-linklet-directory
47772                                      cim_0)))
47773                                (let ((sm-self_0
47774                                       (1/module-path-index-join
47775                                        (list 'submod "." name_0)
47776                                        self_0)))
47777                                  (let ((phase-to-extra-inspectorsss_0
47778                                         (compiled-in-memory-phase-to-link-extra-inspectorsss
47779                                          cim_0)))
47780                                    (let ((app_0
47781                                           (1/module-path-index-resolve
47782                                            sm-self_0)))
47783                                      (hash-set!
47784                                       modules-being-compiled_0
47785                                       app_0
47786                                       (let ((ht_0
47787                                              (1/linklet-bundle->hash
47788                                               (if (linklet-directory?$1 ld_0)
47789                                                 (hash-ref
47790                                                  (linklet-directory->hash$1
47791                                                   ld_0)
47792                                                  #f)
47793                                                 ld_0))))
47794                                         (begin
47795                                           (letrec*
47796                                            ((for-loop_1
47797                                              (|#%name|
47798                                               for-loop
47799                                               (lambda (table_0 i_0)
47800                                                 (begin
47801                                                   (if i_0
47802                                                     (call-with-values
47803                                                      (lambda ()
47804                                                        (hash-iterate-key+value
47805                                                         ht_0
47806                                                         i_0))
47807                                                      (case-lambda
47808                                                       ((phase_0 linklet_0)
47809                                                        (let ((table_1
47810                                                               (if (number?
47811                                                                    phase_0)
47812                                                                 (let ((table_1
47813                                                                        (call-with-values
47814                                                                         (lambda ()
47815                                                                           (values
47816                                                                            phase_0
47817                                                                            (let ((app_1
47818                                                                                   (hash-ref
47819                                                                                    phase-to-link-module-uses_0
47820                                                                                    phase_0
47821                                                                                    #f)))
47822                                                                              (let ((app_2
47823                                                                                     (compiled-in-memory-original-self
47824                                                                                      cim_0)))
47825                                                                                (let ((app_3
47826                                                                                       (compiled-in-memory-compile-time-inspector
47827                                                                                        cim_0)))
47828                                                                                  (module-linklet-info2.1
47829                                                                                   linklet_0
47830                                                                                   app_1
47831                                                                                   app_2
47832                                                                                   #f
47833                                                                                   app_3
47834                                                                                   (if phase-to-extra-inspectorsss_0
47835                                                                                     (hash-ref
47836                                                                                      phase-to-extra-inspectorsss_0
47837                                                                                      phase_0
47838                                                                                      #f)
47839                                                                                     #f)))))))
47840                                                                         (case-lambda
47841                                                                          ((key_0
47842                                                                            val_0)
47843                                                                           (hash-set
47844                                                                            table_0
47845                                                                            key_0
47846                                                                            val_0))
47847                                                                          (args
47848                                                                           (raise-binding-result-arity-error
47849                                                                            2
47850                                                                            args))))))
47851                                                                   (values
47852                                                                    table_1))
47853                                                                 table_0)))
47854                                                          (for-loop_1
47855                                                           table_1
47856                                                           (hash-iterate-next
47857                                                            ht_0
47858                                                            i_0))))
47859                                                       (args
47860                                                        (raise-binding-result-arity-error
47861                                                         2
47862                                                         args))))
47863                                                     table_0))))))
47864                                            (for-loop_1
47865                                             hash2610
47866                                             (hash-iterate-first
47867                                              ht_0)))))))))))))
47868                        (for-loop_0 rest_0))))
47869                  (values)))))))
47870         (for-loop_0 pre-submodules_0)))
47871      (void))))
47872(define filter-language-info
47873  (lambda (li_0)
47874    (if (vector? li_0)
47875      (if (= 3 (vector-length li_0))
47876        (if (1/module-path? (vector-ref li_0 0))
47877          (if (symbol? (vector-ref li_0 1)) li_0 #f)
47878          #f)
47879        #f)
47880      #f)))
47881(define 1/compiled-expression-recompile
47882  (|#%name|
47883   compiled-expression-recompile
47884   (lambda (c_0)
47885     (begin
47886       (begin
47887         (if (1/compiled-expression? c_0)
47888           (void)
47889           (raise-argument-error
47890            'compiled-expression-recompile
47891            "compiled-expression?"
47892            c_0))
47893         (let ((target-machine_0 (current-compile-target-machine)))
47894           (if (not target-machine_0)
47895             c_0
47896             (if (let ((or-part_0 (1/linklet-bundle? c_0)))
47897                   (if or-part_0 or-part_0 (linklet-directory?$1 c_0)))
47898               (let ((ns_0 (1/current-namespace)))
47899                 (let ((bundles_0
47900                        (extract-linklet-bundles c_0 '() hash2725)))
47901                   (let ((recompileds_0 (make-hash)))
47902                     (letrec*
47903                      ((force-recompile-bundle_0
47904                        (|#%name|
47905                         force-recompile-bundle
47906                         (lambda (k_0)
47907                           (begin
47908                             (begin
47909                               (if (hash-ref recompileds_0 k_0 #f)
47910                                 (void)
47911                                 (begin
47912                                   (hash-set! recompileds_0 k_0 'in-process)
47913                                   (let ((b_0 (hash-ref bundles_0 k_0 #f)))
47914                                     (begin
47915                                       (if b_0
47916                                         (void)
47917                                         (raise-arguments-error
47918                                          'compiled-expression-recompile
47919                                          "cannot find submodule"
47920                                          "submodule path"
47921                                          k_0))
47922                                       (hash-set!
47923                                        recompileds_0
47924                                        k_0
47925                                        (recompile-bundle
47926                                         b_0
47927                                         force-recompile-bundle_0
47928                                         ns_0
47929                                         target-machine_0))))))
47930                               (hash-ref recompileds_0 k_0)))))))
47931                      (begin
47932                        (begin
47933                          (letrec*
47934                           ((for-loop_0
47935                             (|#%name|
47936                              for-loop
47937                              (lambda (i_0)
47938                                (begin
47939                                  (if i_0
47940                                    (let ((k_0
47941                                           (hash-iterate-key bundles_0 i_0)))
47942                                      (begin
47943                                        (force-recompile-bundle_0 k_0)
47944                                        (for-loop_0
47945                                         (hash-iterate-next bundles_0 i_0))))
47946                                    (values)))))))
47947                           (for-loop_0 (hash-iterate-first bundles_0))))
47948                        (void)
47949                        (replace-linklet-bundles c_0 '() recompileds_0))))))
47950               (1/compiled-expression-recompile
47951                (compiled-in-memory-linklet-directory c_0))))))))))
47952(define extract-linklet-bundles
47953  (lambda (c_0 rev-path_0 accum_0)
47954    (if (1/linklet-bundle? c_0)
47955      (hash-set accum_0 (reverse$1 rev-path_0) c_0)
47956      (if (linklet-directory?$1 c_0)
47957        (let ((ht_0 (linklet-directory->hash$1 c_0)))
47958          (begin
47959            (letrec*
47960             ((for-loop_0
47961               (|#%name|
47962                for-loop
47963                (lambda (accum_1 i_0)
47964                  (begin
47965                    (if i_0
47966                      (call-with-values
47967                       (lambda () (hash-iterate-key+value ht_0 i_0))
47968                       (case-lambda
47969                        ((k_0 v_0)
47970                         (let ((accum_2
47971                                (let ((accum_2
47972                                       (if (symbol? k_0)
47973                                         (extract-linklet-bundles
47974                                          v_0
47975                                          (cons k_0 rev-path_0)
47976                                          accum_1)
47977                                         (if (not k_0)
47978                                           (extract-linklet-bundles
47979                                            v_0
47980                                            rev-path_0
47981                                            accum_1)
47982                                           accum_1))))
47983                                  (values accum_2))))
47984                           (for-loop_0 accum_2 (hash-iterate-next ht_0 i_0))))
47985                        (args (raise-binding-result-arity-error 2 args))))
47986                      accum_1))))))
47987             (for-loop_0 accum_0 (hash-iterate-first ht_0)))))
47988        accum_0))))
47989(define replace-linklet-bundles
47990  (lambda (c_0 rev-path_0 recompileds_0)
47991    (if (1/linklet-bundle? c_0)
47992      (recompiled-bundle (hash-ref recompileds_0 (reverse$1 rev-path_0)))
47993      (if (linklet-directory?$1 c_0)
47994        (1/hash->linklet-directory
47995         (let ((ht_0 (linklet-directory->hash$1 c_0)))
47996           (begin
47997             (letrec*
47998              ((for-loop_0
47999                (|#%name|
48000                 for-loop
48001                 (lambda (table_0 i_0)
48002                   (begin
48003                     (if i_0
48004                       (call-with-values
48005                        (lambda () (hash-iterate-key+value ht_0 i_0))
48006                        (case-lambda
48007                         ((k_0 v_0)
48008                          (let ((table_1
48009                                 (let ((table_1
48010                                        (call-with-values
48011                                         (lambda ()
48012                                           (values
48013                                            k_0
48014                                            (if (symbol? k_0)
48015                                              (replace-linklet-bundles
48016                                               v_0
48017                                               (cons k_0 rev-path_0)
48018                                               recompileds_0)
48019                                              (if (not k_0)
48020                                                (replace-linklet-bundles
48021                                                 v_0
48022                                                 rev-path_0
48023                                                 recompileds_0)
48024                                                (void)))))
48025                                         (case-lambda
48026                                          ((key_0 val_0)
48027                                           (hash-set table_0 key_0 val_0))
48028                                          (args
48029                                           (raise-binding-result-arity-error
48030                                            2
48031                                            args))))))
48032                                   (values table_1))))
48033                            (for-loop_0 table_1 (hash-iterate-next ht_0 i_0))))
48034                         (args (raise-binding-result-arity-error 2 args))))
48035                       table_0))))))
48036              (for-loop_0 hash2610 (hash-iterate-first ht_0))))))
48037        c_0))))
48038(define finish_2360
48039  (make-struct-type-install-properties
48040   '(recompiled)
48041   3
48042   0
48043   #f
48044   (list (cons prop:authentic #t))
48045   (current-inspector)
48046   #f
48047   '(0 1 2)
48048   #f
48049   'recompiled))
48050(define struct:recompiled
48051  (make-record-type-descriptor*
48052   'recompiled
48053   #f
48054   (|#%nongenerative-uid| recompiled)
48055   #f
48056   #f
48057   3
48058   0))
48059(define effect_1973 (finish_2360 struct:recompiled))
48060(define recompiled1.1
48061  (|#%name|
48062   recompiled
48063   (record-constructor
48064    (make-record-constructor-descriptor struct:recompiled #f #f))))
48065(define recompiled?
48066  (|#%name| recompiled? (record-predicate struct:recompiled)))
48067(define recompiled-bundle
48068  (|#%name| recompiled-bundle (record-accessor struct:recompiled 0)))
48069(define recompiled-phase-to-link-module-uses
48070  (|#%name|
48071   recompiled-phase-to-link-module-uses
48072   (record-accessor struct:recompiled 1)))
48073(define recompiled-self
48074  (|#%name| recompiled-self (record-accessor struct:recompiled 2)))
48075(define recompile-bundle
48076  (lambda (b_0 get-submodule-recompiled_0 ns_0 target-machine_0)
48077    (let ((orig-h_0 (1/linklet-bundle->hash b_0)))
48078      (let ((h_0
48079             (begin
48080               (letrec*
48081                ((for-loop_0
48082                  (|#%name|
48083                   for-loop
48084                   (lambda (table_0 i_0)
48085                     (begin
48086                       (if i_0
48087                         (call-with-values
48088                          (lambda () (hash-iterate-key+value orig-h_0 i_0))
48089                          (case-lambda
48090                           ((k_0 v_0)
48091                            (let ((table_1
48092                                   (let ((table_1
48093                                          (call-with-values
48094                                           (lambda ()
48095                                             (if (if (not (exact-integer? k_0))
48096                                                   (correlated-linklet? v_0)
48097                                                   #f)
48098                                               (values
48099                                                k_0
48100                                                (force-compile-linklet v_0))
48101                                               (values k_0 v_0)))
48102                                           (case-lambda
48103                                            ((key_0 val_0)
48104                                             (hash-set table_0 key_0 val_0))
48105                                            (args
48106                                             (raise-binding-result-arity-error
48107                                              2
48108                                              args))))))
48109                                     (values table_1))))
48110                              (for-loop_0
48111                               table_1
48112                               (hash-iterate-next orig-h_0 i_0))))
48113                           (args (raise-binding-result-arity-error 2 args))))
48114                         table_0))))))
48115                (for-loop_0 hash2610 (hash-iterate-first orig-h_0))))))
48116        (let ((can-eval-compiled?_0
48117               (eq? target-machine_0 (system-type 'target-machine))))
48118          (let ((eval-metadata-linklet_0
48119                 (|#%name|
48120                  eval-metadata-linklet
48121                  (lambda (key_0)
48122                    (begin
48123                      (if can-eval-compiled?_0
48124                        (eval-linklet (hash-ref h_0 key_0))
48125                        (eval-correlated-linklet
48126                         (hash-ref orig-h_0 key_0))))))))
48127            (let ((data-instance_0
48128                   (let ((app_0 (eval-metadata-linklet_0 'data)))
48129                     (instantiate-linklet app_0 (list deserialize-instance)))))
48130              (let ((declaration-instance_0
48131                     (let ((app_0 (eval-metadata-linklet_0 'decl)))
48132                       (instantiate-linklet
48133                        app_0
48134                        (list deserialize-instance data-instance_0)))))
48135                (let ((decl_0
48136                       (|#%name|
48137                        decl
48138                        (lambda (key_0)
48139                          (begin
48140                            (instance-variable-value
48141                             declaration-instance_0
48142                             key_0))))))
48143                  (let ((mpis_0 (make-module-path-index-table)))
48144                    (begin
48145                      (call-with-values
48146                       (lambda ()
48147                         (let ((vec_0
48148                                (instance-variable-value
48149                                 data-instance_0
48150                                 mpi-vector-id)))
48151                           (begin
48152                             (check-vector vec_0)
48153                             (values vec_0 (unsafe-vector-length vec_0)))))
48154                       (case-lambda
48155                        ((vec_0 len_0)
48156                         (begin
48157                           #f
48158                           (letrec*
48159                            ((for-loop_0
48160                              (|#%name|
48161                               for-loop
48162                               (lambda (pos_0)
48163                                 (begin
48164                                   (if (unsafe-fx< pos_0 len_0)
48165                                     (let ((mpi_0
48166                                            (unsafe-vector-ref vec_0 pos_0)))
48167                                       (begin
48168                                         (add-module-path-index! mpis_0 mpi_0)
48169                                         (for-loop_0 (unsafe-fx+ 1 pos_0))))
48170                                     (values)))))))
48171                            (for-loop_0 0))))
48172                        (args (raise-binding-result-arity-error 2 args))))
48173                      (let ((self_0
48174                             (begin-unsafe
48175                              (begin
48176                                (instance-variable-value
48177                                 declaration-instance_0
48178                                 'self-mpi)))))
48179                        (let ((phase-to-link-modules_0
48180                               (begin-unsafe
48181                                (begin
48182                                  (instance-variable-value
48183                                   declaration-instance_0
48184                                   'phase-to-link-modules)))))
48185                          (let ((unsafe?_0 (hash-ref orig-h_0 'unsafe? #f)))
48186                            (let ((find-submodule_0
48187                                   (|#%name|
48188                                    find-submodule
48189                                    (lambda (mod-name_0 phase_0)
48190                                      (begin
48191                                        (let ((find-l_0
48192                                               (1/resolved-module-path-name
48193                                                mod-name_0)))
48194                                          (let ((self-l_0
48195                                                 (1/resolved-module-path-name
48196                                                  (1/module-path-index-resolve
48197                                                   self_0))))
48198                                            (let ((root-of_0
48199                                                   (|#%name|
48200                                                    root-of
48201                                                    (lambda (l_0)
48202                                                      (begin
48203                                                        (if (pair? l_0)
48204                                                          (car l_0)
48205                                                          l_0))))))
48206                                              (if (let ((app_0
48207                                                         (root-of_0 find-l_0)))
48208                                                    (equal?
48209                                                     app_0
48210                                                     (root-of_0 self-l_0)))
48211                                                (let ((r_0
48212                                                       (|#%app|
48213                                                        get-submodule-recompiled_0
48214                                                        (if (pair? find-l_0)
48215                                                          (cdr find-l_0)
48216                                                          '()))))
48217                                                  (begin
48218                                                    (if (eq? r_0 'in-process)
48219                                                      (raise-arguments-error
48220                                                       'compiled-expression-recompile
48221                                                       "cycle in linklet imports")
48222                                                      (void))
48223                                                    (let ((b_1
48224                                                           (recompiled-bundle
48225                                                            r_0)))
48226                                                      (let ((linklet_0
48227                                                             (let ((or-part_0
48228                                                                    (hash-ref
48229                                                                     (1/linklet-bundle->hash
48230                                                                      b_1)
48231                                                                     phase_0
48232                                                                     #f)))
48233                                                               (if or-part_0
48234                                                                 or-part_0
48235                                                                 (raise-arguments-error
48236                                                                  'compiled-expression-recompile
48237                                                                  "cannot find submodule at phase"
48238                                                                  "submodule"
48239                                                                  mod-name_0
48240                                                                  "phase"
48241                                                                  phase_0)))))
48242                                                        (let ((app_0
48243                                                               (hash-ref
48244                                                                (recompiled-phase-to-link-module-uses
48245                                                                 r_0)
48246                                                                phase_0
48247                                                                #f)))
48248                                                          (module-linklet-info2.1
48249                                                           linklet_0
48250                                                           app_0
48251                                                           (recompiled-self
48252                                                            r_0)
48253                                                           #f
48254                                                           (current-code-inspector)
48255                                                           #f))))))
48256                                                #f)))))))))
48257                              (let ((body-linklets+module-use*s_0
48258                                     (begin
48259                                       (letrec*
48260                                        ((for-loop_0
48261                                          (|#%name|
48262                                           for-loop
48263                                           (lambda (table_0 i_0)
48264                                             (begin
48265                                               (if i_0
48266                                                 (call-with-values
48267                                                  (lambda ()
48268                                                    (hash-iterate-key+value
48269                                                     h_0
48270                                                     i_0))
48271                                                  (case-lambda
48272                                                   ((phase_0 body-linklet_0)
48273                                                    (let ((table_1
48274                                                           (if (exact-integer?
48275                                                                phase_0)
48276                                                             (let ((table_1
48277                                                                    (call-with-values
48278                                                                     (lambda ()
48279                                                                       (let ((module-use*s_0
48280                                                                              (module-uses-add-extra-inspectorsss
48281                                                                               (hash-ref
48282                                                                                phase-to-link-modules_0
48283                                                                                phase_0)
48284                                                                               #f)))
48285                                                                         (call-with-values
48286                                                                          (lambda ()
48287                                                                            (let ((temp3_0
48288                                                                                   (if (correlated-linklet?
48289                                                                                        body-linklet_0)
48290                                                                                     (correlated-linklet-expr
48291                                                                                      body-linklet_0)
48292                                                                                     body-linklet_0)))
48293                                                                              (let ((temp4_0
48294                                                                                     (if (correlated-linklet?
48295                                                                                          body-linklet_0)
48296                                                                                       compile-linklet
48297                                                                                       recompile-linklet)))
48298                                                                                (let ((temp5_0
48299                                                                                       (list
48300                                                                                        (list
48301                                                                                         get-syntax-literal!-id)
48302                                                                                        (list
48303                                                                                         set-transformer!-id))))
48304                                                                                  (let ((temp6_0
48305                                                                                         (list
48306                                                                                          empty-syntax-literals-instance
48307                                                                                          empty-module-body-instance)))
48308                                                                                    (let ((temp5_1
48309                                                                                           temp5_0)
48310                                                                                          (temp4_1
48311                                                                                           temp4_0)
48312                                                                                          (temp3_1
48313                                                                                           temp3_0))
48314                                                                                      (compile-module-linklet.1
48315                                                                                       temp6_0
48316                                                                                       temp5_1
48317                                                                                       temp4_1
48318                                                                                       find-submodule_0
48319                                                                                       #t
48320                                                                                       #t
48321                                                                                       module-use*s_0
48322                                                                                       ns_0
48323                                                                                       #t
48324                                                                                       #t
48325                                                                                       unsafe?_0
48326                                                                                       temp3_1)))))))
48327                                                                          (case-lambda
48328                                                                           ((linklet_0
48329                                                                             new-module-use*s_0)
48330                                                                            (values
48331                                                                             phase_0
48332                                                                             (cons
48333                                                                              linklet_0
48334                                                                              new-module-use*s_0)))
48335                                                                           (args
48336                                                                            (raise-binding-result-arity-error
48337                                                                             2
48338                                                                             args))))))
48339                                                                     (case-lambda
48340                                                                      ((key_0
48341                                                                        val_0)
48342                                                                       (hash-set
48343                                                                        table_0
48344                                                                        key_0
48345                                                                        val_0))
48346                                                                      (args
48347                                                                       (raise-binding-result-arity-error
48348                                                                        2
48349                                                                        args))))))
48350                                                               (values
48351                                                                table_1))
48352                                                             table_0)))
48353                                                      (for-loop_0
48354                                                       table_1
48355                                                       (hash-iterate-next
48356                                                        h_0
48357                                                        i_0))))
48358                                                   (args
48359                                                    (raise-binding-result-arity-error
48360                                                     2
48361                                                     args))))
48362                                                 table_0))))))
48363                                        (for-loop_0
48364                                         hash2725
48365                                         (hash-iterate-first h_0))))))
48366                                (let ((h/new-body-linklets_0
48367                                       (begin
48368                                         (letrec*
48369                                          ((for-loop_0
48370                                            (|#%name|
48371                                             for-loop
48372                                             (lambda (h_1 i_0)
48373                                               (begin
48374                                                 (if i_0
48375                                                   (call-with-values
48376                                                    (lambda ()
48377                                                      (hash-iterate-key+value
48378                                                       body-linklets+module-use*s_0
48379                                                       i_0))
48380                                                    (case-lambda
48381                                                     ((phase_0 l+mu*s_0)
48382                                                      (let ((h_2
48383                                                             (let ((h_2
48384                                                                    (hash-set
48385                                                                     h_1
48386                                                                     phase_0
48387                                                                     (car
48388                                                                      l+mu*s_0))))
48389                                                               (values h_2))))
48390                                                        (for-loop_0
48391                                                         h_2
48392                                                         (hash-iterate-next
48393                                                          body-linklets+module-use*s_0
48394                                                          i_0))))
48395                                                     (args
48396                                                      (raise-binding-result-arity-error
48397                                                       2
48398                                                       args))))
48399                                                   h_1))))))
48400                                          (for-loop_0
48401                                           h_0
48402                                           (hash-iterate-first
48403                                            body-linklets+module-use*s_0))))))
48404                                  (let ((phase-to-link-module-uses_0
48405                                         (begin
48406                                           (letrec*
48407                                            ((for-loop_0
48408                                              (|#%name|
48409                                               for-loop
48410                                               (lambda (table_0 i_0)
48411                                                 (begin
48412                                                   (if i_0
48413                                                     (call-with-values
48414                                                      (lambda ()
48415                                                        (hash-iterate-key+value
48416                                                         body-linklets+module-use*s_0
48417                                                         i_0))
48418                                                      (case-lambda
48419                                                       ((phase_0 l+mu*s_0)
48420                                                        (let ((table_1
48421                                                               (let ((table_1
48422                                                                      (call-with-values
48423                                                                       (lambda ()
48424                                                                         (values
48425                                                                          phase_0
48426                                                                          (module-uses-strip-extra-inspectorsss
48427                                                                           (cdr
48428                                                                            l+mu*s_0))))
48429                                                                       (case-lambda
48430                                                                        ((key_0
48431                                                                          val_0)
48432                                                                         (hash-set
48433                                                                          table_0
48434                                                                          key_0
48435                                                                          val_0))
48436                                                                        (args
48437                                                                         (raise-binding-result-arity-error
48438                                                                          2
48439                                                                          args))))))
48440                                                                 (values
48441                                                                  table_1))))
48442                                                          (for-loop_0
48443                                                           table_1
48444                                                           (hash-iterate-next
48445                                                            body-linklets+module-use*s_0
48446                                                            i_0))))
48447                                                       (args
48448                                                        (raise-binding-result-arity-error
48449                                                         2
48450                                                         args))))
48451                                                     table_0))))))
48452                                            (for-loop_0
48453                                             hash2610
48454                                             (hash-iterate-first
48455                                              body-linklets+module-use*s_0))))))
48456                                    (let ((phase-to-link-module-uses-expr_0
48457                                           (serialize-phase-to-link-module-uses
48458                                            phase-to-link-module-uses_0
48459                                            mpis_0)))
48460                                      (let ((data-linklet_0
48461                                             (compile-linklet
48462                                              (generate-module-data-linklet
48463                                               mpis_0)
48464                                              'data)))
48465                                        (let ((declaration-linklet_0
48466                                               (compile-linklet
48467                                                (let ((app_0
48468                                                       (begin-unsafe
48469                                                        (begin
48470                                                          (instance-variable-value
48471                                                           declaration-instance_0
48472                                                           'requires)))))
48473                                                  (generate-module-declaration-linklet
48474                                                   mpis_0
48475                                                   self_0
48476                                                   app_0
48477                                                   (begin-unsafe
48478                                                    (begin
48479                                                      (instance-variable-value
48480                                                       declaration-instance_0
48481                                                       'provides)))
48482                                                   phase-to-link-module-uses-expr_0))
48483                                                'decl)))
48484                                          (let ((new-bundle_0
48485                                                 (1/hash->linklet-bundle
48486                                                  (let ((h_1
48487                                                         (hash-set
48488                                                          h/new-body-linklets_0
48489                                                          'data
48490                                                          data-linklet_0)))
48491                                                    (let ((h_2
48492                                                           (hash-set
48493                                                            h_1
48494                                                            'decl
48495                                                            declaration-linklet_0)))
48496                                                      h_2)))))
48497                                            (recompiled1.1
48498                                             new-bundle_0
48499                                             phase-to-link-module-uses_0
48500                                             self_0)))))))))))))))))))))))
48501(define create-compiled-in-memorys-using-shared-data
48502  (lambda (tops_0 data-linklet_0 ns_0)
48503    (let ((data-instance_0
48504           (let ((app_0 (force-compile-linklet data-linklet_0)))
48505             (instantiate-linklet
48506              app_0
48507              (list
48508               deserialize-instance
48509               (let ((temp2_0 (namespace-phase ns_0)))
48510                 (let ((temp3_0 (namespace-mpi ns_0)))
48511                   (let ((temp4_0 (namespace-bulk-binding-registry ns_0)))
48512                     (let ((temp5_0 (current-code-inspector)))
48513                       (let ((temp4_1 temp4_0)
48514                             (temp3_1 temp3_0)
48515                             (temp2_1 temp2_0))
48516                         (make-eager-instance-instance.1
48517                          temp4_1
48518                          temp2_1
48519                          temp5_0
48520                          ns_0
48521                          temp3_1)))))))))))
48522      (let ((data_0
48523             (|#%name|
48524              data
48525              (lambda (key_0)
48526                (begin (instance-variable-value data-instance_0 key_0))))))
48527        (let ((mpi-vector_0
48528               (begin-unsafe
48529                (begin
48530                  (instance-variable-value data-instance_0 mpi-vector-id)))))
48531          (let ((mpi-vector-trees_0
48532                 (begin-unsafe
48533                  (begin
48534                    (instance-variable-value
48535                     data-instance_0
48536                     'mpi-vector-trees)))))
48537            (let ((phase-to-link-modules-vector_0
48538                   (begin-unsafe
48539                    (begin
48540                      (instance-variable-value
48541                       data-instance_0
48542                       'phase-to-link-modules-vector)))))
48543              (let ((phase-to-link-modules-trees_0
48544                     (begin-unsafe
48545                      (begin
48546                        (instance-variable-value
48547                         data-instance_0
48548                         'phase-to-link-modules-trees)))))
48549                (let ((syntax-literals_0
48550                       (begin-unsafe
48551                        (begin
48552                          (instance-variable-value
48553                           data-instance_0
48554                           'syntax-literals)))))
48555                  (let ((syntax-literals-trees_0
48556                         (begin-unsafe
48557                          (begin
48558                            (instance-variable-value
48559                             data-instance_0
48560                             'syntax-literals-trees)))))
48561                    (let ((namespace-scopes_0 (extract-namespace-scopes ns_0)))
48562                      (letrec*
48563                       ((construct-compiled-in-memory_0
48564                         (|#%name|
48565                          construct-compiled-in-memory
48566                          (lambda (ld_0
48567                                   mpi-vector-tree_0
48568                                   phase-to-link-modules-tree_0
48569                                   syntax-literals-tree_0)
48570                            (begin
48571                              (let ((or-part_0 (1/linklet-bundle? ld_0)))
48572                                (let ((is-module?_0
48573                                       (if or-part_0
48574                                         or-part_0
48575                                         (let ((b_0
48576                                                (hash-ref
48577                                                 (linklet-directory->hash$1
48578                                                  ld_0)
48579                                                 #f
48580                                                 #f)))
48581                                           (if b_0
48582                                             (hash-ref
48583                                              (1/linklet-bundle->hash b_0)
48584                                              'decl
48585                                              #f)
48586                                             #f)))))
48587                                  (let ((mpi-pos-vec_0
48588                                         (vector-ref mpi-vector-tree_0 0)))
48589                                    (let ((syntax-literals-spec_0
48590                                           (vector-ref
48591                                            syntax-literals-tree_0
48592                                            0)))
48593                                      (let ((pres_0
48594                                             (if is-module?_0
48595                                               (extract-submodules ld_0 'pre)
48596                                               (compiled-top->compiled-tops
48597                                                ld_0))))
48598                                        (let ((posts_0
48599                                               (if is-module?_0
48600                                                 (extract-submodules
48601                                                  ld_0
48602                                                  'post)
48603                                                 null)))
48604                                          (let ((map-construct-compiled-in-memory_0
48605                                                 (|#%name|
48606                                                  map-construct-compiled-in-memory
48607                                                  (lambda (l_0 vec-pos_0)
48608                                                    (begin
48609                                                      (reverse$1
48610                                                       (let ((lst_0
48611                                                              (vector-ref
48612                                                               mpi-vector-tree_0
48613                                                               vec-pos_0)))
48614                                                         (let ((lst_1
48615                                                                (vector-ref
48616                                                                 phase-to-link-modules-tree_0
48617                                                                 vec-pos_0)))
48618                                                           (let ((lst_2
48619                                                                  (vector-ref
48620                                                                   syntax-literals-tree_0
48621                                                                   vec-pos_0)))
48622                                                             (let ((lst_3
48623                                                                    lst_1)
48624                                                                   (lst_4
48625                                                                    lst_0))
48626                                                               (begin
48627                                                                 (letrec*
48628                                                                  ((for-loop_0
48629                                                                    (|#%name|
48630                                                                     for-loop
48631                                                                     (lambda (fold-var_0
48632                                                                              lst_5
48633                                                                              lst_6
48634                                                                              lst_7
48635                                                                              lst_8)
48636                                                                       (begin
48637                                                                         (if (if (pair?
48638                                                                                  lst_5)
48639                                                                               (if (pair?
48640                                                                                    lst_6)
48641                                                                                 (if (pair?
48642                                                                                      lst_7)
48643                                                                                   (pair?
48644                                                                                    lst_8)
48645                                                                                   #f)
48646                                                                                 #f)
48647                                                                               #f)
48648                                                                           (let ((sub-ld_0
48649                                                                                  (unsafe-car
48650                                                                                   lst_5)))
48651                                                                             (let ((rest_0
48652                                                                                    (unsafe-cdr
48653                                                                                     lst_5)))
48654                                                                               (let ((mpi-vector-tree_1
48655                                                                                      (unsafe-car
48656                                                                                       lst_6)))
48657                                                                                 (let ((rest_1
48658                                                                                        (unsafe-cdr
48659                                                                                         lst_6)))
48660                                                                                   (let ((phase-to-link-modules-tree_1
48661                                                                                          (unsafe-car
48662                                                                                           lst_7)))
48663                                                                                     (let ((rest_2
48664                                                                                            (unsafe-cdr
48665                                                                                             lst_7)))
48666                                                                                       (let ((syntax-literals-tree_1
48667                                                                                              (unsafe-car
48668                                                                                               lst_8)))
48669                                                                                         (let ((rest_3
48670                                                                                                (unsafe-cdr
48671                                                                                                 lst_8)))
48672                                                                                           (let ((fold-var_1
48673                                                                                                  (let ((fold-var_1
48674                                                                                                         (cons
48675                                                                                                          (construct-compiled-in-memory_0
48676                                                                                                           sub-ld_0
48677                                                                                                           mpi-vector-tree_1
48678                                                                                                           phase-to-link-modules-tree_1
48679                                                                                                           syntax-literals-tree_1)
48680                                                                                                          fold-var_0)))
48681                                                                                                    (values
48682                                                                                                     fold-var_1))))
48683                                                                                             (for-loop_0
48684                                                                                              fold-var_1
48685                                                                                              rest_0
48686                                                                                              rest_1
48687                                                                                              rest_2
48688                                                                                              rest_3))))))))))
48689                                                                           fold-var_0))))))
48690                                                                  (for-loop_0
48691                                                                   null
48692                                                                   l_0
48693                                                                   lst_4
48694                                                                   lst_3
48695                                                                   lst_2)))))))))))))
48696                                            (let ((app_0
48697                                                   (vector-ref
48698                                                    phase-to-link-modules-vector_0
48699                                                    (vector-ref
48700                                                     phase-to-link-modules-tree_0
48701                                                     0))))
48702                                              (let ((app_1
48703                                                     (let ((len_0
48704                                                            (vector-length
48705                                                             mpi-pos-vec_0)))
48706                                                       (begin
48707                                                         (if (exact-nonnegative-integer?
48708                                                              len_0)
48709                                                           (void)
48710                                                           (raise-argument-error
48711                                                            'for/vector
48712                                                            "exact-nonnegative-integer?"
48713                                                            len_0))
48714                                                         (let ((v_0
48715                                                                (make-vector
48716                                                                 len_0
48717                                                                 0)))
48718                                                           (begin
48719                                                             (if (zero? len_0)
48720                                                               (void)
48721                                                               (call-with-values
48722                                                                (lambda ()
48723                                                                  (begin
48724                                                                    (check-vector
48725                                                                     mpi-pos-vec_0)
48726                                                                    (values
48727                                                                     mpi-pos-vec_0
48728                                                                     (unsafe-vector-length
48729                                                                      mpi-pos-vec_0))))
48730                                                                (case-lambda
48731                                                                 ((vec_0 len_1)
48732                                                                  (begin
48733                                                                    #f
48734                                                                    (letrec*
48735                                                                     ((for-loop_0
48736                                                                       (|#%name|
48737                                                                        for-loop
48738                                                                        (lambda (i_0
48739                                                                                 pos_0)
48740                                                                          (begin
48741                                                                            (if (unsafe-fx<
48742                                                                                 pos_0
48743                                                                                 len_1)
48744                                                                              (let ((pos_1
48745                                                                                     (unsafe-vector-ref
48746                                                                                      vec_0
48747                                                                                      pos_0)))
48748                                                                                (let ((i_1
48749                                                                                       (let ((i_1
48750                                                                                              (begin
48751                                                                                                (unsafe-vector*-set!
48752                                                                                                 v_0
48753                                                                                                 i_0
48754                                                                                                 (vector-ref
48755                                                                                                  mpi-vector_0
48756                                                                                                  pos_1))
48757                                                                                                (unsafe-fx+
48758                                                                                                 1
48759                                                                                                 i_0))))
48760                                                                                         (values
48761                                                                                          i_1))))
48762                                                                                  (if (if (not
48763                                                                                           (let ((x_0
48764                                                                                                  (list
48765                                                                                                   pos_1)))
48766                                                                                             (unsafe-fx=
48767                                                                                              i_1
48768                                                                                              len_0)))
48769                                                                                        #t
48770                                                                                        #f)
48771                                                                                    (for-loop_0
48772                                                                                     i_1
48773                                                                                     (unsafe-fx+
48774                                                                                      1
48775                                                                                      pos_0))
48776                                                                                    i_1)))
48777                                                                              i_0))))))
48778                                                                     (for-loop_0
48779                                                                      0
48780                                                                      0))))
48781                                                                 (args
48782                                                                  (raise-binding-result-arity-error
48783                                                                   2
48784                                                                   args)))))
48785                                                             v_0))))))
48786                                                (let ((app_2
48787                                                       (let ((len_0
48788                                                              (cdr
48789                                                               syntax-literals-spec_0)))
48790                                                         (begin
48791                                                           (if (exact-nonnegative-integer?
48792                                                                len_0)
48793                                                             (void)
48794                                                             (raise-argument-error
48795                                                              'for/vector
48796                                                              "exact-nonnegative-integer?"
48797                                                              len_0))
48798                                                           (let ((v_0
48799                                                                  (make-vector
48800                                                                   len_0
48801                                                                   0)))
48802                                                             (begin
48803                                                               (if (zero?
48804                                                                    len_0)
48805                                                                 (void)
48806                                                                 (let ((end_0
48807                                                                        (cdr
48808                                                                         syntax-literals-spec_0)))
48809                                                                   (begin
48810                                                                     (letrec*
48811                                                                      ((for-loop_0
48812                                                                        (|#%name|
48813                                                                         for-loop
48814                                                                         (lambda (i_0
48815                                                                                  pos_0)
48816                                                                           (begin
48817                                                                             (if (<
48818                                                                                  pos_0
48819                                                                                  end_0)
48820                                                                               (let ((i_1
48821                                                                                      (let ((i_1
48822                                                                                             (begin
48823                                                                                               (unsafe-vector*-set!
48824                                                                                                v_0
48825                                                                                                i_0
48826                                                                                                (if syntax-literals_0
48827                                                                                                  (vector-ref
48828                                                                                                   syntax-literals_0
48829                                                                                                   (+
48830                                                                                                    (car
48831                                                                                                     syntax-literals-spec_0)
48832                                                                                                    pos_0))
48833                                                                                                  #f))
48834                                                                                               (unsafe-fx+
48835                                                                                                1
48836                                                                                                i_0))))
48837                                                                                        (values
48838                                                                                         i_1))))
48839                                                                                 (if (if (not
48840                                                                                          (let ((x_0
48841                                                                                                 (list
48842                                                                                                  pos_0)))
48843                                                                                            (unsafe-fx=
48844                                                                                             i_1
48845                                                                                             len_0)))
48846                                                                                       #t
48847                                                                                       #f)
48848                                                                                   (for-loop_0
48849                                                                                    i_1
48850                                                                                    (+
48851                                                                                     pos_0
48852                                                                                     1))
48853                                                                                   i_1))
48854                                                                               i_0))))))
48855                                                                      (for-loop_0
48856                                                                       0
48857                                                                       0)))))
48858                                                               v_0))))))
48859                                                  (let ((app_3
48860                                                         (map-construct-compiled-in-memory_0
48861                                                          pres_0
48862                                                          1)))
48863                                                    (compiled-in-memory1.1
48864                                                     ld_0
48865                                                     #f
48866                                                     #f
48867                                                     #f
48868                                                     app_0
48869                                                     #f
48870                                                     hash2589
48871                                                     app_1
48872                                                     app_2
48873                                                     app_3
48874                                                     (map-construct-compiled-in-memory_0
48875                                                      posts_0
48876                                                      2)
48877                                                     namespace-scopes_0
48878                                                     #f)))))))))))))))))
48879                       (map_1346
48880                        construct-compiled-in-memory_0
48881                        tops_0
48882                        mpi-vector-trees_0
48883                        phase-to-link-modules-trees_0
48884                        syntax-literals-trees_0)))))))))))))
48885(define extract-submodules
48886  (lambda (ld_0 names-key_0)
48887    (if (1/linklet-bundle? ld_0)
48888      null
48889      (let ((h_0 (linklet-directory->hash$1 ld_0)))
48890        (let ((mod_0 (hash-ref h_0 #f #f)))
48891          (begin
48892            (if mod_0 (void) (error "missing main module"))
48893            (let ((mh_0 (1/linklet-bundle->hash mod_0)))
48894              (let ((names_0 (hash-ref mh_0 names-key_0 null)))
48895                (reverse$1
48896                 (begin
48897                   (letrec*
48898                    ((for-loop_0
48899                      (|#%name|
48900                       for-loop
48901                       (lambda (fold-var_0 lst_0)
48902                         (begin
48903                           (if (pair? lst_0)
48904                             (let ((name_0 (unsafe-car lst_0)))
48905                               (let ((rest_0 (unsafe-cdr lst_0)))
48906                                 (let ((fold-var_1
48907                                        (let ((fold-var_1
48908                                               (cons
48909                                                (hash-ref
48910                                                 h_0
48911                                                 name_0
48912                                                 (lambda ()
48913                                                   (error
48914                                                    "missing submodule declaration:"
48915                                                    name_0)))
48916                                                fold-var_0)))
48917                                          (values fold-var_1))))
48918                                   (for-loop_0 fold-var_1 rest_0))))
48919                             fold-var_0))))))
48920                    (for-loop_0 null names_0))))))))))))
48921(define eval-single-top (lambda (c_0 ns_0) (eval-one-top.1 #t c_0 ns_0 #t)))
48922(define compiled-multiple-top?
48923  (lambda (c_0)
48924    (let ((ld_0
48925           (if (compiled-in-memory? c_0)
48926             (compiled-in-memory-linklet-directory c_0)
48927             c_0)))
48928      (if (linklet-directory?$1 ld_0)
48929        (not (hash-ref (linklet-directory->hash$1 ld_0) #f #f))
48930        #f))))
48931(define eval-top
48932  (let ((eval-top_0
48933         (|#%name|
48934          eval-top
48935          (lambda (c3_0 ns4_0 eval-compiled1_0 as-tail?2_0)
48936            (begin
48937              (let ((eval-compiled_0
48938                     (if (eq? eval-compiled1_0 unsafe-undefined)
48939                       eval-top
48940                       eval-compiled1_0)))
48941                (if (compiled-multiple-top? c3_0)
48942                  (eval-multiple-tops c3_0 ns4_0 eval-compiled_0 as-tail?2_0)
48943                  (eval-one-top.1 #f c3_0 ns4_0 as-tail?2_0))))))))
48944    (case-lambda
48945     ((c_0 ns_0) (eval-top_0 c_0 ns_0 unsafe-undefined #t))
48946     ((c_0 ns_0 eval-compiled_0 as-tail?2_0)
48947      (eval-top_0 c_0 ns_0 eval-compiled_0 as-tail?2_0))
48948     ((c_0 ns_0 eval-compiled1_0) (eval-top_0 c_0 ns_0 eval-compiled1_0 #t)))))
48949(define eval-multiple-tops
48950  (lambda (c_0 ns_0 eval-compiled_0 as-tail?_0)
48951    (let ((eval-compiled-parts_0
48952           (|#%name|
48953            eval-compiled-parts
48954            (lambda (l_0)
48955              (begin
48956                (letrec*
48957                 ((loop_0
48958                   (|#%name|
48959                    loop
48960                    (lambda (l_1)
48961                      (begin
48962                        (if (null? l_1)
48963                          void
48964                          (if (null? (cdr l_1))
48965                            (|#%app| eval-compiled_0 (car l_1) ns_0 as-tail?_0)
48966                            (begin
48967                              (|#%app| eval-compiled_0 (car l_1) ns_0 #f)
48968                              (loop_0 (cdr l_1))))))))))
48969                 (loop_0 l_0)))))))
48970      (if (compiled-in-memory? c_0)
48971        (eval-compiled-parts_0
48972         (compiled-in-memory-pre-compiled-in-memorys c_0))
48973        (let ((c1_0 (hash-ref (linklet-directory->hash$1 c_0) 'data #f)))
48974          (if c1_0
48975            (eval-compiled-parts_0
48976             (let ((app_0 (compiled-top->compiled-tops c_0)))
48977               (create-compiled-in-memorys-using-shared-data
48978                app_0
48979                (hash-ref
48980                 (1/linklet-bundle->hash
48981                  (hash-ref (linklet-directory->hash$1 c1_0) #f))
48982                 0)
48983                ns_0)))
48984            (eval-compiled-parts_0 (compiled-top->compiled-tops c_0))))))))
48985(define eval-one-top.1
48986  (|#%name|
48987   eval-one-top
48988   (lambda (single-expression?5_0 c8_0 ns9_0 as-tail?7_0)
48989     (begin
48990       (begin
48991         (if log-performance?
48992           (start-performance-region
48993            'eval
48994            (if single-expression?5_0 'transformer 'top))
48995           (void))
48996         (begin0
48997           (let ((ld_0
48998                  (if (compiled-in-memory? c8_0)
48999                    (compiled-in-memory-linklet-directory c8_0)
49000                    c8_0)))
49001             (let ((h_0
49002                    (1/linklet-bundle->hash
49003                     (hash-ref (linklet-directory->hash$1 ld_0) #f))))
49004               (let ((link-instance_0
49005                      (if (compiled-in-memory? c8_0)
49006                        (link-instance-from-compiled-in-memory
49007                         c8_0
49008                         (if (not single-expression?5_0) ns9_0 #f))
49009                        (let ((app_0
49010                               (force-compile-linklet (hash-ref h_0 'link))))
49011                          (instantiate-linklet
49012                           app_0
49013                           (list
49014                            deserialize-instance
49015                            (let ((temp18_0 (namespace-phase ns9_0)))
49016                              (let ((temp19_0 (namespace-mpi ns9_0)))
49017                                (let ((temp20_0
49018                                       (namespace-bulk-binding-registry
49019                                        ns9_0)))
49020                                  (let ((temp21_0 (current-code-inspector)))
49021                                    (let ((temp20_1 temp20_0)
49022                                          (temp19_1 temp19_0)
49023                                          (temp18_1 temp18_0))
49024                                      (make-eager-instance-instance.1
49025                                       temp20_1
49026                                       temp18_1
49027                                       temp21_0
49028                                       ns9_0
49029                                       temp19_1))))))))))))
49030                 (let ((orig-phase_0 (hash-ref h_0 'original-phase)))
49031                   (let ((max-phase_0 (hash-ref h_0 'max-phase)))
49032                     (let ((phase-shift_0
49033                            (phase- (namespace-phase ns9_0) orig-phase_0)))
49034                       (let ((extra-inspector_0
49035                              (if (compiled-in-memory? c8_0)
49036                                (compiled-in-memory-compile-time-inspector
49037                                 c8_0)
49038                                #f)))
49039                         (let ((phase-to-link-extra-inspectorsss_0
49040                                (if (compiled-in-memory? c8_0)
49041                                  (compiled-in-memory-phase-to-link-extra-inspectorsss
49042                                   c8_0)
49043                                  hash2589)))
49044                           (let ((phase-to-link-modules_0
49045                                  (if (compiled-in-memory? c8_0)
49046                                    (compiled-in-memory-phase-to-link-module-uses
49047                                     c8_0)
49048                                    (instance-variable-value
49049                                     link-instance_0
49050                                     'phase-to-link-modules))))
49051                             (let ((thunk_0
49052                                    (let ((end_0 (sub1 orig-phase_0)))
49053                                      (begin
49054                                        (letrec*
49055                                         ((for-loop_0
49056                                           (|#%name|
49057                                            for-loop
49058                                            (lambda (prev-thunk_0 pos_0)
49059                                              (begin
49060                                                (if (> pos_0 end_0)
49061                                                  (let ((prev-thunk_1
49062                                                         (let ((prev-thunk_1
49063                                                                (begin
49064                                                                  (|#%app|
49065                                                                   prev-thunk_0
49066                                                                   #f)
49067                                                                  (let ((module-uses_0
49068                                                                         (hash-ref
49069                                                                          phase-to-link-modules_0
49070                                                                          pos_0
49071                                                                          null)))
49072                                                                    (call-with-values
49073                                                                     (lambda ()
49074                                                                       (call-with-values
49075                                                                        (lambda ()
49076                                                                          (begin
49077                                                                            (letrec*
49078                                                                             ((for-loop_1
49079                                                                               (|#%name|
49080                                                                                for-loop
49081                                                                                (lambda (mis_0
49082                                                                                         is_0
49083                                                                                         lst_0)
49084                                                                                  (begin
49085                                                                                    (if (pair?
49086                                                                                         lst_0)
49087                                                                                      (let ((mu_0
49088                                                                                             (unsafe-car
49089                                                                                              lst_0)))
49090                                                                                        (let ((rest_0
49091                                                                                               (unsafe-cdr
49092                                                                                                lst_0)))
49093                                                                                          (call-with-values
49094                                                                                           (lambda ()
49095                                                                                             (call-with-values
49096                                                                                              (lambda ()
49097                                                                                                (call-with-values
49098                                                                                                 (lambda ()
49099                                                                                                   (let ((temp26_0
49100                                                                                                          (let ((app_0
49101                                                                                                                 (phase+
49102                                                                                                                  pos_0
49103                                                                                                                  phase-shift_0)))
49104                                                                                                            (phase-
49105                                                                                                             app_0
49106                                                                                                             (module-use-phase
49107                                                                                                              mu_0)))))
49108                                                                                                     (namespace-module-use->module+linklet-instances.1
49109                                                                                                      temp26_0
49110                                                                                                      #f
49111                                                                                                      #f
49112                                                                                                      ns9_0
49113                                                                                                      mu_0)))
49114                                                                                                 (case-lambda
49115                                                                                                  ((mis22_0
49116                                                                                                    is23_0)
49117                                                                                                   (values
49118                                                                                                    (cons
49119                                                                                                     mis22_0
49120                                                                                                     mis_0)
49121                                                                                                    (cons
49122                                                                                                     is23_0
49123                                                                                                     is_0)))
49124                                                                                                  (args
49125                                                                                                   (raise-binding-result-arity-error
49126                                                                                                    2
49127                                                                                                    args)))))
49128                                                                                              (case-lambda
49129                                                                                               ((mis_1
49130                                                                                                 is_1)
49131                                                                                                (values
49132                                                                                                 mis_1
49133                                                                                                 is_1))
49134                                                                                               (args
49135                                                                                                (raise-binding-result-arity-error
49136                                                                                                 2
49137                                                                                                 args)))))
49138                                                                                           (case-lambda
49139                                                                                            ((mis_1
49140                                                                                              is_1)
49141                                                                                             (for-loop_1
49142                                                                                              mis_1
49143                                                                                              is_1
49144                                                                                              rest_0))
49145                                                                                            (args
49146                                                                                             (raise-binding-result-arity-error
49147                                                                                              2
49148                                                                                              args))))))
49149                                                                                      (values
49150                                                                                       mis_0
49151                                                                                       is_0)))))))
49152                                                                             (for-loop_1
49153                                                                              null
49154                                                                              null
49155                                                                              module-uses_0))))
49156                                                                        (case-lambda
49157                                                                         ((mis_0
49158                                                                           is_0)
49159                                                                          (let ((app_0
49160                                                                                 (reverse$1
49161                                                                                  mis_0)))
49162                                                                            (values
49163                                                                             app_0
49164                                                                             (reverse$1
49165                                                                              is_0))))
49166                                                                         (args
49167                                                                          (raise-binding-result-arity-error
49168                                                                           2
49169                                                                           args)))))
49170                                                                     (case-lambda
49171                                                                      ((import-module-instances_0
49172                                                                        import-instances_0)
49173                                                                       (let ((phase-ns_0
49174                                                                              (namespace->namespace-at-phase
49175                                                                               ns9_0
49176                                                                               (phase+
49177                                                                                pos_0
49178                                                                                phase-shift_0))))
49179                                                                         (let ((inst_0
49180                                                                                (if single-expression?5_0
49181                                                                                  link-instance_0
49182                                                                                  (let ((temp29_0
49183                                                                                         (namespace-mpi
49184                                                                                          ns9_0)))
49185                                                                                    (let ((temp30_0
49186                                                                                           (namespace-inspector
49187                                                                                            ns9_0)))
49188                                                                                      (let ((temp31_0
49189                                                                                             (namespace-bulk-binding-registry
49190                                                                                              ns9_0)))
49191                                                                                        (let ((temp32_0
49192                                                                                               (lambda (name_0
49193                                                                                                        val_0)
49194                                                                                                 (namespace-set-transformer!
49195                                                                                                  ns9_0
49196                                                                                                  (phase+
49197                                                                                                   (sub1
49198                                                                                                    pos_0)
49199                                                                                                   phase-shift_0)
49200                                                                                                  name_0
49201                                                                                                  val_0))))
49202                                                                                          (let ((temp31_1
49203                                                                                                 temp31_0)
49204                                                                                                (temp30_1
49205                                                                                                 temp30_0)
49206                                                                                                (temp29_1
49207                                                                                                 temp29_0))
49208                                                                                            (make-instance-instance.1
49209                                                                                             temp31_1
49210                                                                                             temp30_1
49211                                                                                             phase-ns_0
49212                                                                                             phase-shift_0
49213                                                                                             temp29_1
49214                                                                                             temp32_0)))))))))
49215                                                                           (let ((linklet_0
49216                                                                                  (force-compile-linklet
49217                                                                                   (hash-ref
49218                                                                                    h_0
49219                                                                                    pos_0
49220                                                                                    #f))))
49221                                                                             (if linklet_0
49222                                                                               (begin
49223                                                                                 (let ((temp37_0
49224                                                                                        (current-code-inspector)))
49225                                                                                   (let ((temp39_0
49226                                                                                          (hash-ref
49227                                                                                           phase-to-link-extra-inspectorsss_0
49228                                                                                           pos_0
49229                                                                                           #f)))
49230                                                                                     (let ((temp37_1
49231                                                                                            temp37_0))
49232                                                                                       (check-require-access.1
49233                                                                                        3
49234                                                                                        linklet_0
49235                                                                                        module-uses_0
49236                                                                                        import-module-instances_0
49237                                                                                        temp37_1
49238                                                                                        extra-inspector_0
49239                                                                                        temp39_0))))
49240                                                                                 (let ((instantiate_0
49241                                                                                        (|#%name|
49242                                                                                         instantiate
49243                                                                                         (lambda (tail?_0)
49244                                                                                           (begin
49245                                                                                             (let ((app_0
49246                                                                                                    (list*
49247                                                                                                     top-level-instance
49248                                                                                                     link-instance_0
49249                                                                                                     inst_0
49250                                                                                                     import-instances_0)))
49251                                                                                               (instantiate-linklet
49252                                                                                                linklet_0
49253                                                                                                app_0
49254                                                                                                (let ((phase-shift_1
49255                                                                                                       (phase-
49256                                                                                                        (phase+
49257                                                                                                         pos_0
49258                                                                                                         phase-shift_0)
49259                                                                                                        (namespace-0-phase
49260                                                                                                         ns9_0))))
49261                                                                                                  (begin-unsafe
49262                                                                                                   (definitions-variables
49263                                                                                                    (namespace->definitions
49264                                                                                                     ns9_0
49265                                                                                                     phase-shift_1))))
49266                                                                                                (not
49267                                                                                                 tail?_0))))))))
49268                                                                                   (if (begin-unsafe
49269                                                                                        (eq?
49270                                                                                         pos_0
49271                                                                                         0))
49272                                                                                     instantiate_0
49273                                                                                     (if single-expression?5_0
49274                                                                                       (|#%name|
49275                                                                                        prev-thunk
49276                                                                                        (lambda (tail?_0)
49277                                                                                          (begin
49278                                                                                            (with-continuation-mark*
49279                                                                                             authentic
49280                                                                                             parameterization-key
49281                                                                                             (extend-parameterization
49282                                                                                              (continuation-mark-set-first
49283                                                                                               #f
49284                                                                                               parameterization-key)
49285                                                                                              1/current-namespace
49286                                                                                              phase-ns_0)
49287                                                                                             (instantiate_0
49288                                                                                              tail?_0)))))
49289                                                                                       (let ((ns-1_0
49290                                                                                              (namespace->namespace-at-phase
49291                                                                                               phase-ns_0
49292                                                                                               (sub1
49293                                                                                                pos_0))))
49294                                                                                         (|#%name|
49295                                                                                          prev-thunk
49296                                                                                          (lambda (tail?_0)
49297                                                                                            (begin
49298                                                                                              (with-continuation-mark*
49299                                                                                               authentic
49300                                                                                               parameterization-key
49301                                                                                               (extend-parameterization
49302                                                                                                (continuation-mark-set-first
49303                                                                                                 #f
49304                                                                                                 parameterization-key)
49305                                                                                                1/current-namespace
49306                                                                                                phase-ns_0)
49307                                                                                               (with-continuation-mark*
49308                                                                                                authentic
49309                                                                                                current-expand-context
49310                                                                                                (make-expand-context.1
49311                                                                                                 #f
49312                                                                                                 #f
49313                                                                                                 #f
49314                                                                                                 #f
49315                                                                                                 #f
49316                                                                                                 ns-1_0)
49317                                                                                                (instantiate_0
49318                                                                                                 tail?_0)))))))))))
49319                                                                               void)))))
49320                                                                      (args
49321                                                                       (raise-binding-result-arity-error
49322                                                                        2
49323                                                                        args))))))))
49324                                                           (values
49325                                                            prev-thunk_1))))
49326                                                    (for-loop_0
49327                                                     prev-thunk_1
49328                                                     (+ pos_0 -1)))
49329                                                  prev-thunk_0))))))
49330                                         (for-loop_0 void max-phase_0))))))
49331                               (|#%app| thunk_0 as-tail?7_0)))))))))))
49332           (if log-performance? (end-performance-region) (void))))))))
49333(define link-instance-from-compiled-in-memory
49334  (lambda (cim_0 to-ns_0)
49335    (let ((orig-syntax-literals_0 (compiled-in-memory-syntax-literals cim_0)))
49336      (let ((syntax-literals_0
49337             (if (not to-ns_0)
49338               orig-syntax-literals_0
49339               (if (let ((app_0 (compiled-in-memory-namespace-scopes cim_0)))
49340                     (namespace-scopes=?
49341                      app_0
49342                      (extract-namespace-scopes to-ns_0)))
49343                 orig-syntax-literals_0
49344                 (let ((len_0 (vector-length orig-syntax-literals_0)))
49345                   (begin
49346                     (if (exact-nonnegative-integer? len_0)
49347                       (void)
49348                       (raise-argument-error
49349                        'for/vector
49350                        "exact-nonnegative-integer?"
49351                        len_0))
49352                     (let ((v_0 (make-vector len_0 0)))
49353                       (begin
49354                         (if (zero? len_0)
49355                           (void)
49356                           (call-with-values
49357                            (lambda ()
49358                              (begin
49359                                (check-vector orig-syntax-literals_0)
49360                                (values
49361                                 orig-syntax-literals_0
49362                                 (unsafe-vector-length
49363                                  orig-syntax-literals_0))))
49364                            (case-lambda
49365                             ((vec_0 len_1)
49366                              (begin
49367                                #f
49368                                (letrec*
49369                                 ((for-loop_0
49370                                   (|#%name|
49371                                    for-loop
49372                                    (lambda (i_0 pos_0)
49373                                      (begin
49374                                        (if (unsafe-fx< pos_0 len_1)
49375                                          (let ((s_0
49376                                                 (unsafe-vector-ref
49377                                                  vec_0
49378                                                  pos_0)))
49379                                            (let ((i_1
49380                                                   (let ((i_1
49381                                                          (begin
49382                                                            (unsafe-vector*-set!
49383                                                             v_0
49384                                                             i_0
49385                                                             (swap-top-level-scopes
49386                                                              s_0
49387                                                              (compiled-in-memory-namespace-scopes
49388                                                               cim_0)
49389                                                              to-ns_0))
49390                                                            (unsafe-fx+
49391                                                             1
49392                                                             i_0))))
49393                                                     (values i_1))))
49394                                              (if (if (not
49395                                                       (let ((x_0 (list s_0)))
49396                                                         (unsafe-fx=
49397                                                          i_1
49398                                                          len_0)))
49399                                                    #t
49400                                                    #f)
49401                                                (for-loop_0
49402                                                 i_1
49403                                                 (unsafe-fx+ 1 pos_0))
49404                                                i_1)))
49405                                          i_0))))))
49406                                 (for-loop_0 0 0))))
49407                             (args
49408                              (raise-binding-result-arity-error 2 args)))))
49409                         v_0))))))))
49410        (make-instance
49411         'link
49412         #f
49413         'constant
49414         mpi-vector-id
49415         (compiled-in-memory-mpis cim_0)
49416         syntax-literals-id
49417         syntax-literals_0)))))
49418(define not-available (gensym 'not-available))
49419(define get-not-available (lambda () not-available))
49420(define can-direct-eval?
49421  (lambda (p_0 ns_0 self-mpi_0)
49422    (if (parsed-app? p_0)
49423      (if (can-direct-eval? (parsed-app-rator p_0) ns_0 self-mpi_0)
49424        (let ((lst_0 (parsed-app-rands p_0)))
49425          (begin
49426            (letrec*
49427             ((for-loop_0
49428               (|#%name|
49429                for-loop
49430                (lambda (result_0 lst_1)
49431                  (begin
49432                    (if (pair? lst_1)
49433                      (let ((r_0 (unsafe-car lst_1)))
49434                        (let ((rest_0 (unsafe-cdr lst_1)))
49435                          (let ((result_1
49436                                 (let ((result_1
49437                                        (can-direct-eval?
49438                                         r_0
49439                                         ns_0
49440                                         self-mpi_0)))
49441                                   (values result_1))))
49442                            (if (if (not
49443                                     (let ((x_0 (list r_0))) (not result_1)))
49444                                  #t
49445                                  #f)
49446                              (for-loop_0 result_1 rest_0)
49447                              result_1))))
49448                      result_0))))))
49449             (for-loop_0 #t lst_0))))
49450        #f)
49451      (if (parsed-id? p_0)
49452        (not (eq? (get-id-value p_0 ns_0 self-mpi_0) not-available))
49453        (if (parsed-quote? p_0) #t (if (parsed-quote-syntax? p_0) #t #f))))))
49454(define direct-eval
49455  (lambda (p_0 ns_0 self-mpi_0)
49456    (if (parsed-app? p_0)
49457      (let ((app_0 (direct-eval (parsed-app-rator p_0) ns_0 self-mpi_0)))
49458        (apply
49459         app_0
49460         (reverse$1
49461          (let ((lst_0 (parsed-app-rands p_0)))
49462            (begin
49463              (letrec*
49464               ((for-loop_0
49465                 (|#%name|
49466                  for-loop
49467                  (lambda (fold-var_0 lst_1)
49468                    (begin
49469                      (if (pair? lst_1)
49470                        (let ((r_0 (unsafe-car lst_1)))
49471                          (let ((rest_0 (unsafe-cdr lst_1)))
49472                            (let ((fold-var_1
49473                                   (let ((fold-var_1
49474                                          (cons
49475                                           (direct-eval r_0 ns_0 self-mpi_0)
49476                                           fold-var_0)))
49477                                     (values fold-var_1))))
49478                              (for-loop_0 fold-var_1 rest_0))))
49479                        fold-var_0))))))
49480               (for-loop_0 null lst_0)))))))
49481      (if (parsed-id? p_0)
49482        (get-id-value p_0 ns_0 self-mpi_0)
49483        (if (parsed-quote? p_0)
49484          (parsed-quote-datum p_0)
49485          (if (parsed-quote-syntax? p_0)
49486            (parsed-quote-syntax-datum p_0)
49487            #f))))))
49488(define get-id-value
49489  (lambda (p_0 ns_0 self-mpi_0)
49490    (let ((b_0 (parsed-id-binding p_0)))
49491      (if (parsed-primitive-id? p_0)
49492        (let ((app_0 (primitive-table '|#%kernel|)))
49493          (hash-ref app_0 (module-binding-sym b_0) get-not-available))
49494        (if (let ((or-part_0 (parsed-top-id? p_0)))
49495              (if or-part_0
49496                or-part_0
49497                (let ((or-part_1 (not b_0)))
49498                  (if or-part_1
49499                    or-part_1
49500                    (eq? self-mpi_0 (module-binding-module b_0))))))
49501          (let ((app_0
49502                 (if b_0 (module-binding-phase b_0) (namespace-phase ns_0))))
49503            (namespace-get-variable
49504             ns_0
49505             app_0
49506             (if b_0 (module-binding-sym b_0) (syntax-e$1 (parsed-s p_0)))
49507             get-not-available))
49508          (let ((mi_0
49509                 (let ((temp2_0
49510                        (1/module-path-index-resolve
49511                         (module-binding-module b_0))))
49512                   (let ((temp3_0
49513                          (phase-
49514                           (namespace-phase ns_0)
49515                           (module-binding-phase b_0))))
49516                     (let ((temp2_1 temp2_0))
49517                       (namespace->module-instance.1
49518                        #f
49519                        #f
49520                        void
49521                        ns_0
49522                        temp2_1
49523                        temp3_0))))))
49524            (if (not mi_0)
49525              not-available
49526              (if (let ((app_0 (module-binding-phase b_0)))
49527                    (let ((app_1 (module-binding-sym b_0)))
49528                      (check-single-require-access
49529                       mi_0
49530                       app_0
49531                       app_1
49532                       (module-binding-extra-inspector b_0))))
49533                (let ((app_0 (module-binding-phase b_0)))
49534                  (namespace-get-variable
49535                   (module-instance-namespace mi_0)
49536                   app_0
49537                   (module-binding-sym b_0)
49538                   get-not-available))
49539                not-available))))))))
49540(define runtime-scope (new-multi-scope))
49541(define runtime-stx (add-scope empty-syntax runtime-scope))
49542(define runtime-module-name (1/make-resolved-module-path '|#%runtime|))
49543(define runtime-mpi (1/module-path-index-join ''|#%runtime| #f))
49544(define add-runtime-primitive!
49545  (lambda (sym_0)
49546    (let ((temp1_0 (syntax-scope-set runtime-stx 0)))
49547      (let ((temp3_0
49548             (make-module-binding.1
49549              #f
49550              null
49551              #f
49552              #f
49553              unsafe-undefined
49554              unsafe-undefined
49555              0
49556              unsafe-undefined
49557              runtime-mpi
49558              0
49559              sym_0)))
49560        (let ((temp1_1 temp1_0))
49561          (add-binding-in-scopes!.1 #f temp1_1 sym_0 temp3_0))))))
49562(define effect_2793
49563  (begin
49564    (void
49565     (begin
49566       (add-runtime-primitive! 'values)
49567       (add-runtime-primitive! 'cons)
49568       (add-runtime-primitive! 'list)
49569       (add-runtime-primitive! 'make-struct-type)
49570       (add-runtime-primitive! 'make-struct-type-property)
49571       (add-runtime-primitive! 'gensym)
49572       (add-runtime-primitive! 'string->uninterned-symbol)))
49573    (void)))
49574(define runtime-instances
49575  '(|#%kernel|
49576    |#%paramz|
49577    |#%foreign|
49578    |#%unsafe|
49579    |#%flfxnum|
49580    |#%extfl|
49581    |#%network|
49582    |#%place|
49583    |#%futures|))
49584(define box-cons! (lambda (b_0 v_0) (set-box! b_0 (cons v_0 (unbox b_0)))))
49585(define box-clear!
49586  (lambda (b_0) (begin0 (reverse$1 (unbox b_0)) (set-box! b_0 null))))
49587(define finish_2589
49588  (make-struct-type-install-properties
49589   '(lift-context)
49590   3
49591   0
49592   #f
49593   (list (cons prop:authentic #t))
49594   (current-inspector)
49595   #f
49596   '(0 1 2)
49597   #f
49598   'lift-context))
49599(define struct:lift-context
49600  (make-record-type-descriptor*
49601   'lift-context
49602   #f
49603   (|#%nongenerative-uid| lift-context)
49604   #f
49605   #f
49606   3
49607   0))
49608(define effect_1545 (finish_2589 struct:lift-context))
49609(define lift-context1.1
49610  (|#%name|
49611   lift-context
49612   (record-constructor
49613    (make-record-constructor-descriptor struct:lift-context #f #f))))
49614(define lift-context?
49615  (|#%name| lift-context? (record-predicate struct:lift-context)))
49616(define lift-context-convert
49617  (|#%name| lift-context-convert (record-accessor struct:lift-context 0)))
49618(define lift-context-lifts
49619  (|#%name| lift-context-lifts (record-accessor struct:lift-context 1)))
49620(define lift-context-module*-ok?
49621  (|#%name| lift-context-module*-ok? (record-accessor struct:lift-context 2)))
49622(define finish_2698
49623  (make-struct-type-install-properties
49624   '(lifted-bind)
49625   3
49626   0
49627   #f
49628   (list (cons prop:authentic #t))
49629   (current-inspector)
49630   #f
49631   '(0 1 2)
49632   #f
49633   'lifted-bind))
49634(define struct:lifted-bind
49635  (make-record-type-descriptor*
49636   'lifted-bind
49637   #f
49638   (|#%nongenerative-uid| lifted-bind)
49639   #f
49640   #f
49641   3
49642   0))
49643(define effect_1767 (finish_2698 struct:lifted-bind))
49644(define lifted-bind2.1
49645  (|#%name|
49646   lifted-bind
49647   (record-constructor
49648    (make-record-constructor-descriptor struct:lifted-bind #f #f))))
49649(define lifted-bind?
49650  (|#%name| lifted-bind? (record-predicate struct:lifted-bind)))
49651(define lifted-bind-ids
49652  (|#%name| lifted-bind-ids (record-accessor struct:lifted-bind 0)))
49653(define lifted-bind-keys
49654  (|#%name| lifted-bind-keys (record-accessor struct:lifted-bind 1)))
49655(define lifted-bind-rhs
49656  (|#%name| lifted-bind-rhs (record-accessor struct:lifted-bind 2)))
49657(define make-lift-context.1
49658  (|#%name|
49659   make-lift-context
49660   (lambda (module*-ok?3_0 convert5_0)
49661     (begin (lift-context1.1 convert5_0 (box null) module*-ok?3_0)))))
49662(define add-lifted!
49663  (lambda (lifts_0 ids_0 rhs_0 phase_0)
49664    (call-with-values
49665     (lambda () (|#%app| (lift-context-convert lifts_0) ids_0 rhs_0 phase_0))
49666     (case-lambda
49667      ((lifted-ids_0 lifted_0)
49668       (begin (box-cons! (lift-context-lifts lifts_0) lifted_0) lifted-ids_0))
49669      (args (raise-binding-result-arity-error 2 args))))))
49670(define get-and-clear-lifts!
49671  (lambda (lifts_0) (box-clear! (lift-context-lifts lifts_0))))
49672(define make-local-lift
49673  (lambda (lift-env_0 counter_0 local-sym_0)
49674    (lambda (ids_0 rhs_0 phase_0)
49675      (let ((keys_0
49676             (reverse$1
49677              (begin
49678                (letrec*
49679                 ((for-loop_0
49680                   (|#%name|
49681                    for-loop
49682                    (lambda (fold-var_0 lst_0)
49683                      (begin
49684                        (if (pair? lst_0)
49685                          (let ((id_0 (unsafe-car lst_0)))
49686                            (let ((rest_0 (unsafe-cdr lst_0)))
49687                              (let ((fold-var_1
49688                                     (let ((fold-var_1
49689                                            (cons
49690                                             (let ((key_0
49691                                                    (add-local-binding!.1
49692                                                     #f
49693                                                     #f
49694                                                     local-sym_0
49695                                                     id_0
49696                                                     phase_0
49697                                                     counter_0)))
49698                                               (begin
49699                                                 (set-box!
49700                                                  lift-env_0
49701                                                  (let ((env_0
49702                                                         (unbox lift-env_0)))
49703                                                    (begin-unsafe
49704                                                     (hash-set
49705                                                      env_0
49706                                                      key_0
49707                                                      variable))))
49708                                                 key_0))
49709                                             fold-var_0)))
49710                                       (values fold-var_1))))
49711                                (for-loop_0 fold-var_1 rest_0))))
49712                          fold-var_0))))))
49713                 (for-loop_0 null ids_0))))))
49714        (values ids_0 (lifted-bind2.1 ids_0 keys_0 rhs_0))))))
49715(define make-top-level-lift
49716  (lambda (ctx_0)
49717    (lambda (ids_0 rhs_0 phase_0)
49718      (let ((post-scope_0
49719             (post-expansion-scope
49720              (let ((v_0
49721                     (namespace-get-root-expand-ctx
49722                      (begin-unsafe
49723                       (expand-context/inner-namespace
49724                        (root-expand-context/outer-inner ctx_0))))))
49725                (begin-unsafe
49726                 (root-expand-context/outer-post-expansion v_0))))))
49727        (let ((tl-ids_0
49728               (reverse$1
49729                (begin
49730                  (letrec*
49731                   ((for-loop_0
49732                     (|#%name|
49733                      for-loop
49734                      (lambda (fold-var_0 lst_0)
49735                        (begin
49736                          (if (pair? lst_0)
49737                            (let ((id_0 (unsafe-car lst_0)))
49738                              (let ((rest_0 (unsafe-cdr lst_0)))
49739                                (let ((fold-var_1
49740                                       (let ((fold-var_1
49741                                              (cons
49742                                               (add-scope id_0 post-scope_0)
49743                                               fold-var_0)))
49744                                         (values fold-var_1))))
49745                                  (for-loop_0 fold-var_1 rest_0))))
49746                            fold-var_0))))))
49747                   (for-loop_0 null ids_0))))))
49748          (let ((syms_0 (select-defined-syms-and-bind!/ctx tl-ids_0 ctx_0)))
49749            (values tl-ids_0 (lifted-bind2.1 tl-ids_0 syms_0 rhs_0))))))))
49750(define wrap-lifts-as-let
49751  (lambda (lifts_0 body_0 phase_0)
49752    (datum->syntax$1
49753     #f
49754     (let ((lst_0 (reverse$1 lifts_0)))
49755       (begin
49756         (letrec*
49757          ((for-loop_0
49758            (|#%name|
49759             for-loop
49760             (lambda (body_1 lst_1)
49761               (begin
49762                 (if (pair? lst_1)
49763                   (let ((lift_0 (unsafe-car lst_1)))
49764                     (let ((rest_0 (unsafe-cdr lst_1)))
49765                       (let ((body_2
49766                              (let ((body_2
49767                                     (begin
49768                                       (if (lifted-bind? lift_0)
49769                                         (void)
49770                                         (error
49771                                          "non-bindings in `lift-context`"))
49772                                       (let ((app_0
49773                                              (datum->syntax$1
49774                                               (syntax-shift-phase-level$1
49775                                                core-stx
49776                                                phase_0)
49777                                               'let-values)))
49778                                         (list
49779                                          app_0
49780                                          (list
49781                                           (list
49782                                            (lifted-bind-ids lift_0)
49783                                            (lifted-bind-rhs lift_0)))
49784                                          body_1)))))
49785                                (values body_2))))
49786                         (for-loop_0 body_2 rest_0))))
49787                   body_1))))))
49788          (for-loop_0 body_0 lst_0)))))))
49789(define wrap-lifts-as-begin.1
49790  (|#%name|
49791   wrap-lifts-as-begin
49792   (lambda (adjust-body8_0 adjust-form7_0 lifts11_0 body12_0 phase13_0)
49793     (begin
49794       (let ((adjust-form_0
49795              (if (eq? adjust-form7_0 unsafe-undefined)
49796                values
49797                adjust-form7_0)))
49798         (let ((adjust-body_0
49799                (if (eq? adjust-body8_0 unsafe-undefined)
49800                  values
49801                  adjust-body8_0)))
49802           (datum->syntax$1
49803            #f
49804            (let ((app_0
49805                   (datum->syntax$1
49806                    (syntax-shift-phase-level$1 core-stx phase13_0)
49807                    'begin)))
49808              (cons
49809               app_0
49810               (let ((app_1
49811                      (reverse$1
49812                       (begin
49813                         (letrec*
49814                          ((for-loop_0
49815                            (|#%name|
49816                             for-loop
49817                             (lambda (fold-var_0 lst_0)
49818                               (begin
49819                                 (if (pair? lst_0)
49820                                   (let ((lift_0 (unsafe-car lst_0)))
49821                                     (let ((rest_0 (unsafe-cdr lst_0)))
49822                                       (let ((fold-var_1
49823                                              (let ((fold-var_1
49824                                                     (cons
49825                                                      (|#%app|
49826                                                       adjust-form_0
49827                                                       (if (lifted-bind?
49828                                                            lift_0)
49829                                                         (datum->syntax$1
49830                                                          #f
49831                                                          (list
49832                                                           (datum->syntax$1
49833                                                            (syntax-shift-phase-level$1
49834                                                             core-stx
49835                                                             phase13_0)
49836                                                            'define-values)
49837                                                           (lifted-bind-ids
49838                                                            lift_0)
49839                                                           (lifted-bind-rhs
49840                                                            lift_0)))
49841                                                         lift_0))
49842                                                      fold-var_0)))
49843                                                (values fold-var_1))))
49844                                         (for-loop_0 fold-var_1 rest_0))))
49845                                   fold-var_0))))))
49846                          (for-loop_0 null lifts11_0))))))
49847                 (append
49848                  app_1
49849                  (list (|#%app| adjust-body_0 body12_0)))))))))))))
49850(define get-lifts-as-lists
49851  (lambda (lifts_0)
49852    (reverse$1
49853     (begin
49854       (letrec*
49855        ((for-loop_0
49856          (|#%name|
49857           for-loop
49858           (lambda (fold-var_0 lst_0)
49859             (begin
49860               (if (pair? lst_0)
49861                 (let ((lift_0 (unsafe-car lst_0)))
49862                   (let ((rest_0 (unsafe-cdr lst_0)))
49863                     (let ((fold-var_1
49864                            (cons
49865                             (list
49866                              (lifted-bind-ids lift_0)
49867                              (lifted-bind-keys lift_0)
49868                              (lifted-bind-rhs lift_0))
49869                             fold-var_0)))
49870                       (let ((fold-var_2 (values fold-var_1)))
49871                         (for-loop_0 fold-var_2 rest_0)))))
49872                 fold-var_0))))))
49873        (for-loop_0 null lifts_0))))))
49874(define finish_3138
49875  (make-struct-type-install-properties
49876   '(module-lift-context)
49877   3
49878   0
49879   #f
49880   (list (cons prop:authentic #t))
49881   (current-inspector)
49882   #f
49883   '(0 1 2)
49884   #f
49885   'module-lift-context))
49886(define struct:module-lift-context
49887  (make-record-type-descriptor*
49888   'module-lift-context
49889   #f
49890   (|#%nongenerative-uid| module-lift-context)
49891   #f
49892   #f
49893   3
49894   0))
49895(define effect_2649 (finish_3138 struct:module-lift-context))
49896(define module-lift-context15.1
49897  (|#%name|
49898   module-lift-context
49899   (record-constructor
49900    (make-record-constructor-descriptor struct:module-lift-context #f #f))))
49901(define module-lift-context?
49902  (|#%name|
49903   module-lift-context?
49904   (record-predicate struct:module-lift-context)))
49905(define module-lift-context-wrt-phase
49906  (|#%name|
49907   module-lift-context-wrt-phase
49908   (record-accessor struct:module-lift-context 0)))
49909(define module-lift-context-lifts
49910  (|#%name|
49911   module-lift-context-lifts
49912   (record-accessor struct:module-lift-context 1)))
49913(define module-lift-context-module*-ok?
49914  (|#%name|
49915   module-lift-context-module*-ok?
49916   (record-accessor struct:module-lift-context 2)))
49917(define make-module-lift-context
49918  (lambda (phase_0 module*-ok?_0)
49919    (module-lift-context15.1 phase_0 (box null) module*-ok?_0)))
49920(define get-and-clear-module-lifts!
49921  (lambda (module-lifts_0)
49922    (box-clear! (module-lift-context-lifts module-lifts_0))))
49923(define add-lifted-module!
49924  (lambda (module-lifts_0 s_0 phase_0)
49925    (begin
49926      (if (let ((or-part_0
49927                 (if (module-lift-context? module-lifts_0)
49928                   (module-lift-context-module*-ok? module-lifts_0)
49929                   #f)))
49930            (if or-part_0
49931              or-part_0
49932              (if (lift-context? module-lifts_0)
49933                (lift-context-module*-ok? module-lifts_0)
49934                #f)))
49935        (void)
49936        (let ((tmp_0 (core-form-sym s_0 phase_0)))
49937          (if (eq? tmp_0 'module)
49938            (void)
49939            (if (eq? tmp_0 'module*)
49940              (raise-arguments-error
49941               'syntax-local-lift-module
49942               "cannot lift `module*' to a top-level context"
49943               "syntax"
49944               s_0)
49945              (raise-arguments-error
49946               'syntax-local-lift-module
49947               "not a `module' declaration"
49948               "syntax"
49949               s_0)))))
49950      (if (module-lift-context? module-lifts_0)
49951        (box-cons! (module-lift-context-lifts module-lifts_0) s_0)
49952        (if (lift-context? module-lifts_0)
49953          (box-cons! (lift-context-lifts module-lifts_0) s_0)
49954          (error
49955           "internal error: unrecognized lift-context type for module lift"))))))
49956(define finish_2859
49957  (make-struct-type-install-properties
49958   '(require-lift-context)
49959   3
49960   0
49961   #f
49962   (list (cons prop:authentic #t))
49963   (current-inspector)
49964   #f
49965   '(0 1 2)
49966   #f
49967   'require-lift-context))
49968(define struct:require-lift-context
49969  (make-record-type-descriptor*
49970   'require-lift-context
49971   #f
49972   (|#%nongenerative-uid| require-lift-context)
49973   #f
49974   #f
49975   3
49976   0))
49977(define effect_3057 (finish_2859 struct:require-lift-context))
49978(define require-lift-context16.1
49979  (|#%name|
49980   require-lift-context
49981   (record-constructor
49982    (make-record-constructor-descriptor struct:require-lift-context #f #f))))
49983(define require-lift-context?
49984  (|#%name|
49985   require-lift-context?
49986   (record-predicate struct:require-lift-context)))
49987(define require-lift-context-do-require
49988  (|#%name|
49989   require-lift-context-do-require
49990   (record-accessor struct:require-lift-context 0)))
49991(define require-lift-context-wrt-phase
49992  (|#%name|
49993   require-lift-context-wrt-phase
49994   (record-accessor struct:require-lift-context 1)))
49995(define require-lift-context-requires
49996  (|#%name|
49997   require-lift-context-requires
49998   (record-accessor struct:require-lift-context 2)))
49999(define make-require-lift-context
50000  (let ((make-require-lift-context_0
50001         (|#%name|
50002          make-require-lift-context
50003          (lambda (wrt-phase18_0 do-require19_0 initial-lifts17_0)
50004            (begin
50005              (require-lift-context16.1
50006               do-require19_0
50007               wrt-phase18_0
50008               (box initial-lifts17_0)))))))
50009    (case-lambda
50010     ((wrt-phase_0 do-require_0)
50011      (make-require-lift-context_0 wrt-phase_0 do-require_0 null))
50012     ((wrt-phase_0 do-require_0 initial-lifts17_0)
50013      (make-require-lift-context_0
50014       wrt-phase_0
50015       do-require_0
50016       initial-lifts17_0)))))
50017(define get-require-lifts
50018  (lambda (require-lifts_0)
50019    (unbox (require-lift-context-requires require-lifts_0))))
50020(define get-and-clear-require-lifts!
50021  (lambda (require-lifts_0)
50022    (box-clear! (require-lift-context-requires require-lifts_0))))
50023(define add-lifted-require!
50024  (lambda (require-lifts_0 s_0 phase_0)
50025    (begin
50026      (|#%app| (require-lift-context-do-require require-lifts_0) s_0 phase_0)
50027      (box-cons! (require-lift-context-requires require-lifts_0) s_0))))
50028(define finish_2755
50029  (make-struct-type-install-properties
50030   '(to-module-lift-context)
50031   4
50032   0
50033   #f
50034   (list (cons prop:authentic #t))
50035   (current-inspector)
50036   #f
50037   '(0 1 2 3)
50038   #f
50039   'to-module-lift-context))
50040(define struct:to-module-lift-context
50041  (make-record-type-descriptor*
50042   'to-module-lift-context
50043   #f
50044   (|#%nongenerative-uid| to-module-lift-context)
50045   #f
50046   #f
50047   4
50048   0))
50049(define effect_3069 (finish_2755 struct:to-module-lift-context))
50050(define to-module-lift-context20.1
50051  (|#%name|
50052   to-module-lift-context
50053   (record-constructor
50054    (make-record-constructor-descriptor struct:to-module-lift-context #f #f))))
50055(define to-module-lift-context?
50056  (|#%name|
50057   to-module-lift-context?
50058   (record-predicate struct:to-module-lift-context)))
50059(define to-module-lift-context-wrt-phase
50060  (|#%name|
50061   to-module-lift-context-wrt-phase
50062   (record-accessor struct:to-module-lift-context 0)))
50063(define to-module-lift-context-provides
50064  (|#%name|
50065   to-module-lift-context-provides
50066   (record-accessor struct:to-module-lift-context 1)))
50067(define to-module-lift-context-end-as-expressions?
50068  (|#%name|
50069   to-module-lift-context-end-as-expressions?
50070   (record-accessor struct:to-module-lift-context 2)))
50071(define to-module-lift-context-ends
50072  (|#%name|
50073   to-module-lift-context-ends
50074   (record-accessor struct:to-module-lift-context 3)))
50075(define make-to-module-lift-context.1
50076  (|#%name|
50077   make-to-module-lift-context
50078   (lambda (end-as-expressions?22_0 shared-module-ends21_0 phase25_0)
50079     (begin
50080       (to-module-lift-context20.1
50081        phase25_0
50082        (box null)
50083        end-as-expressions?22_0
50084        shared-module-ends21_0)))))
50085(define make-shared-module-ends (lambda () (box null)))
50086(define get-and-clear-end-lifts!
50087  (lambda (to-module-lifts_0)
50088    (box-clear! (to-module-lift-context-ends to-module-lifts_0))))
50089(define get-and-clear-provide-lifts!
50090  (lambda (to-module-lifts_0)
50091    (box-clear! (to-module-lift-context-provides to-module-lifts_0))))
50092(define add-lifted-to-module-provide!
50093  (lambda (to-module-lifts_0 s_0 phase_0)
50094    (box-cons! (to-module-lift-context-provides to-module-lifts_0) s_0)))
50095(define add-lifted-to-module-end!
50096  (lambda (to-module-lifts_0 s_0 phase_0)
50097    (box-cons! (to-module-lift-context-ends to-module-lifts_0) s_0)))
50098(define finish_2433
50099  (make-struct-type-install-properties
50100   '(expanded-syntax)
50101   2
50102   0
50103   #f
50104   null
50105   (current-inspector)
50106   #f
50107   '(0 1)
50108   #f
50109   'already-expanded))
50110(define struct:already-expanded
50111  (make-record-type-descriptor*
50112   'expanded-syntax
50113   #f
50114   (|#%nongenerative-uid| expanded-syntax)
50115   #f
50116   #f
50117   2
50118   0))
50119(define effect_2568 (finish_2433 struct:already-expanded))
50120(define already-expanded1.1
50121  (|#%name|
50122   already-expanded
50123   (record-constructor
50124    (make-record-constructor-descriptor struct:already-expanded #f #f))))
50125(define already-expanded?_1849
50126  (|#%name| expanded-syntax? (record-predicate struct:already-expanded)))
50127(define already-expanded?
50128  (|#%name|
50129   expanded-syntax?
50130   (lambda (v)
50131     (if (already-expanded?_1849 v)
50132       #t
50133       ($value
50134        (if (impersonator? v)
50135          (already-expanded?_1849 (impersonator-val v))
50136          #f))))))
50137(define already-expanded-s_2877
50138  (|#%name| expanded-syntax-s (record-accessor struct:already-expanded 0)))
50139(define already-expanded-s
50140  (|#%name|
50141   expanded-syntax-s
50142   (lambda (s)
50143     (if (already-expanded?_1849 s)
50144       (already-expanded-s_2877 s)
50145       ($value
50146        (impersonate-ref
50147         already-expanded-s_2877
50148         struct:already-expanded
50149         0
50150         s
50151         'expanded-syntax
50152         's))))))
50153(define already-expanded-binding-layer_2482
50154  (|#%name|
50155   expanded-syntax-binding-layer
50156   (record-accessor struct:already-expanded 1)))
50157(define already-expanded-binding-layer
50158  (|#%name|
50159   expanded-syntax-binding-layer
50160   (lambda (s)
50161     (if (already-expanded?_1849 s)
50162       (already-expanded-binding-layer_2482 s)
50163       ($value
50164        (impersonate-ref
50165         already-expanded-binding-layer_2482
50166         struct:already-expanded
50167         1
50168         s
50169         'expanded-syntax
50170         'binding-layer))))))
50171(define-values
50172 (1/prop:liberal-define-context
50173  has-liberal-define-context-property?
50174  liberal-define-context-value)
50175 (make-struct-type-property 'liberal-define-context))
50176(define finish_2095
50177  (make-struct-type-install-properties
50178   '(liberal-define-context)
50179   0
50180   0
50181   #f
50182   (list (cons 1/prop:liberal-define-context #t))
50183   (current-inspector)
50184   #f
50185   '()
50186   #f
50187   'make-liberal-define-context))
50188(define struct:liberal-define-context
50189  (make-record-type-descriptor*
50190   'liberal-define-context
50191   #f
50192   (|#%nongenerative-uid| liberal-define-context)
50193   #f
50194   #f
50195   0
50196   0))
50197(define effect_2849 (finish_2095 struct:liberal-define-context))
50198(define make-liberal-define-context
50199  (|#%name|
50200   make-liberal-define-context
50201   (record-constructor
50202    (make-record-constructor-descriptor struct:liberal-define-context #f #f))))
50203(define 1/liberal-define-context?_2641
50204  (|#%name|
50205   liberal-define-context?
50206   (record-predicate struct:liberal-define-context)))
50207(define 1/liberal-define-context?
50208  (|#%name|
50209   liberal-define-context?
50210   (lambda (v)
50211     (if (1/liberal-define-context?_2641 v)
50212       #t
50213       ($value
50214        (if (impersonator? v)
50215          (1/liberal-define-context?_2641 (impersonator-val v))
50216          #f))))))
50217(define-values
50218 (1/prop:expansion-contexts expansion-contexts? expansion-contexts-ref)
50219 (make-struct-type-property
50220  'expansion-contexts
50221  (lambda (v_0 info_0)
50222    (begin
50223      (if (if (list? v_0)
50224            (begin
50225              (letrec*
50226               ((for-loop_0
50227                 (|#%name|
50228                  for-loop
50229                  (lambda (result_0 lst_0)
50230                    (begin
50231                      (if (pair? lst_0)
50232                        (let ((s_0 (unsafe-car lst_0)))
50233                          (let ((rest_0 (unsafe-cdr lst_0)))
50234                            (let ((result_1
50235                                   (let ((result_1
50236                                          (memq
50237                                           s_0
50238                                           '(expression
50239                                             top-level
50240                                             module
50241                                             module-begin
50242                                             definition-context))))
50243                                     (values result_1))))
50244                              (if (if (not
50245                                       (let ((x_0 (list s_0))) (not result_1)))
50246                                    #t
50247                                    #f)
50248                                (for-loop_0 result_1 rest_0)
50249                                result_1))))
50250                        result_0))))))
50251               (for-loop_0 #t v_0)))
50252            #f)
50253        (void)
50254        (raise-argument-error
50255         'guard-for-prop:expansion-contexts
50256         "(listof (or/c 'expression 'top-level 'module 'module-begin 'definition-context))"
50257         v_0))
50258      v_0))))
50259(define not-in-this-expand-context?
50260  (lambda (t_0 ctx_0)
50261    (if (expansion-contexts? t_0)
50262      (not
50263       (let ((app_0
50264              (context->symbol
50265               (begin-unsafe (expand-context/outer-context ctx_0)))))
50266         (memq app_0 (expansion-contexts-ref t_0))))
50267      #f)))
50268(define context->symbol
50269  (lambda (context_0) (if (symbol? context_0) context_0 'definition-context)))
50270(define avoid-current-expand-context
50271  (lambda (s_0 t_0 ctx_0)
50272    (let ((wrap_0
50273           (|#%name|
50274            wrap
50275            (lambda (sym_0)
50276              (begin
50277                (datum->syntax$1
50278                 #f
50279                 (list
50280                  (syntax-shift-phase-level$1
50281                   (datum->syntax$1 core-stx sym_0)
50282                   (begin-unsafe
50283                    (expand-context/inner-phase
50284                     (root-expand-context/outer-inner ctx_0))))
50285                  s_0)))))))
50286      (let ((fail_0
50287             (|#%name|
50288              fail
50289              (lambda ()
50290                (begin
50291                  (raise-syntax-error$1
50292                   #f
50293                   (format
50294                    "not allowed in context\n  expansion context: ~a"
50295                    (context->symbol
50296                     (begin-unsafe (expand-context/outer-context ctx_0))))
50297                   s_0))))))
50298        (let ((tmp_0
50299               (context->symbol
50300                (begin-unsafe (expand-context/outer-context ctx_0)))))
50301          (if (eq? tmp_0 'module-begin)
50302            (wrap_0 'begin)
50303            (if (if (eq? tmp_0 'module)
50304                  #t
50305                  (if (eq? tmp_0 'top-level)
50306                    #t
50307                    (eq? tmp_0 'definition-context)))
50308              (if (memq 'expression (expansion-contexts-ref t_0))
50309                (wrap_0 '|#%expression|)
50310                (fail_0))
50311              (fail_0))))))))
50312(define finish_2318
50313  (make-struct-type-install-properties
50314   '(reference-record)
50315   3
50316   0
50317   #f
50318   (list (cons prop:authentic #t))
50319   #f
50320   #f
50321   '()
50322   #f
50323   'reference-record))
50324(define struct:reference-record
50325  (make-record-type-descriptor*
50326   'reference-record
50327   #f
50328   (|#%nongenerative-uid| reference-record)
50329   #f
50330   #f
50331   3
50332   7))
50333(define effect_2371 (finish_2318 struct:reference-record))
50334(define reference-record1.1
50335  (|#%name|
50336   reference-record
50337   (record-constructor
50338    (make-record-constructor-descriptor struct:reference-record #f #f))))
50339(define reference-record?
50340  (|#%name| reference-record? (record-predicate struct:reference-record)))
50341(define reference-record-already-bound
50342  (|#%name|
50343   reference-record-already-bound
50344   (record-accessor struct:reference-record 0)))
50345(define reference-record-reference-before-bound
50346  (|#%name|
50347   reference-record-reference-before-bound
50348   (record-accessor struct:reference-record 1)))
50349(define reference-record-all-referenced?
50350  (|#%name|
50351   reference-record-all-referenced?
50352   (record-accessor struct:reference-record 2)))
50353(define set-reference-record-already-bound!
50354  (|#%name|
50355   set-reference-record-already-bound!
50356   (record-mutator struct:reference-record 0)))
50357(define set-reference-record-reference-before-bound!
50358  (|#%name|
50359   set-reference-record-reference-before-bound!
50360   (record-mutator struct:reference-record 1)))
50361(define set-reference-record-all-referenced?!
50362  (|#%name|
50363   set-reference-record-all-referenced?!
50364   (record-mutator struct:reference-record 2)))
50365(define make-reference-record
50366  (lambda () (let ((app_0 (seteq))) (reference-record1.1 app_0 (seteq) #f))))
50367(define reference-record-used!
50368  (lambda (rr_0 key_0)
50369    (if (let ((s_0 (reference-record-already-bound rr_0)))
50370          (begin-unsafe (hash-ref s_0 key_0 #f)))
50371      (void)
50372      (set-reference-record-reference-before-bound!
50373       rr_0
50374       (let ((s_0 (reference-record-reference-before-bound rr_0)))
50375         (begin-unsafe (hash-set s_0 key_0 #t)))))))
50376(define reference-records-all-used!
50377  (lambda (rrs_0)
50378    (begin
50379      (begin
50380        (letrec*
50381         ((for-loop_0
50382           (|#%name|
50383            for-loop
50384            (lambda (lst_0)
50385              (begin
50386                (if (pair? lst_0)
50387                  (let ((rr_0 (unsafe-car lst_0)))
50388                    (let ((rest_0 (unsafe-cdr lst_0)))
50389                      (let ((next-k-proc_0
50390                             (|#%name|
50391                              next-k-proc
50392                              (lambda () (begin (for-loop_0 rest_0))))))
50393                        (if (reference-record-all-referenced? rr_0)
50394                          (values)
50395                          (begin
50396                            (set-reference-record-all-referenced?! rr_0 #t)
50397                            (next-k-proc_0))))))
50398                  (values)))))))
50399         (for-loop_0 rrs_0)))
50400      (void))))
50401(define reference-record-bound!
50402  (lambda (rr_0 keys_0)
50403    (begin
50404      (set-reference-record-already-bound!
50405       rr_0
50406       (begin
50407         (letrec*
50408          ((for-loop_0
50409            (|#%name|
50410             for-loop
50411             (lambda (ab_0 lst_0)
50412               (begin
50413                 (if (pair? lst_0)
50414                   (let ((key_0 (unsafe-car lst_0)))
50415                     (let ((rest_0 (unsafe-cdr lst_0)))
50416                       (let ((ab_1
50417                              (let ((ab_1
50418                                     (begin-unsafe (hash-set ab_0 key_0 #t))))
50419                                (values ab_1))))
50420                         (for-loop_0 ab_1 rest_0))))
50421                   ab_0))))))
50422          (for-loop_0 (reference-record-already-bound rr_0) keys_0))))
50423      (set-reference-record-reference-before-bound!
50424       rr_0
50425       (begin
50426         (letrec*
50427          ((for-loop_0
50428            (|#%name|
50429             for-loop
50430             (lambda (rbb_0 lst_0)
50431               (begin
50432                 (if (pair? lst_0)
50433                   (let ((key_0 (unsafe-car lst_0)))
50434                     (let ((rest_0 (unsafe-cdr lst_0)))
50435                       (let ((rbb_1
50436                              (let ((rbb_1
50437                                     (begin-unsafe (hash-remove rbb_0 key_0))))
50438                                (values rbb_1))))
50439                         (for-loop_0 rbb_1 rest_0))))
50440                   rbb_0))))))
50441          (for-loop_0
50442           (reference-record-reference-before-bound rr_0)
50443           keys_0)))))))
50444(define reference-record-forward-references?
50445  (lambda (rr_0)
50446    (let ((or-part_0 (reference-record-all-referenced? rr_0)))
50447      (if or-part_0
50448        or-part_0
50449        (positive?
50450         (let ((s_0 (reference-record-reference-before-bound rr_0)))
50451           (begin-unsafe (hash-count s_0))))))))
50452(define reference-record-clear!
50453  (lambda (rr_0)
50454    (begin
50455      (set-reference-record-already-bound! rr_0 #f)
50456      (set-reference-record-reference-before-bound! rr_0 #f))))
50457(define call-expand-observe
50458  (lambda (obs_0 key_0 . args_0)
50459    (begin
50460      (let ((c1_0 (hash-ref key->arity key_0 #f)))
50461        (if c1_0
50462          (if (let ((or-part_0 (eq? c1_0 'any)))
50463                (if or-part_0 or-part_0 (eqv? (length args_0) c1_0)))
50464            (void)
50465            (error 'call-expand-observe "wrong arity for ~s: ~e" key_0 args_0))
50466          (error 'call-expand-observe "bad key: ~s" key_0)))
50467      (|#%app| obs_0 key_0 (if (null? args_0) #f (apply list* args_0))))))
50468(define key->arity hash3012)
50469(define rebuild.1
50470  (|#%name|
50471   rebuild
50472   (lambda (track?1_0 orig-s3_0 new4_0)
50473     (begin
50474       (datum->syntax$1
50475        orig-s3_0
50476        new4_0
50477        orig-s3_0
50478        (if track?1_0 orig-s3_0 #f))))))
50479(define finish_2886
50480  (make-struct-type-install-properties
50481   '(expanded+parsed)
50482   2
50483   0
50484   #f
50485   (list (cons prop:authentic #t))
50486   (current-inspector)
50487   #f
50488   '(0 1)
50489   #f
50490   'expanded+parsed))
50491(define struct:expanded+parsed
50492  (make-record-type-descriptor*
50493   'expanded+parsed
50494   #f
50495   (|#%nongenerative-uid| expanded+parsed)
50496   #f
50497   #f
50498   2
50499   0))
50500(define effect_2270 (finish_2886 struct:expanded+parsed))
50501(define expanded+parsed1.1
50502  (|#%name|
50503   expanded+parsed
50504   (record-constructor
50505    (make-record-constructor-descriptor struct:expanded+parsed #f #f))))
50506(define expanded+parsed?
50507  (|#%name| expanded+parsed? (record-predicate struct:expanded+parsed)))
50508(define expanded+parsed-s
50509  (|#%name| expanded+parsed-s (record-accessor struct:expanded+parsed 0)))
50510(define expanded+parsed-parsed
50511  (|#%name| expanded+parsed-parsed (record-accessor struct:expanded+parsed 1)))
50512(define finish_2856
50513  (make-struct-type-install-properties
50514   '(semi-parsed-define-values)
50515   4
50516   0
50517   #f
50518   (list (cons prop:authentic #t))
50519   (current-inspector)
50520   #f
50521   '(0 1 2 3)
50522   #f
50523   'semi-parsed-define-values))
50524(define struct:semi-parsed-define-values
50525  (make-record-type-descriptor*
50526   'semi-parsed-define-values
50527   #f
50528   (|#%nongenerative-uid| semi-parsed-define-values)
50529   #f
50530   #f
50531   4
50532   0))
50533(define effect_2353 (finish_2856 struct:semi-parsed-define-values))
50534(define semi-parsed-define-values2.1
50535  (|#%name|
50536   semi-parsed-define-values
50537   (record-constructor
50538    (make-record-constructor-descriptor
50539     struct:semi-parsed-define-values
50540     #f
50541     #f))))
50542(define semi-parsed-define-values?
50543  (|#%name|
50544   semi-parsed-define-values?
50545   (record-predicate struct:semi-parsed-define-values)))
50546(define semi-parsed-define-values-s
50547  (|#%name|
50548   semi-parsed-define-values-s
50549   (record-accessor struct:semi-parsed-define-values 0)))
50550(define semi-parsed-define-values-syms
50551  (|#%name|
50552   semi-parsed-define-values-syms
50553   (record-accessor struct:semi-parsed-define-values 1)))
50554(define semi-parsed-define-values-ids
50555  (|#%name|
50556   semi-parsed-define-values-ids
50557   (record-accessor struct:semi-parsed-define-values 2)))
50558(define semi-parsed-define-values-rhs
50559  (|#%name|
50560   semi-parsed-define-values-rhs
50561   (record-accessor struct:semi-parsed-define-values 3)))
50562(define finish_2970
50563  (make-struct-type-install-properties
50564   '(semi-parsed-begin-for-syntax)
50565   2
50566   0
50567   #f
50568   (list (cons prop:authentic #t))
50569   (current-inspector)
50570   #f
50571   '(0 1)
50572   #f
50573   'semi-parsed-begin-for-syntax))
50574(define struct:semi-parsed-begin-for-syntax
50575  (make-record-type-descriptor*
50576   'semi-parsed-begin-for-syntax
50577   #f
50578   (|#%nongenerative-uid| semi-parsed-begin-for-syntax)
50579   #f
50580   #f
50581   2
50582   0))
50583(define effect_2815 (finish_2970 struct:semi-parsed-begin-for-syntax))
50584(define semi-parsed-begin-for-syntax3.1
50585  (|#%name|
50586   semi-parsed-begin-for-syntax
50587   (record-constructor
50588    (make-record-constructor-descriptor
50589     struct:semi-parsed-begin-for-syntax
50590     #f
50591     #f))))
50592(define semi-parsed-begin-for-syntax?
50593  (|#%name|
50594   semi-parsed-begin-for-syntax?
50595   (record-predicate struct:semi-parsed-begin-for-syntax)))
50596(define semi-parsed-begin-for-syntax-s
50597  (|#%name|
50598   semi-parsed-begin-for-syntax-s
50599   (record-accessor struct:semi-parsed-begin-for-syntax 0)))
50600(define semi-parsed-begin-for-syntax-body
50601  (|#%name|
50602   semi-parsed-begin-for-syntax-body
50603   (record-accessor struct:semi-parsed-begin-for-syntax 1)))
50604(define extract-syntax
50605  (lambda (s_0) (if (expanded+parsed? s_0) (expanded+parsed-s s_0) s_0)))
50606(define parsed-only
50607  (lambda (l_0)
50608    (reverse$1
50609     (begin
50610       (letrec*
50611        ((for-loop_0
50612          (|#%name|
50613           for-loop
50614           (lambda (fold-var_0 lst_0)
50615             (begin
50616               (if (pair? lst_0)
50617                 (let ((i_0 (unsafe-car lst_0)))
50618                   (let ((rest_0 (unsafe-cdr lst_0)))
50619                     (let ((fold-var_1
50620                            (if (let ((or-part_0 (parsed? i_0)))
50621                                  (if or-part_0
50622                                    or-part_0
50623                                    (let ((or-part_1 (expanded+parsed? i_0)))
50624                                      (if or-part_1
50625                                        or-part_1
50626                                        (semi-parsed-begin-for-syntax? i_0)))))
50627                              (let ((fold-var_1
50628                                     (cons
50629                                      (if (expanded+parsed? i_0)
50630                                        (expanded+parsed-parsed i_0)
50631                                        (if (semi-parsed-begin-for-syntax? i_0)
50632                                          (parsed-begin-for-syntax21.1
50633                                           (semi-parsed-begin-for-syntax-s i_0)
50634                                           (parsed-only
50635                                            (semi-parsed-begin-for-syntax-body
50636                                             i_0)))
50637                                          i_0))
50638                                      fold-var_0)))
50639                                (values fold-var_1))
50640                              fold-var_0)))
50641                       (for-loop_0 fold-var_1 rest_0))))
50642                 fold-var_0))))))
50643        (for-loop_0 null l_0))))))
50644(define syntax-only
50645  (lambda (l_0)
50646    (reverse$1
50647     (begin
50648       (letrec*
50649        ((for-loop_0
50650          (|#%name|
50651           for-loop
50652           (lambda (fold-var_0 lst_0)
50653             (begin
50654               (if (pair? lst_0)
50655                 (let ((i_0 (unsafe-car lst_0)))
50656                   (let ((rest_0 (unsafe-cdr lst_0)))
50657                     (let ((fold-var_1
50658                            (if (let ((or-part_0 (syntax?$1 i_0)))
50659                                  (if or-part_0
50660                                    or-part_0
50661                                    (let ((or-part_1 (expanded+parsed? i_0)))
50662                                      (if or-part_1
50663                                        or-part_1
50664                                        (semi-parsed-begin-for-syntax? i_0)))))
50665                              (let ((fold-var_1
50666                                     (cons
50667                                      (if (expanded+parsed? i_0)
50668                                        (expanded+parsed-s i_0)
50669                                        (if (semi-parsed-begin-for-syntax? i_0)
50670                                          (let ((s_0
50671                                                 (semi-parsed-begin-for-syntax-s
50672                                                  i_0)))
50673                                            (let ((nested-bodys_0
50674                                                   (semi-parsed-begin-for-syntax-body
50675                                                    i_0)))
50676                                              (call-with-values
50677                                               (lambda ()
50678                                                 (call-with-values
50679                                                  (lambda ()
50680                                                    (let ((s_1
50681                                                           (if (syntax?$1 s_0)
50682                                                             (syntax-e$1 s_0)
50683                                                             s_0)))
50684                                                      (if (pair? s_1)
50685                                                        (let ((begin-for-syntax9_0
50686                                                               (let ((s_2
50687                                                                      (car
50688                                                                       s_1)))
50689                                                                 s_2)))
50690                                                          (let ((_0
50691                                                                 (let ((s_2
50692                                                                        (cdr
50693                                                                         s_1)))
50694                                                                   (let ((s_3
50695                                                                          (if (syntax?$1
50696                                                                               s_2)
50697                                                                            (syntax-e$1
50698                                                                             s_2)
50699                                                                            s_2)))
50700                                                                     (let ((flat-s_0
50701                                                                            (to-syntax-list.1
50702                                                                             s_3)))
50703                                                                       (if (not
50704                                                                            flat-s_0)
50705                                                                         (raise-syntax-error$1
50706                                                                          #f
50707                                                                          "bad syntax"
50708                                                                          s_0)
50709                                                                         flat-s_0))))))
50710                                                            (let ((begin-for-syntax9_1
50711                                                                   begin-for-syntax9_0))
50712                                                              (values
50713                                                               begin-for-syntax9_1
50714                                                               _0))))
50715                                                        (raise-syntax-error$1
50716                                                         #f
50717                                                         "bad syntax"
50718                                                         s_0))))
50719                                                  (case-lambda
50720                                                   ((begin-for-syntax7_0 _0)
50721                                                    (values
50722                                                     #t
50723                                                     begin-for-syntax7_0
50724                                                     _0))
50725                                                   (args
50726                                                    (raise-binding-result-arity-error
50727                                                     2
50728                                                     args)))))
50729                                               (case-lambda
50730                                                ((ok?_0 begin-for-syntax7_0 _0)
50731                                                 (let ((temp12_0
50732                                                        (list*
50733                                                         begin-for-syntax7_0
50734                                                         (syntax-only
50735                                                          nested-bodys_0))))
50736                                                   (rebuild.1
50737                                                    #t
50738                                                    s_0
50739                                                    temp12_0)))
50740                                                (args
50741                                                 (raise-binding-result-arity-error
50742                                                  3
50743                                                  args))))))
50744                                          i_0))
50745                                      fold-var_0)))
50746                                (values fold-var_1))
50747                              fold-var_0)))
50748                       (for-loop_0 fold-var_1 rest_0))))
50749                 fold-var_0))))))
50750        (for-loop_0 null l_0))))))
50751(define implicit-made-explicit-properties (hasheq 'implicit-made-explicit #t))
50752(define original-implicit-made-explicit-properties
50753  (hash-set implicit-made-explicit-properties original-property-sym #t))
50754(define raise-bindings-arity-error
50755  (lambda (who_0 ids_0 vals_0)
50756    (let ((app_0 (length ids_0)))
50757      (apply
50758       raise-result-arity-error
50759       who_0
50760       app_0
50761       (if (null? ids_0)
50762         ""
50763         (let ((app_1 (syntax-e$1 (car ids_0))))
50764           (format
50765            "\n  in: definition of ~a~a"
50766            app_1
50767            (if (pair? (cdr ids_0)) " ..." ""))))
50768       vals_0))))
50769(define expand.1
50770  (|#%name|
50771   expand
50772   (lambda (alternate-id1_0 fail-non-transformer2_0 s5_0 ctx6_0)
50773     (begin
50774       (begin
50775         (let ((obs_0
50776                (begin-unsafe
50777                 (expand-context/inner-observer
50778                  (root-expand-context/outer-inner ctx6_0)))))
50779           (if obs_0 (call-expand-observe obs_0 'visit s5_0) (void)))
50780         (let ((content_0 (syntax-content s5_0)))
50781           (if (symbol? content_0)
50782             (expand-identifier s5_0 ctx6_0 alternate-id1_0)
50783             (if (if (pair? content_0)
50784                   (let ((s_0 (car content_0)))
50785                     (begin-unsafe (symbol? (syntax-content s_0))))
50786                   #f)
50787               (expand-id-application-form.1
50788                fail-non-transformer2_0
50789                s5_0
50790                ctx6_0
50791                alternate-id1_0)
50792               (if (let ((or-part_0 (pair? content_0)))
50793                     (if or-part_0 or-part_0 (null? content_0)))
50794                 (expand-implicit '|#%app| s5_0 ctx6_0 #f)
50795                 (if (already-expanded? content_0)
50796                   (expand-already-expanded s5_0 ctx6_0)
50797                   (expand-implicit '|#%datum| s5_0 ctx6_0 #f)))))))))))
50798(define expand-identifier
50799  (lambda (s_0 ctx_0 alternate-id_0)
50800    (let ((id_0 (if alternate-id_0 alternate-id_0 s_0)))
50801      (if (if (not
50802               (let ((fs_0
50803                      (begin-unsafe
50804                       (expand-context/inner-stops
50805                        (root-expand-context/outer-inner ctx_0)))))
50806                 (begin-unsafe (eq? fs_0 empty-free-id-set))))
50807            (free-id-set-member?
50808             (begin-unsafe
50809              (expand-context/inner-stops
50810               (root-expand-context/outer-inner ctx_0)))
50811             (begin-unsafe
50812              (expand-context/inner-phase
50813               (root-expand-context/outer-inner ctx_0)))
50814             id_0)
50815            #f)
50816        (begin
50817          (let ((obs_0
50818                 (begin-unsafe
50819                  (expand-context/inner-observer
50820                   (root-expand-context/outer-inner ctx_0)))))
50821            (if obs_0
50822              (begin
50823                (call-expand-observe obs_0 'resolve id_0)
50824                (call-expand-observe obs_0 'stop/return s_0))
50825              (void)))
50826          s_0)
50827        (let ((temp114_0
50828               (begin-unsafe
50829                (expand-context/inner-phase
50830                 (root-expand-context/outer-inner ctx_0)))))
50831          (let ((binding_0
50832                 (resolve+shift.1 'ambiguous #f null #t #f id_0 temp114_0)))
50833            (begin
50834              (let ((obs_0
50835                     (begin-unsafe
50836                      (expand-context/inner-observer
50837                       (root-expand-context/outer-inner ctx_0)))))
50838                (if obs_0 (call-expand-observe obs_0 'resolve id_0) (void)))
50839              (if (eq? binding_0 'ambiguous)
50840                (raise-ambiguous-error id_0 ctx_0)
50841                (if (not binding_0)
50842                  (expand-implicit
50843                   '|#%top|
50844                   (substitute-alternate-id s_0 alternate-id_0)
50845                   ctx_0
50846                   s_0)
50847                  (call-with-values
50848                   (lambda ()
50849                     (let ((temp128_0 (if alternate-id_0 s_0 #f)))
50850                       (let ((temp129_0
50851                              (begin-unsafe
50852                               (expand-context/inner-in-local-expand?
50853                                (root-expand-context/outer-inner ctx_0)))))
50854                         (let ((temp128_1 temp128_0))
50855                           (lookup.1
50856                            temp128_1
50857                            temp129_0
50858                            binding_0
50859                            ctx_0
50860                            id_0)))))
50861                   (case-lambda
50862                    ((t_0 primitive?_0 insp-of-t_0 protected?_0)
50863                     (dispatch.1
50864                      #f
50865                      t_0
50866                      insp-of-t_0
50867                      s_0
50868                      id_0
50869                      ctx_0
50870                      binding_0
50871                      primitive?_0
50872                      protected?_0))
50873                    (args (raise-binding-result-arity-error 4 args)))))))))))))
50874(define expand-id-application-form.1
50875  (|#%name|
50876   expand-id-application-form
50877   (lambda (fail-non-transformer8_0 s10_0 ctx11_0 alternate-id12_0)
50878     (begin
50879       (let ((id_0
50880              (if alternate-id12_0 alternate-id12_0 (car (syntax-e$1 s10_0)))))
50881         (if (if (not
50882                  (let ((fs_0
50883                         (begin-unsafe
50884                          (expand-context/inner-stops
50885                           (root-expand-context/outer-inner ctx11_0)))))
50886                    (begin-unsafe (eq? fs_0 empty-free-id-set))))
50887               (free-id-set-member?
50888                (begin-unsafe
50889                 (expand-context/inner-stops
50890                  (root-expand-context/outer-inner ctx11_0)))
50891                (begin-unsafe
50892                 (expand-context/inner-phase
50893                  (root-expand-context/outer-inner ctx11_0)))
50894                id_0)
50895               #f)
50896           (begin
50897             (let ((obs_0
50898                    (begin-unsafe
50899                     (expand-context/inner-observer
50900                      (root-expand-context/outer-inner ctx11_0)))))
50901               (if obs_0
50902                 (begin
50903                   (call-expand-observe obs_0 'resolve id_0)
50904                   (call-expand-observe obs_0 'stop/return s10_0))
50905                 (void)))
50906             s10_0)
50907           (let ((temp131_0
50908                  (begin-unsafe
50909                   (expand-context/inner-phase
50910                    (root-expand-context/outer-inner ctx11_0)))))
50911             (let ((binding_0
50912                    (resolve+shift.1 'ambiguous #f null #t #f id_0 temp131_0)))
50913               (begin
50914                 (let ((obs_0
50915                        (begin-unsafe
50916                         (expand-context/inner-observer
50917                          (root-expand-context/outer-inner ctx11_0)))))
50918                   (if obs_0 (call-expand-observe obs_0 'resolve id_0) (void)))
50919                 (if (eq? binding_0 'ambiguous)
50920                   (begin
50921                     (if fail-non-transformer8_0
50922                       (|#%app| fail-non-transformer8_0)
50923                       (void))
50924                     (raise-ambiguous-error id_0 ctx11_0))
50925                   (if (not binding_0)
50926                     (begin
50927                       (if fail-non-transformer8_0
50928                         (|#%app| fail-non-transformer8_0)
50929                         (void))
50930                       (expand-implicit
50931                        '|#%app|
50932                        (substitute-alternate-id s10_0 alternate-id12_0)
50933                        ctx11_0
50934                        id_0))
50935                     (call-with-values
50936                      (lambda ()
50937                        (let ((temp137_0
50938                               (if alternate-id12_0
50939                                 (car (syntax-e$1 s10_0))
50940                                 #f)))
50941                          (let ((temp138_0
50942                                 (begin-unsafe
50943                                  (expand-context/inner-in-local-expand?
50944                                   (root-expand-context/outer-inner
50945                                    ctx11_0)))))
50946                            (let ((temp137_1 temp137_0))
50947                              (lookup.1
50948                               temp137_1
50949                               temp138_0
50950                               binding_0
50951                               ctx11_0
50952                               id_0)))))
50953                      (case-lambda
50954                       ((t_0 primitive?_0 insp-of-t_0 protected?_0)
50955                        (if (variable? t_0)
50956                          (begin
50957                            (if fail-non-transformer8_0
50958                              (|#%app| fail-non-transformer8_0)
50959                              (void))
50960                            (expand-implicit
50961                             '|#%app|
50962                             (substitute-alternate-id s10_0 alternate-id12_0)
50963                             ctx11_0
50964                             id_0))
50965                          (dispatch.1
50966                           fail-non-transformer8_0
50967                           t_0
50968                           insp-of-t_0
50969                           s10_0
50970                           id_0
50971                           ctx11_0
50972                           binding_0
50973                           primitive?_0
50974                           protected?_0)))
50975                       (args
50976                        (raise-binding-result-arity-error 4 args)))))))))))))))
50977(define expand-implicit
50978  (lambda (sym_0 s_0 ctx_0 trigger-id_0)
50979    (if (begin-unsafe (expand-context/outer-only-immediate? ctx_0))
50980      (begin
50981        (let ((obs_0
50982               (begin-unsafe
50983                (expand-context/inner-observer
50984                 (root-expand-context/outer-inner ctx_0)))))
50985          (if obs_0 (call-expand-observe obs_0 'stop/return s_0) (void)))
50986        s_0)
50987      (let ((id_0 (datum->syntax$1 s_0 sym_0)))
50988        (if (if (not
50989                 (let ((fs_0
50990                        (begin-unsafe
50991                         (expand-context/inner-stops
50992                          (root-expand-context/outer-inner ctx_0)))))
50993                   (begin-unsafe (eq? fs_0 empty-free-id-set))))
50994              (free-id-set-member?
50995               (begin-unsafe
50996                (expand-context/inner-stops
50997                 (root-expand-context/outer-inner ctx_0)))
50998               (begin-unsafe
50999                (expand-context/inner-phase
51000                 (root-expand-context/outer-inner ctx_0)))
51001               id_0)
51002              #f)
51003          (begin
51004            (let ((obs_0
51005                   (begin-unsafe
51006                    (expand-context/inner-observer
51007                     (root-expand-context/outer-inner ctx_0)))))
51008              (if obs_0
51009                (begin
51010                  (call-expand-observe obs_0 'resolve id_0)
51011                  (call-expand-observe obs_0 'stop/return s_0))
51012                (void)))
51013            s_0)
51014          (let ((temp149_0
51015                 (begin-unsafe
51016                  (expand-context/inner-phase
51017                   (root-expand-context/outer-inner ctx_0)))))
51018            (let ((b_0
51019                   (resolve+shift.1 'ambiguous #f null #t #f id_0 temp149_0)))
51020              (begin
51021                (let ((obs_0
51022                       (begin-unsafe
51023                        (expand-context/inner-observer
51024                         (root-expand-context/outer-inner ctx_0)))))
51025                  (if obs_0 (call-expand-observe obs_0 'resolve id_0) (void)))
51026                (if (eq? b_0 'ambiguous)
51027                  (raise-ambiguous-error id_0 ctx_0)
51028                  (call-with-values
51029                   (lambda ()
51030                     (if b_0
51031                       (lookup.1 #f #f b_0 ctx_0 id_0)
51032                       (values #f #f #f #f)))
51033                   (case-lambda
51034                    ((t_0 primitive?_0 insp-of-t_0 protected?_0)
51035                     (if (transformer? t_0)
51036                       (let ((fail-non-transformer_0
51037                              (if (1/rename-transformer? t_0)
51038                                (|#%name|
51039                                 fail-non-transformer
51040                                 (lambda ()
51041                                   (begin
51042                                     (raise-syntax-implicit-error
51043                                      s_0
51044                                      sym_0
51045                                      trigger-id_0
51046                                      ctx_0))))
51047                                #f)))
51048                         (let ((temp157_0 (make-explicit ctx_0 sym_0 s_0)))
51049                           (dispatch-transformer.1
51050                            fail-non-transformer_0
51051                            t_0
51052                            insp-of-t_0
51053                            temp157_0
51054                            id_0
51055                            ctx_0
51056                            b_0)))
51057                       (if (core-form? t_0)
51058                         (if (if (eq? sym_0 '|#%top|)
51059                               (if (eq? (core-form-name t_0) '|#%top|)
51060                                 (begin-unsafe
51061                                  (expand-context/inner-in-local-expand?
51062                                   (root-expand-context/outer-inner ctx_0)))
51063                                 #f)
51064                               #f)
51065                           (|dispatch-implicit-#%top-core-form| t_0 s_0 ctx_0)
51066                           (dispatch-core-form
51067                            t_0
51068                            (make-explicit ctx_0 sym_0 s_0)
51069                            ctx_0))
51070                         (let ((tl-id_0
51071                                (if (eq? sym_0 '|#%top|)
51072                                  (if (begin-unsafe
51073                                       (root-expand-context/inner-top-level-bind-scope
51074                                        (root-expand-context/outer-inner
51075                                         ctx_0)))
51076                                    (add-scope
51077                                     s_0
51078                                     (begin-unsafe
51079                                      (root-expand-context/inner-top-level-bind-scope
51080                                       (root-expand-context/outer-inner
51081                                        ctx_0))))
51082                                    #f)
51083                                  #f)))
51084                           (let ((tl-b_0
51085                                  (if tl-id_0
51086                                    (let ((temp163_0
51087                                           (begin-unsafe
51088                                            (expand-context/inner-phase
51089                                             (root-expand-context/outer-inner
51090                                              ctx_0)))))
51091                                      (resolve.1
51092                                       #f
51093                                       #f
51094                                       null
51095                                       #f
51096                                       tl-id_0
51097                                       temp163_0))
51098                                    #f)))
51099                             (if tl-b_0
51100                               (if (if (begin-unsafe
51101                                        (expand-context/inner-to-parsed?
51102                                         (root-expand-context/outer-inner
51103                                          ctx_0)))
51104                                     (let ((fs_0
51105                                            (begin-unsafe
51106                                             (expand-context/inner-stops
51107                                              (root-expand-context/outer-inner
51108                                               ctx_0)))))
51109                                       (begin-unsafe
51110                                        (eq? fs_0 empty-free-id-set)))
51111                                     #f)
51112                                 (parsed-id2.1 tl-id_0 tl-b_0 #f)
51113                                 (begin
51114                                   (let ((obs_0
51115                                          (begin-unsafe
51116                                           (expand-context/inner-observer
51117                                            (root-expand-context/outer-inner
51118                                             ctx_0)))))
51119                                     (if obs_0
51120                                       (begin
51121                                         (call-expand-observe
51122                                          obs_0
51123                                          'variable
51124                                          tl-id_0)
51125                                         (call-expand-observe
51126                                          obs_0
51127                                          'return
51128                                          tl-id_0))
51129                                       (void)))
51130                                   tl-id_0))
51131                               (raise-syntax-implicit-error
51132                                s_0
51133                                sym_0
51134                                trigger-id_0
51135                                ctx_0)))))))
51136                    (args (raise-binding-result-arity-error 4 args)))))))))))))
51137(define expand-already-expanded
51138  (lambda (s_0 ctx_0)
51139    (let ((ae_0 (syntax-e$1 s_0)))
51140      (let ((exp-s_0 (already-expanded-s ae_0)))
51141        (begin
51142          (if (let ((or-part_0 (syntax-any-macro-scopes? s_0)))
51143                (if or-part_0
51144                  or-part_0
51145                  (let ((or-part_1
51146                         (not
51147                          (eq?
51148                           (begin-unsafe
51149                            (expand-context/outer-binding-layer ctx_0))
51150                           (already-expanded-binding-layer ae_0)))))
51151                    (if or-part_1
51152                      or-part_1
51153                      (if (parsed? exp-s_0)
51154                        (not
51155                         (if (begin-unsafe
51156                              (expand-context/inner-to-parsed?
51157                               (root-expand-context/outer-inner ctx_0)))
51158                           (let ((fs_0
51159                                  (begin-unsafe
51160                                   (expand-context/inner-stops
51161                                    (root-expand-context/outer-inner ctx_0)))))
51162                             (begin-unsafe (eq? fs_0 empty-free-id-set)))
51163                           #f))
51164                        #f)))))
51165            (let ((app_0
51166                   (string-append
51167                    "expanded syntax not in its original lexical context;\n"
51168                    " extra bindings or scopes in the current context")))
51169              (raise-syntax-error$1
51170               #f
51171               app_0
51172               (if (not (parsed? exp-s_0)) exp-s_0 #f)))
51173            (void))
51174          (if (begin-unsafe (expand-context/outer-only-immediate? ctx_0))
51175            (begin
51176              (let ((obs_0
51177                     (begin-unsafe
51178                      (expand-context/inner-observer
51179                       (root-expand-context/outer-inner ctx_0)))))
51180                (if obs_0 (call-expand-observe obs_0 'stop/return s_0) (void)))
51181              s_0)
51182            (if (parsed? exp-s_0)
51183              exp-s_0
51184              (let ((result-s_0 (syntax-track-origin$1 exp-s_0 s_0)))
51185                (begin
51186                  (let ((obs_0
51187                         (begin-unsafe
51188                          (expand-context/inner-observer
51189                           (root-expand-context/outer-inner ctx_0)))))
51190                    (if obs_0
51191                      (call-expand-observe obs_0 'opaque-expr result-s_0)
51192                      (void)))
51193                  (if (if (begin-unsafe
51194                           (expand-context/inner-to-parsed?
51195                            (root-expand-context/outer-inner ctx_0)))
51196                        (let ((fs_0
51197                               (begin-unsafe
51198                                (expand-context/inner-stops
51199                                 (root-expand-context/outer-inner ctx_0)))))
51200                          (begin-unsafe (eq? fs_0 empty-free-id-set)))
51201                        #f)
51202                    (expand.1 #f #f result-s_0 ctx_0)
51203                    result-s_0))))))))))
51204(define make-explicit
51205  (lambda (ctx_0 sym_0 s_0)
51206    (let ((insp_0 (current-module-code-inspector)))
51207      (let ((sym-s_0
51208             (immediate-datum->syntax
51209              s_0
51210              sym_0
51211              s_0
51212              (if (begin-unsafe
51213                   (hash-ref (syntax-props s_0) original-property-sym #f))
51214                original-implicit-made-explicit-properties
51215                implicit-made-explicit-properties)
51216              insp_0)))
51217        (let ((new-s_0
51218               (immediate-datum->syntax
51219                s_0
51220                (cons sym-s_0 s_0)
51221                s_0
51222                (syntax-props s_0)
51223                insp_0)))
51224          (begin
51225            (let ((obs_0
51226                   (begin-unsafe
51227                    (expand-context/inner-observer
51228                     (root-expand-context/outer-inner ctx_0)))))
51229              (if obs_0 (call-expand-observe obs_0 'tag2 new-s_0 s_0) (void)))
51230            new-s_0))))))
51231(define dispatch.1
51232  (|#%name|
51233   dispatch
51234   (lambda (fail-non-transformer14_0
51235            t16_0
51236            insp-of-t17_0
51237            s18_0
51238            id19_0
51239            ctx20_0
51240            binding21_0
51241            primitive?22_0
51242            protected?23_0)
51243     (begin
51244       (if (core-form? t16_0)
51245         (dispatch-core-form t16_0 s18_0 ctx20_0)
51246         (if (transformer? t16_0)
51247           (dispatch-transformer.1
51248            fail-non-transformer14_0
51249            t16_0
51250            insp-of-t17_0
51251            s18_0
51252            id19_0
51253            ctx20_0
51254            binding21_0)
51255           (if (variable? t16_0)
51256             (dispatch-variable
51257              t16_0
51258              s18_0
51259              id19_0
51260              ctx20_0
51261              binding21_0
51262              primitive?22_0
51263              protected?23_0)
51264             (raise-syntax-error$1
51265              #f
51266              "illegal use of syntax"
51267              s18_0
51268              #f
51269              null
51270              (format
51271               "\n  value at phase ~s: ~e"
51272               (add1
51273                (begin-unsafe
51274                 (expand-context/inner-phase
51275                  (root-expand-context/outer-inner ctx20_0))))
51276               t16_0)))))))))
51277(define dispatch-core-form
51278  (lambda (t_0 s_0 ctx_0)
51279    (if (begin-unsafe (expand-context/outer-only-immediate? ctx_0))
51280      (begin
51281        (let ((obs_0
51282               (begin-unsafe
51283                (expand-context/inner-observer
51284                 (root-expand-context/outer-inner ctx_0)))))
51285          (if obs_0 (call-expand-observe obs_0 'stop/return s_0) (void)))
51286        s_0)
51287      (if (begin-unsafe
51288           (expand-context/inner-observer
51289            (root-expand-context/outer-inner ctx_0)))
51290        (begin
51291          (let ((obs_0
51292                 (begin-unsafe
51293                  (expand-context/inner-observer
51294                   (root-expand-context/outer-inner ctx_0)))))
51295            (if obs_0 (call-expand-observe obs_0 'enter-prim s_0) (void)))
51296          (let ((result-s_0 (|#%app| (core-form-expander t_0) s_0 ctx_0)))
51297            (begin
51298              (let ((obs_0
51299                     (begin-unsafe
51300                      (expand-context/inner-observer
51301                       (root-expand-context/outer-inner ctx_0)))))
51302                (if obs_0
51303                  (call-expand-observe
51304                   obs_0
51305                   'exit-prim/return
51306                   (extract-syntax result-s_0))
51307                  (void)))
51308              result-s_0)))
51309        (|#%app| (core-form-expander t_0) s_0 ctx_0)))))
51310(define |dispatch-implicit-#%top-core-form|
51311  (lambda (t_0 s_0 ctx_0)
51312    (begin
51313      (let ((obs_0
51314             (begin-unsafe
51315              (expand-context/inner-observer
51316               (root-expand-context/outer-inner ctx_0)))))
51317        (if obs_0 (call-expand-observe obs_0 'enter-prim s_0) (void)))
51318      (let ((result-s_0 (|#%app| (core-form-expander t_0) s_0 ctx_0 #t)))
51319        (begin
51320          (let ((obs_0
51321                 (begin-unsafe
51322                  (expand-context/inner-observer
51323                   (root-expand-context/outer-inner ctx_0)))))
51324            (if obs_0
51325              (call-expand-observe obs_0 'exit-prim/return result-s_0)
51326              (void)))
51327          result-s_0)))))
51328(define dispatch-transformer.1
51329  (|#%name|
51330   dispatch-transformer
51331   (lambda (fail-non-transformer25_0
51332            t27_0
51333            insp-of-t28_0
51334            s29_0
51335            id30_0
51336            ctx31_0
51337            binding32_0)
51338     (begin
51339       (if (not-in-this-expand-context? t27_0 ctx31_0)
51340         (let ((adj-s_0
51341                (avoid-current-expand-context
51342                 (substitute-alternate-id s29_0 id30_0)
51343                 t27_0
51344                 ctx31_0)))
51345           (begin
51346             (let ((obs_0
51347                    (begin-unsafe
51348                     (expand-context/inner-observer
51349                      (root-expand-context/outer-inner ctx31_0)))))
51350               (if obs_0
51351                 (call-expand-observe obs_0 'tag/context adj-s_0)
51352                 (void)))
51353             (expand.1 #f #f adj-s_0 ctx31_0)))
51354         (if (if (begin-unsafe
51355                  (expand-context/inner-parsing-expanded?
51356                   (root-expand-context/outer-inner ctx31_0)))
51357               (not (1/rename-transformer? t27_0))
51358               #f)
51359           (raise-syntax-error$1
51360            #f
51361            "encountered a macro binding in form that should be fully expanded"
51362            s29_0)
51363           (if (1/rename-transformer? t27_0)
51364             (if (begin-unsafe
51365                  (expand-context/inner-just-once?
51366                   (root-expand-context/outer-inner ctx31_0)))
51367               s29_0
51368               (let ((alt-id_0
51369                      (apply-rename-transformer t27_0 id30_0 ctx31_0)))
51370                 (begin
51371                   (let ((obs_0
51372                          (begin-unsafe
51373                           (expand-context/inner-observer
51374                            (root-expand-context/outer-inner ctx31_0)))))
51375                     (if obs_0
51376                       (call-expand-observe obs_0 'rename-transformer alt-id_0)
51377                       (void)))
51378                   (expand.1
51379                    alt-id_0
51380                    fail-non-transformer25_0
51381                    s29_0
51382                    ctx31_0))))
51383             (call-with-values
51384              (lambda ()
51385                (apply-transformer.1
51386                 #f
51387                 t27_0
51388                 insp-of-t28_0
51389                 s29_0
51390                 id30_0
51391                 ctx31_0
51392                 binding32_0))
51393              (case-lambda
51394               ((exp-s_0 re-ctx_0)
51395                (if (begin-unsafe
51396                     (expand-context/inner-just-once?
51397                      (root-expand-context/outer-inner ctx31_0)))
51398                  exp-s_0
51399                  (expand.1 #f #f exp-s_0 re-ctx_0)))
51400               (args (raise-binding-result-arity-error 2 args)))))))))))
51401(define dispatch-variable
51402  (lambda (t_0 s_0 id_0 ctx_0 binding_0 primitive?_0 protected?_0)
51403    (if (begin-unsafe (expand-context/outer-only-immediate? ctx_0))
51404      (begin
51405        (let ((obs_0
51406               (begin-unsafe
51407                (expand-context/inner-observer
51408                 (root-expand-context/outer-inner ctx_0)))))
51409          (if obs_0 (call-expand-observe obs_0 'stop/return id_0) (void)))
51410        id_0)
51411      (begin
51412        (let ((obs_0
51413               (begin-unsafe
51414                (expand-context/inner-observer
51415                 (root-expand-context/outer-inner ctx_0)))))
51416          (if obs_0 (call-expand-observe obs_0 'variable s_0 id_0) (void)))
51417        (begin
51418          (register-variable-referenced-if-local! binding_0 ctx_0)
51419          (let ((result-s_0
51420                 (let ((temp189_0
51421                        (free-id-set-empty-or-just-module*?
51422                         (begin-unsafe
51423                          (expand-context/inner-stops
51424                           (root-expand-context/outer-inner ctx_0))))))
51425                   (substitute-variable.1 temp189_0 id_0 t_0))))
51426            (if (if (begin-unsafe
51427                     (expand-context/inner-to-parsed?
51428                      (root-expand-context/outer-inner ctx_0)))
51429                  (let ((fs_0
51430                         (begin-unsafe
51431                          (expand-context/inner-stops
51432                           (root-expand-context/outer-inner ctx_0)))))
51433                    (begin-unsafe (eq? fs_0 empty-free-id-set)))
51434                  #f)
51435              (let ((prop-s_0 (begin-unsafe #f)))
51436                (let ((insp_0 (syntax-inspector result-s_0)))
51437                  (if primitive?_0
51438                    (parsed-primitive-id3.1 prop-s_0 binding_0 insp_0)
51439                    (parsed-id2.1 prop-s_0 binding_0 insp_0))))
51440              (let ((protected-result-s_0
51441                     (if protected?_0
51442                       (syntax-property$1 result-s_0 'protected #t)
51443                       result-s_0)))
51444                (begin
51445                  (let ((obs_0
51446                         (begin-unsafe
51447                          (expand-context/inner-observer
51448                           (root-expand-context/outer-inner ctx_0)))))
51449                    (if obs_0
51450                      (call-expand-observe obs_0 'return protected-result-s_0)
51451                      (void)))
51452                  protected-result-s_0)))))))))
51453(define apply-transformer.1
51454  (|#%name|
51455   apply-transformer
51456   (lambda (origin-id34_0 t36_0 insp-of-t37_0 s38_0 id39_0 ctx40_0 binding41_0)
51457     (begin
51458       (begin
51459         (if log-performance?
51460           (start-performance-region 'expand '_ 'macro)
51461           (void))
51462         (begin0
51463           (begin
51464             (let ((obs_0
51465                    (begin-unsafe
51466                     (expand-context/inner-observer
51467                      (root-expand-context/outer-inner ctx40_0)))))
51468               (if obs_0
51469                 (call-expand-observe obs_0 'enter-macro s38_0 s38_0)
51470                 (void)))
51471             (let ((intro-scope_0 (new-scope 'macro)))
51472               (let ((intro-s_0 (flip-scope s38_0 intro-scope_0)))
51473                 (let ((use-scopes_0
51474                        (maybe-create-use-site-scope ctx40_0 binding41_0)))
51475                   (let ((use-s_0 (add-scopes intro-s_0 use-scopes_0)))
51476                     (let ((def-ctx-scopes_0 (box null)))
51477                       (let ((transformed-s_0
51478                              (apply-transformer-in-context$1
51479                               t36_0
51480                               use-s_0
51481                               ctx40_0
51482                               insp-of-t37_0
51483                               intro-scope_0
51484                               use-scopes_0
51485                               def-ctx-scopes_0
51486                               id39_0)))
51487                         (let ((result-s_0
51488                                (flip-scope transformed-s_0 intro-scope_0)))
51489                           (let ((post-s_0
51490                                  (begin-unsafe
51491                                   (apply-post-expansion
51492                                    (begin-unsafe
51493                                     (root-expand-context/outer-post-expansion
51494                                      ctx40_0))
51495                                    result-s_0))))
51496                             (let ((tracked-s_0
51497                                    (syntax-track-origin$1
51498                                     post-s_0
51499                                     use-s_0
51500                                     (if origin-id34_0
51501                                       origin-id34_0
51502                                       (if (begin-unsafe
51503                                            (symbol? (syntax-content s38_0)))
51504                                         s38_0
51505                                         (car (syntax-e$1 s38_0)))))))
51506                               (begin
51507                                 (let ((obs_0
51508                                        (begin-unsafe
51509                                         (expand-context/inner-observer
51510                                          (root-expand-context/outer-inner
51511                                           ctx40_0)))))
51512                                   (if obs_0
51513                                     (call-expand-observe
51514                                      obs_0
51515                                      'exit-macro
51516                                      tracked-s_0
51517                                      post-s_0)
51518                                     (void)))
51519                                 (values
51520                                  tracked-s_0
51521                                  (accumulate-def-ctx-scopes
51522                                   ctx40_0
51523                                   def-ctx-scopes_0)))))))))))))
51524           (if log-performance? (end-performance-region) (void))))))))
51525(define apply-transformer-in-context$1
51526  (|#%name|
51527   apply-transformer-in-context
51528   (lambda (t_0
51529            use-s_0
51530            ctx_0
51531            insp-of-t_0
51532            intro-scope_0
51533            use-scopes_0
51534            def-ctx-scopes_0
51535            id_0)
51536     (begin
51537       (begin
51538         (let ((obs_0
51539                (begin-unsafe
51540                 (expand-context/inner-observer
51541                  (root-expand-context/outer-inner ctx_0)))))
51542           (if obs_0 (call-expand-observe obs_0 'macro-pre-x use-s_0) (void)))
51543         (let ((confine-def-ctx-scopes?_0
51544                (not
51545                 (let ((or-part_0
51546                        (begin-unsafe
51547                         (expand-context/outer-only-immediate? ctx_0))))
51548                   (if or-part_0
51549                     or-part_0
51550                     (not
51551                      (free-id-set-empty-or-just-module*?
51552                       (begin-unsafe
51553                        (expand-context/inner-stops
51554                         (root-expand-context/outer-inner ctx_0))))))))))
51555           (let ((accum-ctx_0
51556                  (if (if confine-def-ctx-scopes?_0
51557                        (if (begin-unsafe
51558                             (expand-context/outer-def-ctx-scopes ctx_0))
51559                          (not
51560                           (null?
51561                            (unbox
51562                             (begin-unsafe
51563                              (expand-context/outer-def-ctx-scopes ctx_0)))))
51564                          #f)
51565                        #f)
51566                    (accumulate-def-ctx-scopes
51567                     ctx_0
51568                     (begin-unsafe
51569                      (expand-context/outer-def-ctx-scopes ctx_0)))
51570                    ctx_0)))
51571             (let ((m-ctx_0
51572                    (if (expand-context/outer? accum-ctx_0)
51573                      (let ((current-introduction-scopes190_0
51574                             (list intro-scope_0)))
51575                        (let ((def-ctx-scopes192_0
51576                               (if confine-def-ctx-scopes?_0
51577                                 def-ctx-scopes_0
51578                                 (begin-unsafe
51579                                  (expand-context/outer-def-ctx-scopes
51580                                   ctx_0)))))
51581                          (let ((inner193_0
51582                                 (root-expand-context/outer-inner
51583                                  accum-ctx_0)))
51584                            (let ((def-ctx-scopes192_1 def-ctx-scopes192_0)
51585                                  (current-introduction-scopes190_1
51586                                   current-introduction-scopes190_0))
51587                              (expand-context/outer1.1
51588                               inner193_0
51589                               (root-expand-context/outer-post-expansion
51590                                accum-ctx_0)
51591                               (root-expand-context/outer-use-site-scopes
51592                                accum-ctx_0)
51593                               (root-expand-context/outer-frame-id accum-ctx_0)
51594                               (expand-context/outer-context accum-ctx_0)
51595                               (expand-context/outer-env accum-ctx_0)
51596                               (expand-context/outer-scopes accum-ctx_0)
51597                               def-ctx-scopes192_1
51598                               (expand-context/outer-binding-layer accum-ctx_0)
51599                               (expand-context/outer-reference-records
51600                                accum-ctx_0)
51601                               (expand-context/outer-only-immediate?
51602                                accum-ctx_0)
51603                               (expand-context/outer-need-eventually-defined
51604                                accum-ctx_0)
51605                               current-introduction-scopes190_1
51606                               use-scopes_0
51607                               (expand-context/outer-name accum-ctx_0))))))
51608                      (raise-argument-error
51609                       'struct-copy
51610                       "expand-context/outer?"
51611                       accum-ctx_0))))
51612               (let ((transformed-s_0
51613                      (with-continuation-mark*
51614                       push-authentic
51615                       parameterization-key
51616                       (let ((app_0
51617                              (continuation-mark-set-first
51618                               #f
51619                               parameterization-key)))
51620                         (extend-parameterization
51621                          app_0
51622                          1/current-namespace
51623                          (namespace->namespace-at-phase
51624                           (begin-unsafe
51625                            (expand-context/inner-namespace
51626                             (root-expand-context/outer-inner ctx_0)))
51627                           (add1
51628                            (begin-unsafe
51629                             (expand-context/inner-phase
51630                              (root-expand-context/outer-inner ctx_0)))))))
51631                       (with-continuation-mark*
51632                        authentic
51633                        current-expand-context
51634                        m-ctx_0
51635                        (with-continuation-mark*
51636                         authentic
51637                         current-module-code-inspector
51638                         insp-of-t_0
51639                         (call-with-continuation-barrier
51640                          (lambda ()
51641                            (|#%app|
51642                             (transformer->procedure t_0)
51643                             use-s_0))))))))
51644                 (begin
51645                   (let ((obs_0
51646                          (begin-unsafe
51647                           (expand-context/inner-observer
51648                            (root-expand-context/outer-inner ctx_0)))))
51649                     (if obs_0
51650                       (call-expand-observe
51651                        obs_0
51652                        'macro-post-x
51653                        transformed-s_0
51654                        use-s_0)
51655                       (void)))
51656                   (if (syntax?$1 transformed-s_0)
51657                     (void)
51658                     (raise-arguments-error
51659                      (syntax-e$1 id_0)
51660                      "received value from syntax expander was not syntax"
51661                      "received"
51662                      transformed-s_0))
51663                   transformed-s_0))))))))))
51664(define maybe-create-use-site-scope
51665  (lambda (ctx_0 binding_0)
51666    (if (if (begin-unsafe (root-expand-context/outer-use-site-scopes ctx_0))
51667          (let ((or-part_0 (not binding_0)))
51668            (if or-part_0
51669              or-part_0
51670              (matching-frame?
51671               (begin-unsafe (root-expand-context/outer-frame-id ctx_0))
51672               (binding-frame-id binding_0))))
51673          #f)
51674      (let ((sc_0 (new-scope 'use-site)))
51675        (let ((b_0
51676               (begin-unsafe
51677                (root-expand-context/outer-use-site-scopes ctx_0))))
51678          (begin
51679            (set-box! b_0 (cons sc_0 (unbox b_0)))
51680            (let ((def-ctx-b_0
51681                   (begin-unsafe (expand-context/outer-def-ctx-scopes ctx_0))))
51682              (begin
51683                (if def-ctx-b_0
51684                  (set-box! def-ctx-b_0 (cons sc_0 (unbox def-ctx-b_0)))
51685                  (void))
51686                (list sc_0))))))
51687      null)))
51688(define matching-frame?
51689  (lambda (current-frame-id_0 bind-frame-id_0)
51690    (if current-frame-id_0
51691      (let ((or-part_0 (eq? current-frame-id_0 bind-frame-id_0)))
51692        (if or-part_0 or-part_0 (eq? current-frame-id_0 'all)))
51693      #f)))
51694(define maybe-add-post-expansion
51695  (lambda (s_0 ctx_0)
51696    (apply-post-expansion
51697     (begin-unsafe (root-expand-context/outer-post-expansion ctx_0))
51698     s_0)))
51699(define accumulate-def-ctx-scopes
51700  (lambda (ctx_0 def-ctx-scopes_0)
51701    (if (null? (unbox def-ctx-scopes_0))
51702      ctx_0
51703      (if (expand-context/outer? ctx_0)
51704        (let ((scopes194_0
51705               (append
51706                (unbox def-ctx-scopes_0)
51707                (begin-unsafe (expand-context/outer-scopes ctx_0)))))
51708          (let ((inner195_0 (root-expand-context/outer-inner ctx_0)))
51709            (let ((scopes194_1 scopes194_0))
51710              (expand-context/outer1.1
51711               inner195_0
51712               (root-expand-context/outer-post-expansion ctx_0)
51713               (root-expand-context/outer-use-site-scopes ctx_0)
51714               (root-expand-context/outer-frame-id ctx_0)
51715               (expand-context/outer-context ctx_0)
51716               (expand-context/outer-env ctx_0)
51717               scopes194_1
51718               (expand-context/outer-def-ctx-scopes ctx_0)
51719               (expand-context/outer-binding-layer ctx_0)
51720               (expand-context/outer-reference-records ctx_0)
51721               (expand-context/outer-only-immediate? ctx_0)
51722               (expand-context/outer-need-eventually-defined ctx_0)
51723               (expand-context/outer-current-introduction-scopes ctx_0)
51724               (expand-context/outer-current-use-scopes ctx_0)
51725               (expand-context/outer-name ctx_0)))))
51726        (raise-argument-error 'struct-copy "expand-context/outer?" ctx_0)))))
51727(define apply-rename-transformer
51728  (lambda (t_0 id_0 ctx_0)
51729    (let ((target-id_0 (rename-transformer-target-in-context t_0 ctx_0)))
51730      (let ((intro-scope_0 (new-scope 'macro)))
51731        (let ((intro-id_0 (add-scope target-id_0 intro-scope_0)))
51732          (syntax-track-origin$1
51733           (transfer-srcloc intro-id_0 id_0)
51734           id_0
51735           id_0))))))
51736(define lookup.1
51737  (|#%name|
51738   lookup
51739   (lambda (in43_0 out-of-context-as-variable?44_0 b47_0 ctx48_0 id49_0)
51740     (begin
51741       (let ((temp197_0 (begin-unsafe (expand-context/outer-env ctx48_0))))
51742         (let ((temp198_0
51743                (begin-unsafe
51744                 (expand-context/inner-lift-envs
51745                  (root-expand-context/outer-inner ctx48_0)))))
51746           (let ((temp199_0
51747                  (begin-unsafe
51748                   (expand-context/inner-namespace
51749                    (root-expand-context/outer-inner ctx48_0)))))
51750             (let ((temp200_0
51751                    (begin-unsafe
51752                     (expand-context/inner-phase
51753                      (root-expand-context/outer-inner ctx48_0)))))
51754               (binding-lookup.1
51755                in43_0
51756                out-of-context-as-variable?44_0
51757                b47_0
51758                temp197_0
51759                temp198_0
51760                temp199_0
51761                temp200_0
51762                id49_0)))))))))
51763(define substitute-alternate-id
51764  (lambda (s_0 alternate-id_0)
51765    (if (not alternate-id_0)
51766      s_0
51767      (if (begin-unsafe (symbol? (syntax-content s_0)))
51768        (syntax-track-origin$1 alternate-id_0 s_0)
51769        (syntax-track-origin$1
51770         (datum->syntax$1 s_0 (cons alternate-id_0 (cdr (syntax-e$1 s_0))) s_0)
51771         s_0)))))
51772(define register-variable-referenced-if-local!
51773  (lambda (binding_0 ctx_0)
51774    (if (if (local-binding? binding_0)
51775          (if (reference-record? (binding-frame-id binding_0))
51776            (not
51777             (begin-unsafe
51778              (expand-context/inner-parsing-expanded?
51779               (root-expand-context/outer-inner ctx_0))))
51780            #f)
51781          #f)
51782      (let ((app_0 (binding-frame-id binding_0)))
51783        (reference-record-used! app_0 (local-binding-key binding_0)))
51784      (void))))
51785(define expand/capture-lifts.1
51786  (|#%name|
51787   expand/capture-lifts
51788   (lambda (always-wrap?54_0
51789            begin-form?52_0
51790            expand-lifts?51_0
51791            lift-key53_0
51792            s59_0
51793            ctx60_0)
51794     (begin
51795       (let ((lift-key_0
51796              (if (eq? lift-key53_0 unsafe-undefined)
51797                (generate-lift-key)
51798                lift-key53_0)))
51799         (let ((context_0
51800                (begin-unsafe (expand-context/outer-context ctx60_0))))
51801           (let ((phase_0
51802                  (begin-unsafe
51803                   (expand-context/inner-phase
51804                    (root-expand-context/outer-inner ctx60_0)))))
51805             (let ((local?_0 (not begin-form?52_0)))
51806               (letrec*
51807                ((loop_0
51808                  (|#%name|
51809                   loop
51810                   (lambda (s_0 always-wrap?_0 ctx_0)
51811                     (begin
51812                       (let ((lift-env_0 (if local?_0 (box empty-env) #f)))
51813                         (let ((lift-ctx_0
51814                                (let ((temp204_0
51815                                       (if local?_0
51816                                         (make-local-lift
51817                                          lift-env_0
51818                                          (begin-unsafe
51819                                           (root-expand-context/inner-counter
51820                                            (root-expand-context/outer-inner
51821                                             ctx_0)))
51822                                          (if (begin-unsafe
51823                                               (expand-context/inner-normalize-locals?
51824                                                (root-expand-context/outer-inner
51825                                                 ctx_0)))
51826                                            'lift
51827                                            #f))
51828                                         (make-top-level-lift ctx_0))))
51829                                  (let ((temp205_0
51830                                         (if (not local?_0)
51831                                           (eq? context_0 'module)
51832                                           #f)))
51833                                    (let ((temp204_1 temp204_0))
51834                                      (make-lift-context.1
51835                                       temp205_0
51836                                       temp204_1))))))
51837                           (let ((capture-ctx_0
51838                                  (if (expand-context/outer? ctx_0)
51839                                    (let ((the-struct_0
51840                                           (root-expand-context/outer-inner
51841                                            ctx_0)))
51842                                      (let ((inner206_0
51843                                             (if (expand-context/inner?
51844                                                  the-struct_0)
51845                                               (let ((lift-envs209_0
51846                                                      (if local?_0
51847                                                        (cons
51848                                                         lift-env_0
51849                                                         (begin-unsafe
51850                                                          (expand-context/inner-lift-envs
51851                                                           (root-expand-context/outer-inner
51852                                                            ctx_0))))
51853                                                        (begin-unsafe
51854                                                         (expand-context/inner-lift-envs
51855                                                          (root-expand-context/outer-inner
51856                                                           ctx_0))))))
51857                                                 (let ((module-lifts210_0
51858                                                        (if (if local?_0
51859                                                              local?_0
51860                                                              (not
51861                                                               (memq
51862                                                                context_0
51863                                                                '(top-level
51864                                                                  module))))
51865                                                          (begin-unsafe
51866                                                           (expand-context/inner-module-lifts
51867                                                            (root-expand-context/outer-inner
51868                                                             ctx_0)))
51869                                                          lift-ctx_0)))
51870                                                   (let ((lift-envs209_1
51871                                                          lift-envs209_0))
51872                                                     (expand-context/inner2.1
51873                                                      (root-expand-context/inner-self-mpi
51874                                                       the-struct_0)
51875                                                      (root-expand-context/inner-module-scopes
51876                                                       the-struct_0)
51877                                                      (root-expand-context/inner-top-level-bind-scope
51878                                                       the-struct_0)
51879                                                      (root-expand-context/inner-all-scopes-stx
51880                                                       the-struct_0)
51881                                                      (root-expand-context/inner-defined-syms
51882                                                       the-struct_0)
51883                                                      (root-expand-context/inner-counter
51884                                                       the-struct_0)
51885                                                      lift-key_0
51886                                                      (expand-context/inner-to-parsed?
51887                                                       the-struct_0)
51888                                                      (expand-context/inner-phase
51889                                                       the-struct_0)
51890                                                      (expand-context/inner-namespace
51891                                                       the-struct_0)
51892                                                      (expand-context/inner-just-once?
51893                                                       the-struct_0)
51894                                                      (expand-context/inner-module-begin-k
51895                                                       the-struct_0)
51896                                                      (expand-context/inner-allow-unbound?
51897                                                       the-struct_0)
51898                                                      (expand-context/inner-in-local-expand?
51899                                                       the-struct_0)
51900                                                      (|expand-context/inner-keep-#%expression?|
51901                                                       the-struct_0)
51902                                                      (expand-context/inner-stops
51903                                                       the-struct_0)
51904                                                      (expand-context/inner-declared-submodule-names
51905                                                       the-struct_0)
51906                                                      lift-ctx_0
51907                                                      lift-envs209_1
51908                                                      module-lifts210_0
51909                                                      (expand-context/inner-require-lifts
51910                                                       the-struct_0)
51911                                                      (expand-context/inner-to-module-lifts
51912                                                       the-struct_0)
51913                                                      (expand-context/inner-requires+provides
51914                                                       the-struct_0)
51915                                                      (expand-context/inner-observer
51916                                                       the-struct_0)
51917                                                      (expand-context/inner-for-serializable?
51918                                                       the-struct_0)
51919                                                      (expand-context/inner-to-correlated-linklet?
51920                                                       the-struct_0)
51921                                                      (expand-context/inner-normalize-locals?
51922                                                       the-struct_0)
51923                                                      (expand-context/inner-parsing-expanded?
51924                                                       the-struct_0)
51925                                                      (expand-context/inner-skip-visit-available?
51926                                                       the-struct_0)))))
51927                                               (raise-argument-error
51928                                                'struct-copy
51929                                                "expand-context/inner?"
51930                                                the-struct_0))))
51931                                        (expand-context/outer1.1
51932                                         inner206_0
51933                                         (root-expand-context/outer-post-expansion
51934                                          ctx_0)
51935                                         (root-expand-context/outer-use-site-scopes
51936                                          ctx_0)
51937                                         (root-expand-context/outer-frame-id
51938                                          ctx_0)
51939                                         (expand-context/outer-context ctx_0)
51940                                         (expand-context/outer-env ctx_0)
51941                                         (expand-context/outer-scopes ctx_0)
51942                                         (expand-context/outer-def-ctx-scopes
51943                                          ctx_0)
51944                                         (expand-context/outer-binding-layer
51945                                          ctx_0)
51946                                         (expand-context/outer-reference-records
51947                                          ctx_0)
51948                                         (expand-context/outer-only-immediate?
51949                                          ctx_0)
51950                                         (expand-context/outer-need-eventually-defined
51951                                          ctx_0)
51952                                         (expand-context/outer-current-introduction-scopes
51953                                          ctx_0)
51954                                         (expand-context/outer-current-use-scopes
51955                                          ctx_0)
51956                                         (expand-context/outer-name ctx_0))))
51957                                    (raise-argument-error
51958                                     'struct-copy
51959                                     "expand-context/outer?"
51960                                     ctx_0))))
51961                             (let ((rebuild-s_0 (keep-properties-only s_0)))
51962                               (let ((exp-s_0
51963                                      (expand.1 #f #f s_0 capture-ctx_0)))
51964                                 (let ((lifts_0
51965                                        (begin-unsafe
51966                                         (expand-context/inner-lifts
51967                                          (root-expand-context/outer-inner
51968                                           capture-ctx_0)))))
51969                                   (let ((lifts_1
51970                                          (begin-unsafe
51971                                           (box-clear!
51972                                            (lift-context-lifts lifts_0)))))
51973                                     (let ((with-lifts-s_0
51974                                            (if (let ((or-part_0
51975                                                       (pair? lifts_1)))
51976                                                  (if or-part_0
51977                                                    or-part_0
51978                                                    always-wrap?_0))
51979                                              (if (begin-unsafe
51980                                                   (expand-context/inner-to-parsed?
51981                                                    (root-expand-context/outer-inner
51982                                                     ctx_0)))
51983                                                (begin
51984                                                  (if expand-lifts?51_0
51985                                                    (void)
51986                                                    (error
51987                                                     "internal error: to-parsed mode without expanding lifts"))
51988                                                  (wrap-lifts-as-parsed-let
51989                                                   lifts_1
51990                                                   exp-s_0
51991                                                   rebuild-s_0
51992                                                   ctx_0
51993                                                   (lambda (rhs_0 rhs-ctx_0)
51994                                                     (loop_0
51995                                                      rhs_0
51996                                                      #f
51997                                                      rhs-ctx_0))))
51998                                                (if begin-form?52_0
51999                                                  (wrap-lifts-as-begin.1
52000                                                   unsafe-undefined
52001                                                   unsafe-undefined
52002                                                   lifts_1
52003                                                   exp-s_0
52004                                                   phase_0)
52005                                                  (wrap-lifts-as-let
52006                                                   lifts_1
52007                                                   exp-s_0
52008                                                   phase_0)))
52009                                              exp-s_0)))
52010                                       (if (let ((or-part_0
52011                                                  (not expand-lifts?51_0)))
52012                                             (if or-part_0
52013                                               or-part_0
52014                                               (let ((or-part_1
52015                                                      (null? lifts_1)))
52016                                                 (if or-part_1
52017                                                   or-part_1
52018                                                   (begin-unsafe
52019                                                    (expand-context/inner-to-parsed?
52020                                                     (root-expand-context/outer-inner
52021                                                      ctx_0)))))))
52022                                         with-lifts-s_0
52023                                         (begin
52024                                           (let ((obs_0
52025                                                  (begin-unsafe
52026                                                   (expand-context/inner-observer
52027                                                    (root-expand-context/outer-inner
52028                                                     ctx_0)))))
52029                                             (if obs_0
52030                                               (call-expand-observe
52031                                                obs_0
52032                                                'letlift-loop
52033                                                with-lifts-s_0)
52034                                               (void)))
52035                                           (loop_0
52036                                            with-lifts-s_0
52037                                            #f
52038                                            ctx_0))))))))))))))))
52039                (loop_0 s59_0 always-wrap?54_0 ctx60_0))))))))))
52040(define expand-transformer.1
52041  (|#%name|
52042   expand-transformer
52043   (lambda (always-wrap?66_0
52044            begin-form?63_0
52045            context62_0
52046            expand-lifts?64_0
52047            keep-stops?67_0
52048            lift-key65_0
52049            s74_0
52050            ctx75_0)
52051     (begin
52052       (let ((lift-key_0
52053              (if (eq? lift-key65_0 unsafe-undefined)
52054                (generate-lift-key)
52055                lift-key65_0)))
52056         (begin
52057           (if log-performance?
52058             (start-performance-region 'expand 'transformer)
52059             (void))
52060           (begin0
52061             (let ((trans-ctx_0
52062                    (context->transformer-context.1
52063                     keep-stops?67_0
52064                     ctx75_0
52065                     context62_0)))
52066               (expand/capture-lifts.1
52067                always-wrap?66_0
52068                begin-form?63_0
52069                expand-lifts?64_0
52070                lift-key_0
52071                s74_0
52072                trans-ctx_0))
52073             (if log-performance? (end-performance-region) (void)))))))))
52074(define context->transformer-context.1
52075  (|#%name|
52076   context->transformer-context
52077   (lambda (keep-stops?77_0 ctx80_0 context79_0)
52078     (begin
52079       (let ((phase_0
52080              (add1
52081               (begin-unsafe
52082                (expand-context/inner-phase
52083                 (root-expand-context/outer-inner ctx80_0))))))
52084         (let ((ns_0
52085                (namespace->namespace-at-phase
52086                 (begin-unsafe
52087                  (expand-context/inner-namespace
52088                   (root-expand-context/outer-inner ctx80_0)))
52089                 phase_0)))
52090           (begin
52091             (namespace-visit-available-modules! ns_0 phase_0)
52092             (if (expand-context/outer? ctx80_0)
52093               (let ((only-immediate?228_0
52094                      (if keep-stops?77_0
52095                        (begin-unsafe
52096                         (expand-context/outer-only-immediate? ctx80_0))
52097                        #f)))
52098                 (let ((inner231_0
52099                        (let ((the-struct_0
52100                               (root-expand-context/outer-inner ctx80_0)))
52101                          (if (expand-context/inner? the-struct_0)
52102                            (let ((stops234_0
52103                                   (if keep-stops?77_0
52104                                     (begin-unsafe
52105                                      (expand-context/inner-stops
52106                                       (root-expand-context/outer-inner
52107                                        ctx80_0)))
52108                                     empty-free-id-set)))
52109                              (expand-context/inner2.1
52110                               (root-expand-context/inner-self-mpi
52111                                the-struct_0)
52112                               (root-expand-context/inner-module-scopes
52113                                the-struct_0)
52114                               (root-expand-context/inner-top-level-bind-scope
52115                                the-struct_0)
52116                               (root-expand-context/inner-all-scopes-stx
52117                                the-struct_0)
52118                               (root-expand-context/inner-defined-syms
52119                                the-struct_0)
52120                               (root-expand-context/inner-counter the-struct_0)
52121                               (root-expand-context/inner-lift-key
52122                                the-struct_0)
52123                               (expand-context/inner-to-parsed? the-struct_0)
52124                               phase_0
52125                               ns_0
52126                               (expand-context/inner-just-once? the-struct_0)
52127                               (expand-context/inner-module-begin-k
52128                                the-struct_0)
52129                               (expand-context/inner-allow-unbound?
52130                                the-struct_0)
52131                               (expand-context/inner-in-local-expand?
52132                                the-struct_0)
52133                               (|expand-context/inner-keep-#%expression?|
52134                                the-struct_0)
52135                               stops234_0
52136                               (expand-context/inner-declared-submodule-names
52137                                the-struct_0)
52138                               (expand-context/inner-lifts the-struct_0)
52139                               (expand-context/inner-lift-envs the-struct_0)
52140                               (expand-context/inner-module-lifts the-struct_0)
52141                               (expand-context/inner-require-lifts
52142                                the-struct_0)
52143                               (expand-context/inner-to-module-lifts
52144                                the-struct_0)
52145                               (expand-context/inner-requires+provides
52146                                the-struct_0)
52147                               (expand-context/inner-observer the-struct_0)
52148                               (expand-context/inner-for-serializable?
52149                                the-struct_0)
52150                               (expand-context/inner-to-correlated-linklet?
52151                                the-struct_0)
52152                               (expand-context/inner-normalize-locals?
52153                                the-struct_0)
52154                               (expand-context/inner-parsing-expanded?
52155                                the-struct_0)
52156                               (expand-context/inner-skip-visit-available?
52157                                the-struct_0)))
52158                            (raise-argument-error
52159                             'struct-copy
52160                             "expand-context/inner?"
52161                             the-struct_0)))))
52162                   (let ((only-immediate?228_1 only-immediate?228_0))
52163                     (expand-context/outer1.1
52164                      inner231_0
52165                      #f
52166                      (root-expand-context/outer-use-site-scopes ctx80_0)
52167                      (root-expand-context/outer-frame-id ctx80_0)
52168                      context79_0
52169                      empty-env
52170                      null
52171                      #f
52172                      (expand-context/outer-binding-layer ctx80_0)
52173                      (expand-context/outer-reference-records ctx80_0)
52174                      only-immediate?228_1
52175                      (expand-context/outer-need-eventually-defined ctx80_0)
52176                      (expand-context/outer-current-introduction-scopes
52177                       ctx80_0)
52178                      (expand-context/outer-current-use-scopes ctx80_0)
52179                      (expand-context/outer-name ctx80_0)))))
52180               (raise-argument-error
52181                'struct-copy
52182                "expand-context/outer?"
52183                ctx80_0)))))))))
52184(define expand+eval-for-syntaxes-binding.1
52185  (|#%name|
52186   expand+eval-for-syntaxes-binding
52187   (lambda (log-next?82_0 wrap83_0 who86_0 rhs87_0 ids88_0 ctx89_0)
52188     (begin
52189       (let ((exp-rhs_0
52190              (let ((temp236_0 (as-named-context ctx89_0 ids88_0)))
52191                (expand-transformer.1
52192                 #f
52193                 #f
52194                 'expression
52195                 #t
52196                 #f
52197                 unsafe-undefined
52198                 rhs87_0
52199                 temp236_0))))
52200         (let ((phase_0
52201                (add1
52202                 (begin-unsafe
52203                  (expand-context/inner-phase
52204                   (root-expand-context/outer-inner ctx89_0))))))
52205           (let ((parsed-rhs_0
52206                  (if (begin-unsafe
52207                       (expand-context/inner-to-parsed?
52208                        (root-expand-context/outer-inner ctx89_0)))
52209                    exp-rhs_0
52210                    (let ((temp238_0
52211                           (let ((temp239_0 (as-to-parsed-context ctx89_0)))
52212                             (context->transformer-context.1
52213                              #f
52214                              temp239_0
52215                              'expression))))
52216                      (expand.1 #f #f exp-rhs_0 temp238_0)))))
52217             (begin
52218               (if log-next?82_0
52219                 (let ((obs_0
52220                        (begin-unsafe
52221                         (expand-context/inner-observer
52222                          (root-expand-context/outer-inner ctx89_0)))))
52223                   (if obs_0 (call-expand-observe obs_0 'next) (void)))
52224                 (void))
52225               (values
52226                exp-rhs_0
52227                parsed-rhs_0
52228                (let ((temp244_0
52229                       (namespace->namespace-at-phase
52230                        (begin-unsafe
52231                         (expand-context/inner-namespace
52232                          (root-expand-context/outer-inner ctx89_0)))
52233                        phase_0)))
52234                  (eval-for-bindings.1
52235                   wrap83_0
52236                   who86_0
52237                   ids88_0
52238                   parsed-rhs_0
52239                   phase_0
52240                   temp244_0
52241                   ctx89_0)))))))))))
52242(define eval-for-syntaxes-binding
52243  (lambda (who_0 rhs_0 ids_0 ctx_0)
52244    (call-with-values
52245     (lambda ()
52246       (expand+eval-for-syntaxes-binding.1 #t #f who_0 rhs_0 ids_0 ctx_0))
52247     (case-lambda
52248      ((exp-rhs_0 parsed-rhs_0 vals_0) vals_0)
52249      (args (raise-binding-result-arity-error 3 args))))))
52250(define eval-for-bindings.1
52251  (|#%name|
52252   eval-for-bindings
52253   (lambda (wrap91_0 who93_0 ids94_0 p95_0 phase96_0 ns97_0 ctx98_0)
52254     (begin
52255       (let ((compiled_0
52256              (if (can-direct-eval?
52257                   p95_0
52258                   ns97_0
52259                   (begin-unsafe
52260                    (root-expand-context/inner-self-mpi
52261                     (root-expand-context/outer-inner ctx98_0))))
52262                #f
52263                (compile-single
52264                 p95_0
52265                 (make-compile-context.1
52266                  #f
52267                  unsafe-undefined
52268                  #f
52269                  ns97_0
52270                  phase96_0
52271                  unsafe-undefined)))))
52272         (let ((vals_0
52273                (call-with-values
52274                 (lambda ()
52275                   (call-with-continuation-barrier
52276                    (lambda ()
52277                      (with-continuation-mark*
52278                       authentic
52279                       parameterization-key
52280                       (extend-parameterization
52281                        (continuation-mark-set-first #f parameterization-key)
52282                        1/current-namespace
52283                        ns97_0
52284                        eval-jit-enabled
52285                        #f)
52286                       (with-continuation-mark*
52287                        authentic
52288                        current-expand-context
52289                        ctx98_0
52290                        (if compiled_0
52291                          (if wrap91_0
52292                            (|#%app|
52293                             wrap91_0
52294                             (lambda () (eval-single-top compiled_0 ns97_0)))
52295                            (eval-single-top compiled_0 ns97_0))
52296                          (let ((self-mpi_0
52297                                 (begin-unsafe
52298                                  (root-expand-context/inner-self-mpi
52299                                   (root-expand-context/outer-inner
52300                                    ctx98_0)))))
52301                            (if wrap91_0
52302                              (|#%app|
52303                               wrap91_0
52304                               (lambda ()
52305                                 (direct-eval p95_0 ns97_0 self-mpi_0)))
52306                              (direct-eval p95_0 ns97_0 self-mpi_0)))))))))
52307                 list)))
52308           (begin
52309             (if (if wrap91_0
52310                   wrap91_0
52311                   (let ((app_0 (length vals_0))) (= app_0 (length ids94_0))))
52312               (void)
52313               (raise-bindings-arity-error who93_0 ids94_0 vals_0))
52314             vals_0)))))))
52315(define keep-properties-only
52316  (lambda (s_0) (datum->syntax$1 #f 'props s_0 s_0)))
52317(define keep-properties-only~ (lambda (s_0) #f))
52318(define keep-as-needed.1
52319  (|#%name|
52320   keep-as-needed
52321   (lambda (for-track?100_0
52322            keep-for-error?102_0
52323            keep-for-parsed?101_0
52324            ctx106_0
52325            s107_0)
52326     (begin
52327       (let ((d_0 (syntax-e$1 s107_0)))
52328         (let ((keep-e_0
52329                (if (symbol? d_0)
52330                  d_0
52331                  (if (if (pair? d_0)
52332                        (let ((s_0 (car d_0)))
52333                          (begin-unsafe (symbol? (syntax-content s_0))))
52334                        #f)
52335                    (syntax-e$1 (car d_0))
52336                    #f))))
52337           (if (begin-unsafe
52338                (expand-context/inner-to-parsed?
52339                 (root-expand-context/outer-inner ctx106_0)))
52340             (if (if keep-for-parsed?101_0
52341                   keep-for-parsed?101_0
52342                   keep-for-error?102_0)
52343               (datum->syntax$1 #f keep-e_0 s107_0 s107_0)
52344               #f)
52345             (if (if for-track?100_0 (if (pair? d_0) keep-e_0 #f) #f)
52346               (datum->syntax$1 #f (list (car d_0)) s107_0 s107_0)
52347               (datum->syntax$1 s107_0 keep-e_0 s107_0 s107_0)))))))))
52348(define attach-disappeared-transformer-bindings
52349  (lambda (s_0 trans-idss_0)
52350    (if (null? trans-idss_0)
52351      s_0
52352      (syntax-property$1
52353       s_0
52354       'disappeared-binding
52355       (let ((app_0 (apply append trans-idss_0)))
52356         (append
52357          app_0
52358          (let ((or-part_0 (syntax-property$1 s_0 'disappeared-binding)))
52359            (if or-part_0 or-part_0 null))))))))
52360(define increment-binding-layer
52361  (lambda (ids_0 ctx_0 layer-val_0)
52362    (if (letrec*
52363         ((loop_0
52364           (|#%name|
52365            loop
52366            (lambda (ids_1)
52367              (begin
52368                (let ((or-part_0 (identifier? ids_1)))
52369                  (if or-part_0
52370                    or-part_0
52371                    (if (pair? ids_1)
52372                      (let ((or-part_1 (loop_0 (car ids_1))))
52373                        (if or-part_1 or-part_1 (loop_0 (cdr ids_1))))
52374                      #f))))))))
52375         (loop_0 ids_0))
52376      layer-val_0
52377      (begin-unsafe (expand-context/outer-binding-layer ctx_0)))))
52378(define wrap-lifts-as-parsed-let
52379  (lambda (lifts_0 exp-s_0 rebuild-s_0 ctx_0 parse-rhs_0)
52380    (let ((idss+keyss+rhss_0 (get-lifts-as-lists lifts_0)))
52381      (letrec*
52382       ((lets-loop_0
52383         (|#%name|
52384          lets-loop
52385          (lambda (idss+keyss+rhss_1 rhs-ctx_0)
52386            (begin
52387              (if (null? idss+keyss+rhss_1)
52388                exp-s_0
52389                (let ((ids_0 (caar idss+keyss+rhss_1)))
52390                  (let ((keys_0 (cadar idss+keyss+rhss_1)))
52391                    (let ((rhs_0 (caddar idss+keyss+rhss_1)))
52392                      (let ((exp-rhs_0 (|#%app| parse-rhs_0 rhs_0 rhs-ctx_0)))
52393                        (let ((app_0 (list ids_0)))
52394                          (let ((app_1 (list (list keys_0 exp-rhs_0))))
52395                            (parsed-let-values17.1
52396                             rebuild-s_0
52397                             app_0
52398                             app_1
52399                             (list
52400                              (let ((app_2 (cdr idss+keyss+rhss_1)))
52401                                (lets-loop_0
52402                                 app_2
52403                                 (if (expand-context/outer? rhs-ctx_0)
52404                                   (let ((env253_0
52405                                          (begin
52406                                            (letrec*
52407                                             ((for-loop_0
52408                                               (|#%name|
52409                                                for-loop
52410                                                (lambda (env_0 lst_0 lst_1)
52411                                                  (begin
52412                                                    (if (if (pair? lst_0)
52413                                                          (pair? lst_1)
52414                                                          #f)
52415                                                      (let ((id_0
52416                                                             (unsafe-car
52417                                                              lst_0)))
52418                                                        (let ((rest_0
52419                                                               (unsafe-cdr
52420                                                                lst_0)))
52421                                                          (let ((key_0
52422                                                                 (unsafe-car
52423                                                                  lst_1)))
52424                                                            (let ((rest_1
52425                                                                   (unsafe-cdr
52426                                                                    lst_1)))
52427                                                              (let ((val_0
52428                                                                     (local-variable1.1
52429                                                                      id_0)))
52430                                                                (let ((env_1
52431                                                                       (let ((env_1
52432                                                                              (begin-unsafe
52433                                                                               (hash-set
52434                                                                                env_0
52435                                                                                key_0
52436                                                                                val_0))))
52437                                                                         (values
52438                                                                          env_1))))
52439                                                                  (for-loop_0
52440                                                                   env_1
52441                                                                   rest_0
52442                                                                   rest_1)))))))
52443                                                      env_0))))))
52444                                             (for-loop_0
52445                                              (begin-unsafe
52446                                               (expand-context/outer-env
52447                                                rhs-ctx_0))
52448                                              ids_0
52449                                              keys_0)))))
52450                                     (let ((inner254_0
52451                                            (root-expand-context/outer-inner
52452                                             rhs-ctx_0)))
52453                                       (let ((env253_1 env253_0))
52454                                         (expand-context/outer1.1
52455                                          inner254_0
52456                                          (root-expand-context/outer-post-expansion
52457                                           rhs-ctx_0)
52458                                          (root-expand-context/outer-use-site-scopes
52459                                           rhs-ctx_0)
52460                                          (root-expand-context/outer-frame-id
52461                                           rhs-ctx_0)
52462                                          (expand-context/outer-context
52463                                           rhs-ctx_0)
52464                                          env253_1
52465                                          (expand-context/outer-scopes
52466                                           rhs-ctx_0)
52467                                          (expand-context/outer-def-ctx-scopes
52468                                           rhs-ctx_0)
52469                                          (expand-context/outer-binding-layer
52470                                           rhs-ctx_0)
52471                                          (expand-context/outer-reference-records
52472                                           rhs-ctx_0)
52473                                          (expand-context/outer-only-immediate?
52474                                           rhs-ctx_0)
52475                                          (expand-context/outer-need-eventually-defined
52476                                           rhs-ctx_0)
52477                                          (expand-context/outer-current-introduction-scopes
52478                                           rhs-ctx_0)
52479                                          (expand-context/outer-current-use-scopes
52480                                           rhs-ctx_0)
52481                                          (expand-context/outer-name
52482                                           rhs-ctx_0)))))
52483                                   (raise-argument-error
52484                                    'struct-copy
52485                                    "expand-context/outer?"
52486                                    rhs-ctx_0))))))))))))))))))
52487       (lets-loop_0 idss+keyss+rhss_0 ctx_0)))))
52488(define rename-transformer-target-in-context
52489  (lambda (t_0 ctx_0)
52490    (with-continuation-mark*
52491     authentic
52492     current-expand-context
52493     ctx_0
52494     (1/rename-transformer-target t_0))))
52495(define maybe-install-free=id-in-context!
52496  (lambda (val_0 id_0 phase_0 ctx_0)
52497    (if (1/rename-transformer? val_0)
52498      (with-continuation-mark*
52499       authentic
52500       current-expand-context
52501       ctx_0
52502       (maybe-install-free=id! val_0 id_0 phase_0))
52503      (void))))
52504(define transfer-srcloc
52505  (lambda (new-s_0 old-s_0)
52506    (let ((srcloc_0 (syntax-srcloc$1 old-s_0)))
52507      (if srcloc_0
52508        (if (syntax?$1 new-s_0)
52509          (syntax2.1
52510           (syntax-content* new-s_0)
52511           (syntax-scopes new-s_0)
52512           (syntax-shifted-multi-scopes new-s_0)
52513           (syntax-mpi-shifts new-s_0)
52514           srcloc_0
52515           (syntax-props new-s_0)
52516           (syntax-inspector new-s_0))
52517          (raise-argument-error 'struct-copy "syntax?" new-s_0))
52518        new-s_0))))
52519(define stop-ids->all-stop-ids
52520  (lambda (stop-ids_0 phase_0)
52521    (if (null? stop-ids_0)
52522      stop-ids_0
52523      (let ((p-core-stx_0 (syntax-shift-phase-level$1 core-stx phase_0)))
52524        (if (if (= 1 (length stop-ids_0))
52525              (let ((app_0 (car stop-ids_0)))
52526                (free-identifier=?$1
52527                 app_0
52528                 (datum->syntax$1 p-core-stx_0 'module*)
52529                 phase_0
52530                 phase_0))
52531              #f)
52532          stop-ids_0
52533          (append
52534           stop-ids_0
52535           (reverse$1
52536            (begin
52537              (letrec*
52538               ((for-loop_0
52539                 (|#%name|
52540                  for-loop
52541                  (lambda (fold-var_0 lst_0)
52542                    (begin
52543                      (if (pair? lst_0)
52544                        (let ((sym_0 (unsafe-car lst_0)))
52545                          (let ((rest_0 (unsafe-cdr lst_0)))
52546                            (let ((fold-var_1
52547                                   (let ((fold-var_1
52548                                          (cons
52549                                           (datum->syntax$1 p-core-stx_0 sym_0)
52550                                           fold-var_0)))
52551                                     (values fold-var_1))))
52552                              (for-loop_0 fold-var_1 rest_0))))
52553                        fold-var_0))))))
52554               (for-loop_0 null auto-stop-syms))))))))))
52555(define auto-stop-syms
52556  '(begin
52557     quote
52558     set!
52559     lambda
52560     case-lambda
52561     let-values
52562     letrec-values
52563     if
52564     begin0
52565     with-continuation-mark
52566     letrec-syntaxes+values
52567     |#%app|
52568     |#%expression|
52569     |#%top|
52570     |#%variable-reference|))
52571(define module-expand-stop-ids
52572  (lambda (phase_0)
52573    (let ((p-core-stx_0 (syntax-shift-phase-level$1 core-stx phase_0)))
52574      (reverse$1
52575       (begin
52576         (letrec*
52577          ((for-loop_0
52578            (|#%name|
52579             for-loop
52580             (lambda (fold-var_0 lst_0)
52581               (begin
52582                 (if (pair? lst_0)
52583                   (let ((sym_0 (unsafe-car lst_0)))
52584                     (let ((rest_0 (unsafe-cdr lst_0)))
52585                       (let ((fold-var_1
52586                              (let ((fold-var_1
52587                                     (cons
52588                                      (datum->syntax$1 p-core-stx_0 sym_0)
52589                                      fold-var_0)))
52590                                (values fold-var_1))))
52591                         (for-loop_0 fold-var_1 rest_0))))
52592                   fold-var_0))))))
52593          (for-loop_0 null module-stop-syms)))))))
52594(define module-stop-syms
52595  (append
52596   auto-stop-syms
52597   '(define-values
52598     define-syntaxes
52599     begin-for-syntax
52600     |#%require|
52601     |#%provide|
52602     module
52603     module*
52604     |#%declare|
52605     |#%stratified-body|)))
52606(define finish_2793
52607  (make-struct-type-install-properties
52608   '(internal-definition-context)
52609   7
52610   0
52611   #f
52612   null
52613   (current-inspector)
52614   #f
52615   '(0 1 2 3 4 5 6)
52616   #f
52617   'internal-definition-context))
52618(define struct:internal-definition-context
52619  (make-record-type-descriptor*
52620   'internal-definition-context
52621   #f
52622   (|#%nongenerative-uid| internal-definition-context)
52623   #f
52624   #f
52625   7
52626   0))
52627(define effect_2979 (finish_2793 struct:internal-definition-context))
52628(define internal-definition-context1.1
52629  (|#%name|
52630   internal-definition-context
52631   (record-constructor
52632    (make-record-constructor-descriptor
52633     struct:internal-definition-context
52634     #f
52635     #f))))
52636(define 1/internal-definition-context?_2482
52637  (|#%name|
52638   internal-definition-context?
52639   (record-predicate struct:internal-definition-context)))
52640(define 1/internal-definition-context?
52641  (|#%name|
52642   internal-definition-context?
52643   (lambda (v)
52644     (if (1/internal-definition-context?_2482 v)
52645       #t
52646       ($value
52647        (if (impersonator? v)
52648          (1/internal-definition-context?_2482 (impersonator-val v))
52649          #f))))))
52650(define internal-definition-context-frame-id_2857
52651  (|#%name|
52652   internal-definition-context-frame-id
52653   (record-accessor struct:internal-definition-context 0)))
52654(define internal-definition-context-frame-id
52655  (|#%name|
52656   internal-definition-context-frame-id
52657   (lambda (s)
52658     (if (1/internal-definition-context?_2482 s)
52659       (internal-definition-context-frame-id_2857 s)
52660       ($value
52661        (impersonate-ref
52662         internal-definition-context-frame-id_2857
52663         struct:internal-definition-context
52664         0
52665         s
52666         'internal-definition-context
52667         'frame-id))))))
52668(define internal-definition-context-outside-edge_1731
52669  (|#%name|
52670   internal-definition-context-outside-edge
52671   (record-accessor struct:internal-definition-context 1)))
52672(define internal-definition-context-outside-edge
52673  (|#%name|
52674   internal-definition-context-outside-edge
52675   (lambda (s)
52676     (if (1/internal-definition-context?_2482 s)
52677       (internal-definition-context-outside-edge_1731 s)
52678       ($value
52679        (impersonate-ref
52680         internal-definition-context-outside-edge_1731
52681         struct:internal-definition-context
52682         1
52683         s
52684         'internal-definition-context
52685         'outside-edge))))))
52686(define internal-definition-context-inside-edge_2770
52687  (|#%name|
52688   internal-definition-context-inside-edge
52689   (record-accessor struct:internal-definition-context 2)))
52690(define internal-definition-context-inside-edge
52691  (|#%name|
52692   internal-definition-context-inside-edge
52693   (lambda (s)
52694     (if (1/internal-definition-context?_2482 s)
52695       (internal-definition-context-inside-edge_2770 s)
52696       ($value
52697        (impersonate-ref
52698         internal-definition-context-inside-edge_2770
52699         struct:internal-definition-context
52700         2
52701         s
52702         'internal-definition-context
52703         'inside-edge))))))
52704(define internal-definition-context-add-scope?_2849
52705  (|#%name|
52706   internal-definition-context-add-scope?
52707   (record-accessor struct:internal-definition-context 3)))
52708(define internal-definition-context-add-scope?
52709  (|#%name|
52710   internal-definition-context-add-scope?
52711   (lambda (s)
52712     (if (1/internal-definition-context?_2482 s)
52713       (internal-definition-context-add-scope?_2849 s)
52714       ($value
52715        (impersonate-ref
52716         internal-definition-context-add-scope?_2849
52717         struct:internal-definition-context
52718         3
52719         s
52720         'internal-definition-context
52721         'add-scope?))))))
52722(define internal-definition-context-env-mixins_1685
52723  (|#%name|
52724   internal-definition-context-env-mixins
52725   (record-accessor struct:internal-definition-context 4)))
52726(define internal-definition-context-env-mixins
52727  (|#%name|
52728   internal-definition-context-env-mixins
52729   (lambda (s)
52730     (if (1/internal-definition-context?_2482 s)
52731       (internal-definition-context-env-mixins_1685 s)
52732       ($value
52733        (impersonate-ref
52734         internal-definition-context-env-mixins_1685
52735         struct:internal-definition-context
52736         4
52737         s
52738         'internal-definition-context
52739         'env-mixins))))))
52740(define internal-definition-context-use-site-scopes_3204
52741  (|#%name|
52742   internal-definition-context-use-site-scopes
52743   (record-accessor struct:internal-definition-context 5)))
52744(define internal-definition-context-use-site-scopes
52745  (|#%name|
52746   internal-definition-context-use-site-scopes
52747   (lambda (s)
52748     (if (1/internal-definition-context?_2482 s)
52749       (internal-definition-context-use-site-scopes_3204 s)
52750       ($value
52751        (impersonate-ref
52752         internal-definition-context-use-site-scopes_3204
52753         struct:internal-definition-context
52754         5
52755         s
52756         'internal-definition-context
52757         'use-site-scopes))))))
52758(define internal-definition-context-parent-ctx_2522
52759  (|#%name|
52760   internal-definition-context-parent-ctx
52761   (record-accessor struct:internal-definition-context 6)))
52762(define internal-definition-context-parent-ctx
52763  (|#%name|
52764   internal-definition-context-parent-ctx
52765   (lambda (s)
52766     (if (1/internal-definition-context?_2482 s)
52767       (internal-definition-context-parent-ctx_2522 s)
52768       ($value
52769        (impersonate-ref
52770         internal-definition-context-parent-ctx_2522
52771         struct:internal-definition-context
52772         6
52773         s
52774         'internal-definition-context
52775         'parent-ctx))))))
52776(define finish_2692
52777  (make-struct-type-install-properties
52778   '(env-mixin)
52779   4
52780   0
52781   #f
52782   null
52783   (current-inspector)
52784   #f
52785   '(0 1 2 3)
52786   #f
52787   'env-mixin))
52788(define struct:env-mixin
52789  (make-record-type-descriptor*
52790   'env-mixin
52791   #f
52792   (|#%nongenerative-uid| env-mixin)
52793   #f
52794   #f
52795   4
52796   0))
52797(define effect_2352 (finish_2692 struct:env-mixin))
52798(define env-mixin2.1
52799  (|#%name|
52800   env-mixin
52801   (record-constructor
52802    (make-record-constructor-descriptor struct:env-mixin #f #f))))
52803(define env-mixin?_2685
52804  (|#%name| env-mixin? (record-predicate struct:env-mixin)))
52805(define env-mixin?
52806  (|#%name|
52807   env-mixin?
52808   (lambda (v)
52809     (if (env-mixin?_2685 v)
52810       #t
52811       ($value
52812        (if (impersonator? v) (env-mixin?_2685 (impersonator-val v)) #f))))))
52813(define env-mixin-id_3169
52814  (|#%name| env-mixin-id (record-accessor struct:env-mixin 0)))
52815(define env-mixin-id
52816  (|#%name|
52817   env-mixin-id
52818   (lambda (s)
52819     (if (env-mixin?_2685 s)
52820       (env-mixin-id_3169 s)
52821       ($value
52822        (impersonate-ref
52823         env-mixin-id_3169
52824         struct:env-mixin
52825         0
52826         s
52827         'env-mixin
52828         'id))))))
52829(define env-mixin-sym_1834
52830  (|#%name| env-mixin-sym (record-accessor struct:env-mixin 1)))
52831(define env-mixin-sym
52832  (|#%name|
52833   env-mixin-sym
52834   (lambda (s)
52835     (if (env-mixin?_2685 s)
52836       (env-mixin-sym_1834 s)
52837       ($value
52838        (impersonate-ref
52839         env-mixin-sym_1834
52840         struct:env-mixin
52841         1
52842         s
52843         'env-mixin
52844         'sym))))))
52845(define env-mixin-value_2403
52846  (|#%name| env-mixin-value (record-accessor struct:env-mixin 2)))
52847(define env-mixin-value
52848  (|#%name|
52849   env-mixin-value
52850   (lambda (s)
52851     (if (env-mixin?_2685 s)
52852       (env-mixin-value_2403 s)
52853       ($value
52854        (impersonate-ref
52855         env-mixin-value_2403
52856         struct:env-mixin
52857         2
52858         s
52859         'env-mixin
52860         'value))))))
52861(define env-mixin-cache_2675
52862  (|#%name| env-mixin-cache (record-accessor struct:env-mixin 3)))
52863(define env-mixin-cache
52864  (|#%name|
52865   env-mixin-cache
52866   (lambda (s)
52867     (if (env-mixin?_2685 s)
52868       (env-mixin-cache_2675 s)
52869       ($value
52870        (impersonate-ref
52871         env-mixin-cache_2675
52872         struct:env-mixin
52873         3
52874         s
52875         'env-mixin
52876         'cache))))))
52877(define 1/syntax-local-make-definition-context
52878  (let ((syntax-local-make-definition-context_0
52879         (|#%name|
52880          syntax-local-make-definition-context
52881          (lambda (parent-ctx3_0 add-scope?4_0)
52882            (begin
52883              (begin
52884                (if (let ((or-part_0 (not parent-ctx3_0)))
52885                      (if or-part_0
52886                        or-part_0
52887                        (1/internal-definition-context? parent-ctx3_0)))
52888                  (void)
52889                  (raise-argument-error
52890                   'syntax-local-make-definition-context
52891                   "(or/c #f internal-definition-context?)"
52892                   parent-ctx3_0))
52893                (let ((ctx_0
52894                       (get-current-expand-context.1
52895                        #f
52896                        'syntax-local-make-definition-context)))
52897                  (let ((frame-id_0
52898                         (let ((or-part_0
52899                                (if parent-ctx3_0
52900                                  (internal-definition-context-frame-id
52901                                   parent-ctx3_0)
52902                                  #f)))
52903                           (if or-part_0
52904                             or-part_0
52905                             (let ((or-part_1
52906                                    (if (not
52907                                         (eq?
52908                                          'expression
52909                                          (begin-unsafe
52910                                           (expand-context/outer-context
52911                                            ctx_0))))
52912                                      (begin-unsafe
52913                                       (root-expand-context/outer-frame-id
52914                                        ctx_0))
52915                                      #f)))
52916                               (if or-part_1 or-part_1 (gensym)))))))
52917                    (let ((outside-edge_0 (new-scope 'intdef-outside)))
52918                      (let ((inside-edge_0 (new-scope 'intdef)))
52919                        (let ((def-ctx-scopes_0
52920                               (begin-unsafe
52921                                (expand-context/outer-def-ctx-scopes ctx_0))))
52922                          (begin
52923                            (if def-ctx-scopes_0
52924                              (set-box!
52925                               def-ctx-scopes_0
52926                               (cons
52927                                inside-edge_0
52928                                (cons
52929                                 outside-edge_0
52930                                 (unbox def-ctx-scopes_0))))
52931                              (void))
52932                            (let ((use-site-scopes_0 (box '())))
52933                              (internal-definition-context1.1
52934                               frame-id_0
52935                               outside-edge_0
52936                               inside-edge_0
52937                               add-scope?4_0
52938                               (box null)
52939                               use-site-scopes_0
52940                               parent-ctx3_0))))))))))))))
52941    (|#%name|
52942     syntax-local-make-definition-context
52943     (case-lambda
52944      (() (begin (syntax-local-make-definition-context_0 #f #t)))
52945      ((parent-ctx_0 add-scope?4_0)
52946       (syntax-local-make-definition-context_0 parent-ctx_0 add-scope?4_0))
52947      ((parent-ctx3_0)
52948       (syntax-local-make-definition-context_0 parent-ctx3_0 #t))))))
52949(define 1/syntax-local-bind-syntaxes
52950  (let ((syntax-local-bind-syntaxes_0
52951         (|#%name|
52952          syntax-local-bind-syntaxes
52953          (lambda (ids6_0 s7_0 intdef8_0 extra-intdefs5_0)
52954            (begin
52955              (begin
52956                (if (if (list? ids6_0) (andmap_2344 identifier? ids6_0) #f)
52957                  (void)
52958                  (raise-argument-error
52959                   'syntax-local-bind-syntaxes
52960                   "(listof identifier?)"
52961                   ids6_0))
52962                (begin
52963                  (if (let ((or-part_0 (not s7_0)))
52964                        (if or-part_0 or-part_0 (syntax?$1 s7_0)))
52965                    (void)
52966                    (raise-argument-error
52967                     'syntax-local-bind-syntaxes
52968                     "(or/c syntax? #f)"
52969                     s7_0))
52970                  (begin
52971                    (if (1/internal-definition-context? intdef8_0)
52972                      (void)
52973                      (raise-argument-error
52974                       'syntax-local-bind-syntaxes
52975                       "internal-definition-context?"
52976                       intdef8_0))
52977                    (begin
52978                      (if (intdefs? extra-intdefs5_0)
52979                        (void)
52980                        (raise-argument-error
52981                         'syntax-local-bind-syntaxes
52982                         intdefs?-string
52983                         extra-intdefs5_0))
52984                      (let ((ctx_0
52985                             (get-current-expand-context.1 #f 'local-expand)))
52986                        (begin
52987                          (let ((obs_0
52988                                 (begin-unsafe
52989                                  (expand-context/inner-observer
52990                                   (root-expand-context/outer-inner ctx_0)))))
52991                            (if obs_0
52992                              (call-expand-observe obs_0 'local-bind ids6_0)
52993                              (void)))
52994                          (let ((phase_0
52995                                 (begin-unsafe
52996                                  (expand-context/inner-phase
52997                                   (root-expand-context/outer-inner ctx_0)))))
52998                            (let ((all-intdefs_0
52999                                   (if (null? extra-intdefs5_0)
53000                                     intdef8_0
53001                                     (if (list? extra-intdefs5_0)
53002                                       (cons intdef8_0 extra-intdefs5_0)
53003                                       (list intdef8_0 extra-intdefs5_0)))))
53004                              (let ((intdef-ids_0
53005                                     (reverse$1
53006                                      (begin
53007                                        (letrec*
53008                                         ((for-loop_0
53009                                           (|#%name|
53010                                            for-loop
53011                                            (lambda (fold-var_0 lst_0)
53012                                              (begin
53013                                                (if (pair? lst_0)
53014                                                  (let ((id_0
53015                                                         (unsafe-car lst_0)))
53016                                                    (let ((rest_0
53017                                                           (unsafe-cdr lst_0)))
53018                                                      (let ((fold-var_1
53019                                                             (let ((fold-var_1
53020                                                                    (cons
53021                                                                     (let ((pre-id_0
53022                                                                            (remove-intdef-use-site-scopes
53023                                                                             (begin-unsafe
53024                                                                              (flip-scopes
53025                                                                               id_0
53026                                                                               (begin-unsafe
53027                                                                                (expand-context/outer-current-introduction-scopes
53028                                                                                 ctx_0))))
53029                                                                             intdef8_0)))
53030                                                                       (let ((temp39_0
53031                                                                              (add-intdef-scopes.1
53032                                                                               unsafe-undefined
53033                                                                               #t
53034                                                                               pre-id_0
53035                                                                               intdef8_0)))
53036                                                                         (add-intdef-scopes.1
53037                                                                          unsafe-undefined
53038                                                                          #f
53039                                                                          temp39_0
53040                                                                          extra-intdefs5_0)))
53041                                                                     fold-var_0)))
53042                                                               (values
53043                                                                fold-var_1))))
53044                                                        (for-loop_0
53045                                                         fold-var_1
53046                                                         rest_0))))
53047                                                  fold-var_0))))))
53048                                         (for-loop_0 null ids6_0))))))
53049                                (begin
53050                                  (let ((obs_0
53051                                         (begin-unsafe
53052                                          (expand-context/inner-observer
53053                                           (root-expand-context/outer-inner
53054                                            ctx_0)))))
53055                                    (if obs_0
53056                                      (call-expand-observe
53057                                       obs_0
53058                                       'rename-list
53059                                       intdef-ids_0)
53060                                      (void)))
53061                                  (let ((counter_0
53062                                         (begin-unsafe
53063                                          (root-expand-context/inner-counter
53064                                           (root-expand-context/outer-inner
53065                                            ctx_0)))))
53066                                    (let ((local-sym_0
53067                                           (if (begin-unsafe
53068                                                (expand-context/inner-normalize-locals?
53069                                                 (root-expand-context/outer-inner
53070                                                  ctx_0)))
53071                                             'loc
53072                                             #f)))
53073                                      (let ((syms_0
53074                                             (reverse$1
53075                                              (begin
53076                                                (letrec*
53077                                                 ((for-loop_0
53078                                                   (|#%name|
53079                                                    for-loop
53080                                                    (lambda (fold-var_0 lst_0)
53081                                                      (begin
53082                                                        (if (pair? lst_0)
53083                                                          (let ((intdef-id_0
53084                                                                 (unsafe-car
53085                                                                  lst_0)))
53086                                                            (let ((rest_0
53087                                                                   (unsafe-cdr
53088                                                                    lst_0)))
53089                                                              (let ((fold-var_1
53090                                                                     (let ((fold-var_1
53091                                                                            (cons
53092                                                                             (let ((temp47_0
53093                                                                                    (internal-definition-context-frame-id
53094                                                                                     intdef8_0)))
53095                                                                               (add-local-binding!.1
53096                                                                                temp47_0
53097                                                                                #f
53098                                                                                local-sym_0
53099                                                                                intdef-id_0
53100                                                                                phase_0
53101                                                                                counter_0))
53102                                                                             fold-var_0)))
53103                                                                       (values
53104                                                                        fold-var_1))))
53105                                                                (for-loop_0
53106                                                                 fold-var_1
53107                                                                 rest_0))))
53108                                                          fold-var_0))))))
53109                                                 (for-loop_0
53110                                                  null
53111                                                  intdef-ids_0))))))
53112                                        (let ((local-ctx_0
53113                                               (if s7_0
53114                                                 (let ((tmp-env_0
53115                                                        (begin
53116                                                          (letrec*
53117                                                           ((for-loop_0
53118                                                             (|#%name|
53119                                                              for-loop
53120                                                              (lambda (env_0
53121                                                                       lst_0
53122                                                                       lst_1)
53123                                                                (begin
53124                                                                  (if (if (pair?
53125                                                                           lst_0)
53126                                                                        (pair?
53127                                                                         lst_1)
53128                                                                        #f)
53129                                                                    (let ((sym_0
53130                                                                           (unsafe-car
53131                                                                            lst_0)))
53132                                                                      (let ((rest_0
53133                                                                             (unsafe-cdr
53134                                                                              lst_0)))
53135                                                                        (let ((intdef-id_0
53136                                                                               (unsafe-car
53137                                                                                lst_1)))
53138                                                                          (let ((rest_1
53139                                                                                 (unsafe-cdr
53140                                                                                  lst_1)))
53141                                                                            (let ((val_0
53142                                                                                   (local-variable1.1
53143                                                                                    intdef-id_0)))
53144                                                                              (let ((env_1
53145                                                                                     (let ((env_1
53146                                                                                            (begin-unsafe
53147                                                                                             (hash-set
53148                                                                                              env_0
53149                                                                                              sym_0
53150                                                                                              val_0))))
53151                                                                                       (values
53152                                                                                        env_1))))
53153                                                                                (for-loop_0
53154                                                                                 env_1
53155                                                                                 rest_0
53156                                                                                 rest_1)))))))
53157                                                                    env_0))))))
53158                                                           (for-loop_0
53159                                                            (begin-unsafe
53160                                                             (expand-context/outer-env
53161                                                              ctx_0))
53162                                                            syms_0
53163                                                            intdef-ids_0)))))
53164                                                   (let ((temp49_0
53165                                                          (if (expand-context/outer?
53166                                                               ctx_0)
53167                                                            (let ((inner53_0
53168                                                                   (root-expand-context/outer-inner
53169                                                                    ctx_0)))
53170                                                              (expand-context/outer1.1
53171                                                               inner53_0
53172                                                               (root-expand-context/outer-post-expansion
53173                                                                ctx_0)
53174                                                               (root-expand-context/outer-use-site-scopes
53175                                                                ctx_0)
53176                                                               (root-expand-context/outer-frame-id
53177                                                                ctx_0)
53178                                                               (expand-context/outer-context
53179                                                                ctx_0)
53180                                                               tmp-env_0
53181                                                               (expand-context/outer-scopes
53182                                                                ctx_0)
53183                                                               (expand-context/outer-def-ctx-scopes
53184                                                                ctx_0)
53185                                                               (expand-context/outer-binding-layer
53186                                                                ctx_0)
53187                                                               (expand-context/outer-reference-records
53188                                                                ctx_0)
53189                                                               (expand-context/outer-only-immediate?
53190                                                                ctx_0)
53191                                                               (expand-context/outer-need-eventually-defined
53192                                                                ctx_0)
53193                                                               (expand-context/outer-current-introduction-scopes
53194                                                                ctx_0)
53195                                                               (expand-context/outer-current-use-scopes
53196                                                                ctx_0)
53197                                                               (expand-context/outer-name
53198                                                                ctx_0)))
53199                                                            (raise-argument-error
53200                                                             'struct-copy
53201                                                             "expand-context/outer?"
53202                                                             ctx_0))))
53203                                                     (make-local-expand-context.1
53204                                                      'expression
53205                                                      all-intdefs_0
53206                                                      #t
53207                                                      unsafe-undefined
53208                                                      #f
53209                                                      #f
53210                                                      #f
53211                                                      temp49_0)))
53212                                                 #f)))
53213                                          (let ((vals_0
53214                                                 (if s7_0
53215                                                   (let ((input-s_0
53216                                                          (let ((s_0
53217                                                                 (add-intdef-scopes.1
53218                                                                  unsafe-undefined
53219                                                                  #f
53220                                                                  s7_0
53221                                                                  all-intdefs_0)))
53222                                                            (begin-unsafe
53223                                                             (flip-scopes
53224                                                              s_0
53225                                                              (begin-unsafe
53226                                                               (expand-context/outer-current-introduction-scopes
53227                                                                ctx_0)))))))
53228                                                     (begin
53229                                                       (let ((obs_0
53230                                                              (begin-unsafe
53231                                                               (expand-context/inner-observer
53232                                                                (root-expand-context/outer-inner
53233                                                                 ctx_0)))))
53234                                                         (if obs_0
53235                                                           (call-expand-observe
53236                                                            obs_0
53237                                                            'enter-bind)
53238                                                           (void)))
53239                                                       (let ((vals_0
53240                                                              (eval-for-syntaxes-binding
53241                                                               'syntax-local-bind-syntaxes
53242                                                               input-s_0
53243                                                               ids6_0
53244                                                               local-ctx_0)))
53245                                                         (begin
53246                                                           (let ((obs_0
53247                                                                  (begin-unsafe
53248                                                                   (expand-context/inner-observer
53249                                                                    (root-expand-context/outer-inner
53250                                                                     ctx_0)))))
53251                                                             (if obs_0
53252                                                               (call-expand-observe
53253                                                                obs_0
53254                                                                'exit-bind)
53255                                                               (void)))
53256                                                           vals_0))))
53257                                                   (reverse$1
53258                                                    (begin
53259                                                      (letrec*
53260                                                       ((for-loop_0
53261                                                         (|#%name|
53262                                                          for-loop
53263                                                          (lambda (fold-var_0
53264                                                                   lst_0)
53265                                                            (begin
53266                                                              (if (pair? lst_0)
53267                                                                (let ((intdef-id_0
53268                                                                       (unsafe-car
53269                                                                        lst_0)))
53270                                                                  (let ((rest_0
53271                                                                         (unsafe-cdr
53272                                                                          lst_0)))
53273                                                                    (let ((fold-var_1
53274                                                                           (cons
53275                                                                            (local-variable1.1
53276                                                                             intdef-id_0)
53277                                                                            fold-var_0)))
53278                                                                      (let ((fold-var_2
53279                                                                             (values
53280                                                                              fold-var_1)))
53281                                                                        (for-loop_0
53282                                                                         fold-var_2
53283                                                                         rest_0)))))
53284                                                                fold-var_0))))))
53285                                                       (for-loop_0
53286                                                        null
53287                                                        intdef-ids_0)))))))
53288                                            (let ((env-mixins_0
53289                                                   (internal-definition-context-env-mixins
53290                                                    intdef8_0)))
53291                                              (begin
53292                                                (set-box!
53293                                                 env-mixins_0
53294                                                 (let ((app_0
53295                                                        (reverse$1
53296                                                         (begin
53297                                                           (letrec*
53298                                                            ((for-loop_0
53299                                                              (|#%name|
53300                                                               for-loop
53301                                                               (lambda (fold-var_0
53302                                                                        lst_0
53303                                                                        lst_1
53304                                                                        lst_2)
53305                                                                 (begin
53306                                                                   (if (if (pair?
53307                                                                            lst_0)
53308                                                                         (if (pair?
53309                                                                              lst_1)
53310                                                                           (pair?
53311                                                                            lst_2)
53312                                                                           #f)
53313                                                                         #f)
53314                                                                     (let ((intdef-id_0
53315                                                                            (unsafe-car
53316                                                                             lst_0)))
53317                                                                       (let ((rest_0
53318                                                                              (unsafe-cdr
53319                                                                               lst_0)))
53320                                                                         (let ((sym_0
53321                                                                                (unsafe-car
53322                                                                                 lst_1)))
53323                                                                           (let ((rest_1
53324                                                                                  (unsafe-cdr
53325                                                                                   lst_1)))
53326                                                                             (let ((val_0
53327                                                                                    (unsafe-car
53328                                                                                     lst_2)))
53329                                                                               (let ((rest_2
53330                                                                                      (unsafe-cdr
53331                                                                                       lst_2)))
53332                                                                                 (let ((fold-var_1
53333                                                                                        (let ((fold-var_1
53334                                                                                               (cons
53335                                                                                                (begin
53336                                                                                                  (if local-ctx_0
53337                                                                                                    (maybe-install-free=id-in-context!
53338                                                                                                     val_0
53339                                                                                                     intdef-id_0
53340                                                                                                     phase_0
53341                                                                                                     local-ctx_0)
53342                                                                                                    (void))
53343                                                                                                  (env-mixin2.1
53344                                                                                                   intdef-id_0
53345                                                                                                   sym_0
53346                                                                                                   val_0
53347                                                                                                   (make-weak-hasheq)))
53348                                                                                                fold-var_0)))
53349                                                                                          (values
53350                                                                                           fold-var_1))))
53351                                                                                   (for-loop_0
53352                                                                                    fold-var_1
53353                                                                                    rest_0
53354                                                                                    rest_1
53355                                                                                    rest_2))))))))
53356                                                                     fold-var_0))))))
53357                                                            (for-loop_0
53358                                                             null
53359                                                             intdef-ids_0
53360                                                             syms_0
53361                                                             vals_0))))))
53362                                                   (append
53363                                                    app_0
53364                                                    (unbox env-mixins_0))))
53365                                                (let ((obs_0
53366                                                       (begin-unsafe
53367                                                        (expand-context/inner-observer
53368                                                         (root-expand-context/outer-inner
53369                                                          ctx_0)))))
53370                                                  (if obs_0
53371                                                    (call-expand-observe
53372                                                     obs_0
53373                                                     'exit-local-bind)
53374                                                    (void)))
53375                                                (reverse$1
53376                                                 (begin
53377                                                   (letrec*
53378                                                    ((for-loop_0
53379                                                      (|#%name|
53380                                                       for-loop
53381                                                       (lambda (fold-var_0
53382                                                                lst_0)
53383                                                         (begin
53384                                                           (if (pair? lst_0)
53385                                                             (let ((id_0
53386                                                                    (unsafe-car
53387                                                                     lst_0)))
53388                                                               (let ((rest_0
53389                                                                      (unsafe-cdr
53390                                                                       lst_0)))
53391                                                                 (let ((fold-var_1
53392                                                                        (let ((fold-var_1
53393                                                                               (cons
53394                                                                                (begin-unsafe
53395                                                                                 (flip-scopes
53396                                                                                  id_0
53397                                                                                  (begin-unsafe
53398                                                                                   (expand-context/outer-current-introduction-scopes
53399                                                                                    ctx_0))))
53400                                                                                fold-var_0)))
53401                                                                          (values
53402                                                                           fold-var_1))))
53403                                                                   (for-loop_0
53404                                                                    fold-var_1
53405                                                                    rest_0))))
53406                                                             fold-var_0))))))
53407                                                    (for-loop_0
53408                                                     null
53409                                                     intdef-ids_0))))))))))))))))))))))))))
53410    (|#%name|
53411     syntax-local-bind-syntaxes
53412     (case-lambda
53413      ((ids_0 s_0 intdef_0)
53414       (begin (syntax-local-bind-syntaxes_0 ids_0 s_0 intdef_0 '())))
53415      ((ids_0 s_0 intdef_0 extra-intdefs5_0)
53416       (syntax-local-bind-syntaxes_0 ids_0 s_0 intdef_0 extra-intdefs5_0))))))
53417(define 1/internal-definition-context-binding-identifiers
53418  (|#%name|
53419   internal-definition-context-binding-identifiers
53420   (lambda (intdef_0)
53421     (begin
53422       (begin
53423         (if (1/internal-definition-context? intdef_0)
53424           (void)
53425           (raise-argument-error
53426            'internal-definition-context-binding-identifiers
53427            "internal-definition-context?"
53428            intdef_0))
53429         (reverse$1
53430          (let ((lst_0
53431                 (unbox (internal-definition-context-env-mixins intdef_0))))
53432            (begin
53433              (letrec*
53434               ((for-loop_0
53435                 (|#%name|
53436                  for-loop
53437                  (lambda (fold-var_0 lst_1)
53438                    (begin
53439                      (if (pair? lst_1)
53440                        (let ((env-mixin_0 (unsafe-car lst_1)))
53441                          (let ((rest_0 (unsafe-cdr lst_1)))
53442                            (let ((fold-var_1
53443                                   (let ((fold-var_1
53444                                          (cons
53445                                           (env-mixin-id env-mixin_0)
53446                                           fold-var_0)))
53447                                     (values fold-var_1))))
53448                              (for-loop_0 fold-var_1 rest_0))))
53449                        fold-var_0))))))
53450               (for-loop_0 null lst_0))))))))))
53451(define 1/internal-definition-context-introduce
53452  (let ((internal-definition-context-introduce_0
53453         (|#%name|
53454          internal-definition-context-introduce
53455          (lambda (intdef10_0 s11_0 mode9_0)
53456            (begin
53457              (begin
53458                (if (1/internal-definition-context? intdef10_0)
53459                  (void)
53460                  (raise-argument-error
53461                   'internal-definition-context-introduce
53462                   "internal-definition-context?"
53463                   intdef10_0))
53464                (begin
53465                  (if (syntax?$1 s11_0)
53466                    (void)
53467                    (raise-argument-error
53468                     'internal-definition-context-introduce
53469                     "syntax?"
53470                     s11_0))
53471                  (let ((new-s_0
53472                         (let ((temp59_0
53473                                (if (eq? mode9_0 'add)
53474                                  add-scope
53475                                  (if (eq? mode9_0 'remove)
53476                                    remove-scope
53477                                    (if (eq? mode9_0 'flip)
53478                                      flip-scope
53479                                      (raise-argument-error
53480                                       'internal-definition-context-introduce
53481                                       "(or/c 'add 'remove 'flip)"
53482                                       mode9_0))))))
53483                           (add-intdef-scopes.1
53484                            temp59_0
53485                            #t
53486                            s11_0
53487                            intdef10_0))))
53488                    (let ((ctx_0
53489                           (get-current-expand-context.1 #t 'unexpected)))
53490                      (begin
53491                        (if ctx_0
53492                          (let ((obs_0
53493                                 (begin-unsafe
53494                                  (expand-context/inner-observer
53495                                   (root-expand-context/outer-inner ctx_0)))))
53496                            (if obs_0
53497                              (call-expand-observe
53498                               obs_0
53499                               'track-syntax
53500                               'internal-definition-context-introduce
53501                               new-s_0
53502                               s11_0)
53503                              (void)))
53504                          (void))
53505                        new-s_0))))))))))
53506    (|#%name|
53507     internal-definition-context-introduce
53508     (case-lambda
53509      ((intdef_0 s_0)
53510       (begin (internal-definition-context-introduce_0 intdef_0 s_0 'flip)))
53511      ((intdef_0 s_0 mode9_0)
53512       (internal-definition-context-introduce_0 intdef_0 s_0 mode9_0))))))
53513(define 1/internal-definition-context-seal
53514  (|#%name|
53515   internal-definition-context-seal
53516   (lambda (intdef_0)
53517     (begin
53518       (begin
53519         (if (1/internal-definition-context? intdef_0)
53520           (void)
53521           (raise-argument-error
53522            'internal-definition-context-seal
53523            "internal-definition-context?"
53524            intdef_0))
53525         (void))))))
53526(define 1/identifier-remove-from-definition-context
53527  (|#%name|
53528   identifier-remove-from-definition-context
53529   (lambda (id_0 intdef_0)
53530     (begin
53531       (begin
53532         (if (identifier? id_0)
53533           (void)
53534           (raise-argument-error
53535            'identifier-remove-from-definition-context
53536            "identifier?"
53537            id_0))
53538         (if (let ((or-part_0 (1/internal-definition-context? intdef_0)))
53539               (if or-part_0
53540                 or-part_0
53541                 (if (list? intdef_0)
53542                   (andmap_2344 1/internal-definition-context? intdef_0)
53543                   #f)))
53544           (void)
53545           (raise-argument-error
53546            'identifier-remove-from-definition-context
53547            "(or/c internal-definition-context? (listof internal-definition-context?))"
53548            intdef_0))
53549         (let ((x_0
53550                (if (list? intdef_0)
53551                  (reverse$1 intdef_0)
53552                  (if (not intdef_0) null (list intdef_0)))))
53553           (begin
53554             #t
53555             (letrec*
53556              ((for-loop_0
53557                (|#%name|
53558                 for-loop
53559                 (lambda (id_1 a_0)
53560                   (begin
53561                     (if (pair? a_0)
53562                       (let ((intdef_1 (car a_0)))
53563                         (let ((id_2
53564                                (let ((id_2
53565                                       (1/internal-definition-context-introduce
53566                                        intdef_1
53567                                        id_1
53568                                        'remove)))
53569                                  (values id_2))))
53570                           (for-loop_0 id_2 (cdr a_0))))
53571                       id_1))))))
53572              (for-loop_0 id_0 x_0)))))))))
53573(define 1/internal-definition-context-add-scopes
53574  (|#%name|
53575   internal-definition-context-add-scopes
53576   (lambda (intdef_0 s_0)
53577     (begin
53578       (begin
53579         (if (syntax?$1 s_0)
53580           (void)
53581           (raise-argument-error
53582            'internal-definition-context-add-scopes
53583            "syntax?"
53584            s_0))
53585         (if (1/internal-definition-context? intdef_0)
53586           (void)
53587           (raise-argument-error
53588            'internal-definition-context-add-scopes
53589            "internal-definition-context?"
53590            intdef_0))
53591         (let ((app_0
53592                (add-scope
53593                 s_0
53594                 (internal-definition-context-inside-edge intdef_0))))
53595           (add-scope
53596            app_0
53597            (internal-definition-context-outside-edge intdef_0))))))))
53598(define 1/internal-definition-context-splice-binding-identifier
53599  (|#%name|
53600   internal-definition-context-splice-binding-identifier
53601   (lambda (intdef_0 id_0)
53602     (begin
53603       (begin
53604         (if (identifier? id_0)
53605           (void)
53606           (raise-argument-error
53607            'internal-definition-context-splice-binding-identifier
53608            "identifier?"
53609            id_0))
53610         (if (1/internal-definition-context? intdef_0)
53611           (void)
53612           (raise-argument-error
53613            'internal-definition-context-splice-binding-identifier
53614            "internal-definition-context?"
53615            intdef_0))
53616         (remove-intdef-use-site-scopes
53617          (let ((app_0
53618                 (remove-scope
53619                  id_0
53620                  (internal-definition-context-inside-edge intdef_0))))
53621            (remove-scope
53622             app_0
53623             (internal-definition-context-outside-edge intdef_0)))
53624          intdef_0))))))
53625(define intdefs?
53626  (lambda (x_0)
53627    (let ((or-part_0 (1/internal-definition-context? x_0)))
53628      (if or-part_0
53629        or-part_0
53630        (if (list? x_0)
53631          (andmap_2344 1/internal-definition-context? x_0)
53632          #f)))))
53633(define intdefs?-string
53634  "(or/c internal-definition-context? (listof internal-definition-context?))")
53635(define intdefs-or-false?
53636  (lambda (x_0)
53637    (let ((or-part_0 (not x_0))) (if or-part_0 or-part_0 (intdefs? x_0)))))
53638(define intdefs-or-false?-string
53639  "(or/c internal-definition-context? (listof internal-definition-context?) #f)")
53640(define add-intdef-bindings
53641  (lambda (env_0 intdefs_0)
53642    (let ((x_0
53643           (if (list? intdefs_0)
53644             (reverse$1 intdefs_0)
53645             (if (not intdefs_0) null (list intdefs_0)))))
53646      (begin
53647        #t
53648        (letrec*
53649         ((for-loop_0
53650           (|#%name|
53651            for-loop
53652            (lambda (env_1 a_0)
53653              (begin
53654                (if (pair? a_0)
53655                  (let ((intdef_0 (car a_0)))
53656                    (let ((env_2
53657                           (let ((env_2
53658                                  (let ((parent-ctx_0
53659                                         (internal-definition-context-parent-ctx
53660                                          intdef_0)))
53661                                    (let ((parent-env_0
53662                                           (if parent-ctx_0
53663                                             (add-intdef-bindings
53664                                              env_1
53665                                              parent-ctx_0)
53666                                             env_1)))
53667                                      (let ((env-mixins_0
53668                                             (unbox
53669                                              (internal-definition-context-env-mixins
53670                                               intdef_0))))
53671                                        (letrec*
53672                                         ((loop_0
53673                                           (|#%name|
53674                                            loop
53675                                            (lambda (env_2 env-mixins_1)
53676                                              (begin
53677                                                (if (null? env-mixins_1)
53678                                                  env_2
53679                                                  (let ((env-mixin_0
53680                                                         (car env-mixins_1)))
53681                                                    (let ((or-part_0
53682                                                           (hash-ref
53683                                                            (env-mixin-cache
53684                                                             env-mixin_0)
53685                                                            env_2
53686                                                            #f)))
53687                                                      (if or-part_0
53688                                                        or-part_0
53689                                                        (let ((new-env_0
53690                                                               (let ((env_3
53691                                                                      (loop_0
53692                                                                       env_2
53693                                                                       (cdr
53694                                                                        env-mixins_1))))
53695                                                                 (let ((key_0
53696                                                                        (env-mixin-sym
53697                                                                         env-mixin_0)))
53698                                                                   (let ((val_0
53699                                                                          (env-mixin-value
53700                                                                           env-mixin_0)))
53701                                                                     (let ((key_1
53702                                                                            key_0)
53703                                                                           (env_4
53704                                                                            env_3))
53705                                                                       (begin-unsafe
53706                                                                        (hash-set
53707                                                                         env_4
53708                                                                         key_1
53709                                                                         val_0))))))))
53710                                                          (begin
53711                                                            (hash-set!
53712                                                             (env-mixin-cache
53713                                                              env-mixin_0)
53714                                                             env_2
53715                                                             new-env_0)
53716                                                            new-env_0)))))))))))
53717                                         (loop_0
53718                                          parent-env_0
53719                                          env-mixins_0)))))))
53720                             (values env_2))))
53721                      (for-loop_0 env_2 (cdr a_0))))
53722                  env_1))))))
53723         (for-loop_0 env_0 x_0))))))
53724(define add-intdef-scopes.1
53725  (|#%name|
53726   add-intdef-scopes
53727   (lambda (action13_0 always?12_0 s16_0 intdefs17_0)
53728     (begin
53729       (let ((action_0
53730              (if (eq? action13_0 unsafe-undefined) add-scope action13_0)))
53731         (let ((x_0
53732                (if (list? intdefs17_0)
53733                  (reverse$1 intdefs17_0)
53734                  (if (not intdefs17_0) null (list intdefs17_0)))))
53735           (begin
53736             #t
53737             (letrec*
53738              ((for-loop_0
53739                (|#%name|
53740                 for-loop
53741                 (lambda (s_0 a_0)
53742                   (begin
53743                     (if (pair? a_0)
53744                       (let ((intdef_0 (car a_0)))
53745                         (let ((s_1
53746                                (if (if always?12_0
53747                                      always?12_0
53748                                      (internal-definition-context-add-scope?
53749                                       intdef_0))
53750                                  (let ((s_1
53751                                         (|#%app|
53752                                          action_0
53753                                          s_0
53754                                          (internal-definition-context-inside-edge
53755                                           intdef_0))))
53756                                    (values s_1))
53757                                  s_0)))
53758                           (for-loop_0 s_1 (cdr a_0))))
53759                       s_0))))))
53760              (for-loop_0 s16_0 x_0)))))))))
53761(define make-local-expand-context.1
53762  (|#%name|
53763   make-local-expand-context
53764   (lambda (context19_0
53765            intdefs21_0
53766            |keep-#%expression?25_0|
53767            phase20_0
53768            stop-ids22_0
53769            to-parsed-ok?23_0
53770            track-to-be-defined?24_0
53771            ctx33_0)
53772     (begin
53773       (let ((phase_0
53774              (if (eq? phase20_0 unsafe-undefined)
53775                (begin-unsafe
53776                 (expand-context/inner-phase
53777                  (root-expand-context/outer-inner ctx33_0)))
53778                phase20_0)))
53779         (let ((or-part_0
53780                (eq?
53781                 context19_0
53782                 (begin-unsafe (expand-context/outer-context ctx33_0)))))
53783           (let ((same-kind?_0
53784                  (if or-part_0
53785                    or-part_0
53786                    (if (list? context19_0)
53787                      (list?
53788                       (begin-unsafe (expand-context/outer-context ctx33_0)))
53789                      #f))))
53790             (let ((all-stop-ids_0
53791                    (if stop-ids22_0
53792                      (stop-ids->all-stop-ids stop-ids22_0 phase_0)
53793                      #f)))
53794               (let ((def-ctx-scopes_0
53795                      (if (begin-unsafe
53796                           (expand-context/outer-def-ctx-scopes ctx33_0))
53797                        (unbox
53798                         (begin-unsafe
53799                          (expand-context/outer-def-ctx-scopes ctx33_0)))
53800                        null)))
53801                 (if (expand-context/outer? ctx33_0)
53802                   (let ((env62_0
53803                          (add-intdef-bindings
53804                           (begin-unsafe (expand-context/outer-env ctx33_0))
53805                           intdefs21_0)))
53806                     (let ((use-site-scopes63_0
53807                            (if (let ((or-part_1 (eq? context19_0 'module)))
53808                                  (if or-part_1
53809                                    or-part_1
53810                                    (let ((or-part_2
53811                                           (eq? context19_0 'module-begin)))
53812                                      (if or-part_2
53813                                        or-part_2
53814                                        (list? context19_0)))))
53815                              (if (1/internal-definition-context? intdefs21_0)
53816                                (internal-definition-context-use-site-scopes
53817                                 intdefs21_0)
53818                                (let ((or-part_1
53819                                       (begin-unsafe
53820                                        (root-expand-context/outer-use-site-scopes
53821                                         ctx33_0))))
53822                                  (if or-part_1 or-part_1 (box null))))
53823                              #f)))
53824                       (let ((frame-id64_0
53825                              (if (1/internal-definition-context? intdefs21_0)
53826                                (internal-definition-context-frame-id
53827                                 intdefs21_0)
53828                                (if (not intdefs21_0)
53829                                  (begin-unsafe
53830                                   (root-expand-context/outer-frame-id
53831                                    ctx33_0))
53832                                  (if (list? intdefs21_0)
53833                                    (let ((x_0
53834                                           (if (list? intdefs21_0)
53835                                             (reverse$1 intdefs21_0)
53836                                             (if (not intdefs21_0)
53837                                               null
53838                                               (list intdefs21_0)))))
53839                                      (begin
53840                                        #t
53841                                        (letrec*
53842                                         ((for-loop_0
53843                                           (|#%name|
53844                                            for-loop
53845                                            (lambda (frame-id_0 a_0)
53846                                              (begin
53847                                                (if (pair? a_0)
53848                                                  (let ((intdef_0 (car a_0)))
53849                                                    (let ((frame-id_1
53850                                                           (let ((frame-id_1
53851                                                                  (let ((i-frame-id_0
53852                                                                         (internal-definition-context-frame-id
53853                                                                          intdef_0)))
53854                                                                    (if (if frame-id_0
53855                                                                          (if i-frame-id_0
53856                                                                            (not
53857                                                                             (eq?
53858                                                                              frame-id_0
53859                                                                              i-frame-id_0))
53860                                                                            #f)
53861                                                                          #f)
53862                                                                      'all
53863                                                                      (if frame-id_0
53864                                                                        frame-id_0
53865                                                                        i-frame-id_0)))))
53866                                                             (values
53867                                                              frame-id_1))))
53868                                                      (for-loop_0
53869                                                       frame-id_1
53870                                                       (cdr a_0))))
53871                                                  frame-id_0))))))
53872                                         (for-loop_0
53873                                          (if (not
53874                                               (eq?
53875                                                'expression
53876                                                (begin-unsafe
53877                                                 (expand-context/outer-context
53878                                                  ctx33_0))))
53879                                            (begin-unsafe
53880                                             (root-expand-context/outer-frame-id
53881                                              ctx33_0))
53882                                            #f)
53883                                          x_0))))
53884                                    (void))))))
53885                         (let ((post-expansion65_0
53886                                (let ((pe_0
53887                                       (if same-kind?_0
53888                                         (if (let ((or-part_1
53889                                                    (pair? context19_0)))
53890                                               (if or-part_1
53891                                                 or-part_1
53892                                                 (memq
53893                                                  context19_0
53894                                                  '(module module-begin top-level))))
53895                                           (begin-unsafe
53896                                            (root-expand-context/outer-post-expansion
53897                                             ctx33_0))
53898                                           #f)
53899                                         #f)))
53900                                  (if (if intdefs21_0
53901                                        (not (null? intdefs21_0))
53902                                        #f)
53903                                    (|#%name|
53904                                     post-expansion65
53905                                     (lambda (s_0)
53906                                       (begin
53907                                         (let ((temp71_0
53908                                                (apply-post-expansion
53909                                                 pe_0
53910                                                 s_0)))
53911                                           (add-intdef-scopes.1
53912                                            unsafe-undefined
53913                                            #f
53914                                            temp71_0
53915                                            intdefs21_0)))))
53916                                    pe_0))))
53917                           (let ((scopes66_0
53918                                  (append
53919                                   def-ctx-scopes_0
53920                                   (begin-unsafe
53921                                    (expand-context/outer-scopes ctx33_0)))))
53922                             (let ((only-immediate?67_0 (not stop-ids22_0)))
53923                               (let ((need-eventually-defined69_0
53924                                      (let ((ht_0
53925                                             (begin-unsafe
53926                                              (expand-context/outer-need-eventually-defined
53927                                               ctx33_0))))
53928                                        (if track-to-be-defined?24_0
53929                                          ht_0
53930                                          (if ht_0 (make-hasheqv) #f)))))
53931                                 (let ((inner70_0
53932                                        (let ((the-struct_0
53933                                               (root-expand-context/outer-inner
53934                                                ctx33_0)))
53935                                          (if (expand-context/inner?
53936                                               the-struct_0)
53937                                            (let ((to-parsed?73_0
53938                                                   (if to-parsed-ok?23_0
53939                                                     (begin-unsafe
53940                                                      (expand-context/inner-to-parsed?
53941                                                       (root-expand-context/outer-inner
53942                                                        ctx33_0)))
53943                                                     #f)))
53944                                              (let ((stops77_0
53945                                                     (free-id-set
53946                                                      phase_0
53947                                                      (if all-stop-ids_0
53948                                                        all-stop-ids_0
53949                                                        null))))
53950                                                (let ((to-parsed?73_1
53951                                                       to-parsed?73_0))
53952                                                  (expand-context/inner2.1
53953                                                   (root-expand-context/inner-self-mpi
53954                                                    the-struct_0)
53955                                                   (root-expand-context/inner-module-scopes
53956                                                    the-struct_0)
53957                                                   (root-expand-context/inner-top-level-bind-scope
53958                                                    the-struct_0)
53959                                                   (root-expand-context/inner-all-scopes-stx
53960                                                    the-struct_0)
53961                                                   (root-expand-context/inner-defined-syms
53962                                                    the-struct_0)
53963                                                   (root-expand-context/inner-counter
53964                                                    the-struct_0)
53965                                                   (root-expand-context/inner-lift-key
53966                                                    the-struct_0)
53967                                                   to-parsed?73_1
53968                                                   (expand-context/inner-phase
53969                                                    the-struct_0)
53970                                                   (expand-context/inner-namespace
53971                                                    the-struct_0)
53972                                                   #f
53973                                                   (expand-context/inner-module-begin-k
53974                                                    the-struct_0)
53975                                                   (expand-context/inner-allow-unbound?
53976                                                    the-struct_0)
53977                                                   #t
53978                                                   |keep-#%expression?25_0|
53979                                                   stops77_0
53980                                                   (expand-context/inner-declared-submodule-names
53981                                                    the-struct_0)
53982                                                   (expand-context/inner-lifts
53983                                                    the-struct_0)
53984                                                   (expand-context/inner-lift-envs
53985                                                    the-struct_0)
53986                                                   (expand-context/inner-module-lifts
53987                                                    the-struct_0)
53988                                                   (expand-context/inner-require-lifts
53989                                                    the-struct_0)
53990                                                   (expand-context/inner-to-module-lifts
53991                                                    the-struct_0)
53992                                                   (expand-context/inner-requires+provides
53993                                                    the-struct_0)
53994                                                   (expand-context/inner-observer
53995                                                    the-struct_0)
53996                                                   (expand-context/inner-for-serializable?
53997                                                    the-struct_0)
53998                                                   (expand-context/inner-to-correlated-linklet?
53999                                                    the-struct_0)
54000                                                   (expand-context/inner-normalize-locals?
54001                                                    the-struct_0)
54002                                                   (expand-context/inner-parsing-expanded?
54003                                                    the-struct_0)
54004                                                   (expand-context/inner-skip-visit-available?
54005                                                    the-struct_0)))))
54006                                            (raise-argument-error
54007                                             'struct-copy
54008                                             "expand-context/inner?"
54009                                             the-struct_0)))))
54010                                   (let ((need-eventually-defined69_1
54011                                          need-eventually-defined69_0)
54012                                         (only-immediate?67_1
54013                                          only-immediate?67_0)
54014                                         (scopes66_1 scopes66_0)
54015                                         (post-expansion65_1
54016                                          post-expansion65_0)
54017                                         (frame-id64_1 frame-id64_0)
54018                                         (use-site-scopes63_1
54019                                          use-site-scopes63_0)
54020                                         (env62_1 env62_0))
54021                                     (expand-context/outer1.1
54022                                      inner70_0
54023                                      post-expansion65_1
54024                                      use-site-scopes63_1
54025                                      frame-id64_1
54026                                      context19_0
54027                                      env62_1
54028                                      scopes66_1
54029                                      (expand-context/outer-def-ctx-scopes
54030                                       ctx33_0)
54031                                      (expand-context/outer-binding-layer
54032                                       ctx33_0)
54033                                      (expand-context/outer-reference-records
54034                                       ctx33_0)
54035                                      only-immediate?67_1
54036                                      need-eventually-defined69_1
54037                                      null
54038                                      (expand-context/outer-current-use-scopes
54039                                       ctx33_0)
54040                                      (expand-context/outer-name
54041                                       ctx33_0)))))))))))
54042                   (raise-argument-error
54043                    'struct-copy
54044                    "expand-context/outer?"
54045                    ctx33_0)))))))))))
54046(define flip-introduction-scopes
54047  (lambda (s_0 ctx_0)
54048    (flip-scopes
54049     s_0
54050     (begin-unsafe (expand-context/outer-current-introduction-scopes ctx_0)))))
54051(define flip-introduction-and-use-scopes
54052  (lambda (s_0 ctx_0)
54053    (flip-scopes
54054     (begin-unsafe
54055      (flip-scopes
54056       s_0
54057       (begin-unsafe
54058        (expand-context/outer-current-introduction-scopes ctx_0))))
54059     (begin-unsafe (expand-context/outer-current-use-scopes ctx_0)))))
54060(define remove-intdef-use-site-scopes
54061  (lambda (s_0 intdef_0)
54062    (let ((use-sites_0 (internal-definition-context-use-site-scopes intdef_0)))
54063      (if (syntax?$1 s_0)
54064        (remove-scopes s_0 (unbox use-sites_0))
54065        (reverse$1
54066         (begin
54067           (letrec*
54068            ((for-loop_0
54069              (|#%name|
54070               for-loop
54071               (lambda (fold-var_0 lst_0)
54072                 (begin
54073                   (if (pair? lst_0)
54074                     (let ((id_0 (unsafe-car lst_0)))
54075                       (let ((rest_0 (unsafe-cdr lst_0)))
54076                         (let ((fold-var_1
54077                                (let ((fold-var_1
54078                                       (cons
54079                                        (remove-scopes
54080                                         id_0
54081                                         (unbox use-sites_0))
54082                                        fold-var_0)))
54083                                  (values fold-var_1))))
54084                           (for-loop_0 fold-var_1 rest_0))))
54085                     fold-var_0))))))
54086            (for-loop_0 null s_0))))))))
54087(define 1/syntax-transforming?
54088  (|#%name|
54089   syntax-transforming?
54090   (lambda ()
54091     (begin (if (get-current-expand-context.1 #t 'unexpected) #t #f)))))
54092(define 1/syntax-transforming-with-lifts?
54093  (|#%name|
54094   syntax-transforming-with-lifts?
54095   (lambda ()
54096     (begin
54097       (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
54098         (if ctx_0
54099           (if (begin-unsafe
54100                (expand-context/inner-lifts
54101                 (root-expand-context/outer-inner ctx_0)))
54102             #t
54103             #f)
54104           #f))))))
54105(define 1/syntax-transforming-module-expression?
54106  (|#%name|
54107   syntax-transforming-module-expression?
54108   (lambda ()
54109     (begin
54110       (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
54111         (if ctx_0
54112           (if (begin-unsafe
54113                (expand-context/inner-to-module-lifts
54114                 (root-expand-context/outer-inner ctx_0)))
54115             #t
54116             #f)
54117           #f))))))
54118(define 1/syntax-local-transforming-module-provides?
54119  (|#%name|
54120   syntax-local-transforming-module-provides?
54121   (lambda ()
54122     (begin
54123       (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
54124         (if ctx_0
54125           (if (begin-unsafe
54126                (expand-context/inner-requires+provides
54127                 (root-expand-context/outer-inner ctx_0)))
54128             #t
54129             #f)
54130           #f))))))
54131(define 1/syntax-local-context
54132  (|#%name|
54133   syntax-local-context
54134   (lambda ()
54135     (begin
54136       (let ((ctx_0 (get-current-expand-context.1 #f 'syntax-local-context)))
54137         (begin-unsafe (expand-context/outer-context ctx_0)))))))
54138(define 1/syntax-local-introduce
54139  (|#%name|
54140   syntax-local-introduce
54141   (lambda (s_0)
54142     (begin
54143       (begin
54144         (if (syntax?$1 s_0)
54145           (void)
54146           (raise-argument-error 'syntax-local-introduce "syntax?" s_0))
54147         (let ((ctx_0
54148                (get-current-expand-context.1 #f 'syntax-local-introduce)))
54149           (let ((new-s_0 (flip-introduction-and-use-scopes s_0 ctx_0)))
54150             (begin
54151               (let ((obs_0
54152                      (begin-unsafe
54153                       (expand-context/inner-observer
54154                        (root-expand-context/outer-inner ctx_0)))))
54155                 (if obs_0
54156                   (call-expand-observe
54157                    obs_0
54158                    'track-syntax
54159                    'syntax-local-introduce
54160                    new-s_0
54161                    s_0)
54162                   (void)))
54163               new-s_0))))))))
54164(define 1/syntax-local-identifier-as-binding
54165  (let ((syntax-local-identifier-as-binding_0
54166         (|#%name|
54167          syntax-local-identifier-as-binding
54168          (lambda (id2_0 intdef1_0)
54169            (begin
54170              (begin
54171                (if (identifier? id2_0)
54172                  (void)
54173                  (raise-argument-error
54174                   'syntax-local-identifier-as-binding
54175                   "identifier?"
54176                   id2_0))
54177                (begin
54178                  (if intdef1_0
54179                    (if (1/internal-definition-context? intdef1_0)
54180                      (void)
54181                      (raise-argument-error
54182                       'syntax-local-identifier-as-binding
54183                       "internal-definition-context?"
54184                       intdef1_0))
54185                    (void))
54186                  (let ((ctx_0
54187                         (get-current-expand-context.1
54188                          #f
54189                          'syntax-local-identifier-as-binding)))
54190                    (let ((new-id_0
54191                           (if intdef1_0
54192                             (remove-intdef-use-site-scopes id2_0 intdef1_0)
54193                             (remove-use-site-scopes id2_0 ctx_0))))
54194                      (begin
54195                        (let ((obs_0
54196                               (begin-unsafe
54197                                (expand-context/inner-observer
54198                                 (root-expand-context/outer-inner ctx_0)))))
54199                          (if obs_0
54200                            (call-expand-observe
54201                             obs_0
54202                             'track-syntax
54203                             'syntax-local-identifier-as-binding
54204                             new-id_0
54205                             id2_0)
54206                            (void)))
54207                        new-id_0))))))))))
54208    (|#%name|
54209     syntax-local-identifier-as-binding
54210     (case-lambda
54211      ((id_0) (begin (syntax-local-identifier-as-binding_0 id_0 #f)))
54212      ((id_0 intdef1_0)
54213       (syntax-local-identifier-as-binding_0 id_0 intdef1_0))))))
54214(define 1/syntax-local-phase-level
54215  (|#%name|
54216   syntax-local-phase-level
54217   (lambda ()
54218     (begin
54219       (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
54220         (if ctx_0
54221           (begin-unsafe
54222            (expand-context/inner-phase
54223             (root-expand-context/outer-inner ctx_0)))
54224           0))))))
54225(define 1/syntax-local-name
54226  (|#%name|
54227   syntax-local-name
54228   (lambda ()
54229     (begin
54230       (let ((ctx_0 (get-current-expand-context.1 #f 'syntax-local-name)))
54231         (let ((id_0 (begin-unsafe (expand-context/outer-name ctx_0))))
54232           (if id_0 (datum->syntax$1 #f (syntax-e$1 id_0) id_0) #f)))))))
54233(define 1/make-syntax-introducer
54234  (let ((make-syntax-introducer_0
54235         (|#%name|
54236          make-syntax-introducer
54237          (lambda (as-use-site?3_0)
54238            (begin
54239              (do-make-syntax-introducer
54240               (new-scope (if as-use-site?3_0 'use-site 'macro))))))))
54241    (|#%name|
54242     make-syntax-introducer
54243     (case-lambda
54244      (() (begin (make-syntax-introducer_0 #f)))
54245      ((as-use-site?3_0) (make-syntax-introducer_0 as-use-site?3_0))))))
54246(define 1/make-interned-syntax-introducer
54247  (|#%name|
54248   make-interned-syntax-introducer
54249   (lambda (sym-key_0)
54250     (begin
54251       (begin
54252         (if (if (symbol? sym-key_0) (symbol-interned? sym-key_0) #f)
54253           (void)
54254           (raise-argument-error
54255            'make-interned-syntax-introducer
54256            "(and/c symbol? symbol-interned?)"
54257            sym-key_0))
54258         (do-make-syntax-introducer (make-interned-scope sym-key_0)))))))
54259(define do-make-syntax-introducer
54260  (lambda (sc_0)
54261    (let ((do-make-syntax-introducer_0
54262           (|#%name|
54263            do-make-syntax-introducer
54264            (lambda (s59_0 mode58_0)
54265              (begin
54266                (begin
54267                  (if (syntax?$1 s59_0)
54268                    (void)
54269                    (raise-argument-error 'syntax-introducer "syntax?" s59_0))
54270                  (let ((new-s_0
54271                         (if (eq? mode58_0 'add)
54272                           (add-scope s59_0 sc_0)
54273                           (if (eq? mode58_0 'remove)
54274                             (remove-scope s59_0 sc_0)
54275                             (if (eq? mode58_0 'flip)
54276                               (flip-scope s59_0 sc_0)
54277                               (raise-argument-error
54278                                'syntax-introducer
54279                                "(or/c 'add 'remove 'flip)"
54280                                mode58_0))))))
54281                    (let ((ctx_0
54282                           (get-current-expand-context.1 #t 'unexpected)))
54283                      (begin
54284                        (if ctx_0
54285                          (let ((obs_0
54286                                 (begin-unsafe
54287                                  (expand-context/inner-observer
54288                                   (root-expand-context/outer-inner ctx_0)))))
54289                            (if obs_0
54290                              (call-expand-observe
54291                               obs_0
54292                               'track-syntax
54293                               mode58_0
54294                               new-s_0
54295                               s59_0)
54296                              (void)))
54297                          (void))
54298                        new-s_0)))))))))
54299      (|#%name|
54300       do-make-syntax-introducer
54301       (case-lambda
54302        ((s_0) (begin (do-make-syntax-introducer_0 s_0 'flip)))
54303        ((s_0 mode58_0) (do-make-syntax-introducer_0 s_0 mode58_0)))))))
54304(define 1/make-syntax-delta-introducer
54305  (let ((make-syntax-delta-introducer_0
54306         (|#%name|
54307          make-syntax-delta-introducer
54308          (lambda (ext-s5_0 base-s6_0 phase4_0)
54309            (begin
54310              (let ((phase_0
54311                     (if (eq? phase4_0 unsafe-undefined)
54312                       (1/syntax-local-phase-level)
54313                       phase4_0)))
54314                (begin
54315                  (if (syntax?$1 ext-s5_0)
54316                    (void)
54317                    (raise-argument-error
54318                     'make-syntax-delta-introducer
54319                     "syntax?"
54320                     ext-s5_0))
54321                  (begin
54322                    (if (let ((or-part_0 (not base-s6_0)))
54323                          (if or-part_0 or-part_0 (syntax?$1 base-s6_0)))
54324                      (void)
54325                      (raise-argument-error
54326                       'make-syntax-delta-introducer
54327                       "(or/c syntax? #f)"
54328                       base-s6_0))
54329                    (begin
54330                      (if (phase? phase_0)
54331                        (void)
54332                        (raise-argument-error
54333                         'make-syntax-delta-introducer
54334                         phase?-string
54335                         phase_0))
54336                      (let ((ext-scs_0 (syntax-scope-set ext-s5_0 phase_0)))
54337                        (let ((base-scs_0
54338                               (syntax-scope-set
54339                                (if base-s6_0 base-s6_0 empty-syntax)
54340                                phase_0)))
54341                          (let ((use-base-scs_0
54342                                 (if (begin-unsafe
54343                                      (hash-keys-subset? base-scs_0 ext-scs_0))
54344                                   base-scs_0
54345                                   (let ((or-part_0
54346                                          (if (identifier? base-s6_0)
54347                                            (resolve.1
54348                                             #f
54349                                             #f
54350                                             null
54351                                             #t
54352                                             base-s6_0
54353                                             phase_0)
54354                                            #f)))
54355                                     (if or-part_0 or-part_0 (seteq))))))
54356                            (let ((delta-scs_0
54357                                   (set->list
54358                                    (set-subtract ext-scs_0 use-base-scs_0))))
54359                              (let ((maybe-taint_0
54360                                     (if (begin-unsafe
54361                                          (not (syntax-taintness ext-s5_0)))
54362                                       values
54363                                       syntax-taint$1)))
54364                                (let ((shifts_0 (syntax-mpi-shifts ext-s5_0)))
54365                                  (let ((make-syntax-delta-introducer_0
54366                                         (|#%name|
54367                                          make-syntax-delta-introducer
54368                                          (lambda (s66_0 mode65_0)
54369                                            (begin
54370                                              (begin
54371                                                (if (syntax?$1 s66_0)
54372                                                  (void)
54373                                                  (raise-argument-error
54374                                                   'syntax-introducer
54375                                                   "syntax?"
54376                                                   s66_0))
54377                                                (let ((new-s_0
54378                                                       (|#%app|
54379                                                        maybe-taint_0
54380                                                        (if (eq? mode65_0 'add)
54381                                                          (let ((temp67_0
54382                                                                 (add-scopes
54383                                                                  s66_0
54384                                                                  delta-scs_0)))
54385                                                            (syntax-add-shifts.1
54386                                                             #t
54387                                                             temp67_0
54388                                                             shifts_0
54389                                                             #f))
54390                                                          (if (eq?
54391                                                               mode65_0
54392                                                               'remove)
54393                                                            (remove-scopes
54394                                                             s66_0
54395                                                             delta-scs_0)
54396                                                            (if (eq?
54397                                                                 mode65_0
54398                                                                 'flip)
54399                                                              (let ((temp70_0
54400                                                                     (flip-scopes
54401                                                                      s66_0
54402                                                                      delta-scs_0)))
54403                                                                (syntax-add-shifts.1
54404                                                                 #t
54405                                                                 temp70_0
54406                                                                 shifts_0
54407                                                                 #f))
54408                                                              (raise-argument-error
54409                                                               'syntax-introducer
54410                                                               "(or/c 'add 'remove 'flip)"
54411                                                               mode65_0)))))))
54412                                                  (let ((ctx_0
54413                                                         (get-current-expand-context.1
54414                                                          #t
54415                                                          'unexpected)))
54416                                                    (begin
54417                                                      (if ctx_0
54418                                                        (let ((obs_0
54419                                                               (begin-unsafe
54420                                                                (expand-context/inner-observer
54421                                                                 (root-expand-context/outer-inner
54422                                                                  ctx_0)))))
54423                                                          (if obs_0
54424                                                            (call-expand-observe
54425                                                             obs_0
54426                                                             'track-syntax
54427                                                             mode65_0
54428                                                             new-s_0
54429                                                             s66_0)
54430                                                            (void)))
54431                                                        (void))
54432                                                      new-s_0)))))))))
54433                                    (|#%name|
54434                                     make-syntax-delta-introducer
54435                                     (case-lambda
54436                                      ((s_0)
54437                                       (begin
54438                                         (make-syntax-delta-introducer_0
54439                                          s_0
54440                                          'add)))
54441                                      ((s_0 mode65_0)
54442                                       (make-syntax-delta-introducer_0
54443                                        s_0
54444                                        mode65_0))))))))))))))))))))
54445    (|#%name|
54446     make-syntax-delta-introducer
54447     (case-lambda
54448      ((ext-s_0 base-s_0)
54449       (begin
54450         (make-syntax-delta-introducer_0 ext-s_0 base-s_0 unsafe-undefined)))
54451      ((ext-s_0 base-s_0 phase4_0)
54452       (make-syntax-delta-introducer_0 ext-s_0 base-s_0 phase4_0))))))
54453(define 1/syntax-local-make-delta-introducer
54454  (|#%name|
54455   syntax-local-make-delta-introducer
54456   (lambda (id-stx_0)
54457     (begin
54458       (begin
54459         (if (identifier? id-stx_0)
54460           (void)
54461           (raise-argument-error
54462            'syntax-local-make-delta-introducer
54463            "identifier?"
54464            id-stx_0))
54465         (raise
54466          (|#%app|
54467           exn:fail:unsupported
54468           "syntax-local-make-delta-introducer: not supported anymore"
54469           (current-continuation-marks))))))))
54470(define do-syntax-local-value.1
54471  (|#%name|
54472   do-syntax-local-value
54473   (lambda (immediate?7_0 who9_0 id10_0 intdefs11_0 failure-thunk12_0)
54474     (begin
54475       (begin
54476         (if (identifier? id10_0)
54477           (void)
54478           (raise-argument-error who9_0 "identifier?" id10_0))
54479         (begin
54480           (if (let ((or-part_0 (not failure-thunk12_0)))
54481                 (if or-part_0
54482                   or-part_0
54483                   (if (procedure? failure-thunk12_0)
54484                     (procedure-arity-includes? failure-thunk12_0 0)
54485                     #f)))
54486             (void)
54487             (raise-argument-error
54488              who9_0
54489              "(or/c #f (procedure-arity-includes/c 0))"
54490              failure-thunk12_0))
54491           (begin
54492             (if (intdefs-or-false? intdefs11_0)
54493               (void)
54494               (raise-argument-error
54495                who9_0
54496                intdefs-or-false?-string
54497                intdefs11_0))
54498             (let ((current-ctx_0 (get-current-expand-context.1 #f who9_0)))
54499               (let ((ctx_0
54500                      (if intdefs11_0
54501                        (if (expand-context/outer? current-ctx_0)
54502                          (let ((env76_0
54503                                 (add-intdef-bindings
54504                                  (begin-unsafe
54505                                   (expand-context/outer-env current-ctx_0))
54506                                  intdefs11_0)))
54507                            (let ((inner77_0
54508                                   (root-expand-context/outer-inner
54509                                    current-ctx_0)))
54510                              (let ((env76_1 env76_0))
54511                                (expand-context/outer1.1
54512                                 inner77_0
54513                                 (root-expand-context/outer-post-expansion
54514                                  current-ctx_0)
54515                                 (root-expand-context/outer-use-site-scopes
54516                                  current-ctx_0)
54517                                 (root-expand-context/outer-frame-id
54518                                  current-ctx_0)
54519                                 (expand-context/outer-context current-ctx_0)
54520                                 env76_1
54521                                 (expand-context/outer-scopes current-ctx_0)
54522                                 (expand-context/outer-def-ctx-scopes
54523                                  current-ctx_0)
54524                                 (expand-context/outer-binding-layer
54525                                  current-ctx_0)
54526                                 (expand-context/outer-reference-records
54527                                  current-ctx_0)
54528                                 (expand-context/outer-only-immediate?
54529                                  current-ctx_0)
54530                                 (expand-context/outer-need-eventually-defined
54531                                  current-ctx_0)
54532                                 (expand-context/outer-current-introduction-scopes
54533                                  current-ctx_0)
54534                                 (expand-context/outer-current-use-scopes
54535                                  current-ctx_0)
54536                                 (expand-context/outer-name current-ctx_0)))))
54537                          (raise-argument-error
54538                           'struct-copy
54539                           "expand-context/outer?"
54540                           current-ctx_0))
54541                        current-ctx_0)))
54542                 (begin
54543                   (let ((obs_0
54544                          (begin-unsafe
54545                           (expand-context/inner-observer
54546                            (root-expand-context/outer-inner ctx_0)))))
54547                     (if obs_0
54548                       (call-expand-observe obs_0 'local-value id10_0)
54549                       (void)))
54550                   (let ((phase_0
54551                          (begin-unsafe
54552                           (expand-context/inner-phase
54553                            (root-expand-context/outer-inner ctx_0)))))
54554                     (letrec*
54555                      ((loop_0
54556                        (|#%name|
54557                         loop
54558                         (lambda (id_0)
54559                           (begin
54560                             (let ((b_0
54561                                    (if immediate?7_0
54562                                      (resolve+shift.1
54563                                       #f
54564                                       #f
54565                                       null
54566                                       #t
54567                                       #f
54568                                       id_0
54569                                       phase_0)
54570                                      (resolve+shift/extra-inspector
54571                                       id_0
54572                                       phase_0
54573                                       (begin-unsafe
54574                                        (expand-context/inner-namespace
54575                                         (root-expand-context/outer-inner
54576                                          ctx_0)))))))
54577                               (begin
54578                                 (let ((obs_0
54579                                        (begin-unsafe
54580                                         (expand-context/inner-observer
54581                                          (root-expand-context/outer-inner
54582                                           ctx_0)))))
54583                                   (if obs_0
54584                                     (call-expand-observe obs_0 'resolve id_0)
54585                                     (void)))
54586                                 (if (not b_0)
54587                                   (begin
54588                                     (let ((obs_0
54589                                            (begin-unsafe
54590                                             (expand-context/inner-observer
54591                                              (root-expand-context/outer-inner
54592                                               ctx_0)))))
54593                                       (if obs_0
54594                                         (call-expand-observe
54595                                          obs_0
54596                                          'local-value-result
54597                                          #f)
54598                                         (void)))
54599                                     (if failure-thunk12_0
54600                                       (|#%app| failure-thunk12_0)
54601                                       (error
54602                                        who9_0
54603                                        "unbound identifier: ~v"
54604                                        id_0)))
54605                                   (call-with-values
54606                                    (lambda () (lookup.1 #f #t b_0 ctx_0 id_0))
54607                                    (case-lambda
54608                                     ((v_0 primitive?_0 insp_0 protected?_0)
54609                                      (if (let ((or-part_0 (variable? v_0)))
54610                                            (if or-part_0
54611                                              or-part_0
54612                                              (core-form? v_0)))
54613                                        (begin
54614                                          (let ((obs_0
54615                                                 (begin-unsafe
54616                                                  (expand-context/inner-observer
54617                                                   (root-expand-context/outer-inner
54618                                                    ctx_0)))))
54619                                            (if obs_0
54620                                              (call-expand-observe
54621                                               obs_0
54622                                               'local-value-result
54623                                               #f)
54624                                              (void)))
54625                                          (if failure-thunk12_0
54626                                            (|#%app| failure-thunk12_0)
54627                                            (error
54628                                             who9_0
54629                                             "identifier is not bound to syntax: ~v"
54630                                             id_0)))
54631                                        (begin
54632                                          (let ((obs_0
54633                                                 (begin-unsafe
54634                                                  (expand-context/inner-observer
54635                                                   (root-expand-context/outer-inner
54636                                                    ctx_0)))))
54637                                            (if obs_0
54638                                              (if (not
54639                                                   (if (1/rename-transformer?
54640                                                        v_0)
54641                                                     (not immediate?7_0)
54642                                                     #f))
54643                                                (call-expand-observe
54644                                                 obs_0
54645                                                 'local-value-result
54646                                                 #t)
54647                                                (void))
54648                                              (void)))
54649                                          (if (1/rename-transformer? v_0)
54650                                            (if immediate?7_0
54651                                              (values
54652                                               v_0
54653                                               (rename-transformer-target-in-context
54654                                                v_0
54655                                                ctx_0))
54656                                              (loop_0
54657                                               (rename-transformer-target-in-context
54658                                                v_0
54659                                                ctx_0)))
54660                                            (if immediate?7_0
54661                                              (values v_0 #f)
54662                                              v_0)))))
54663                                     (args
54664                                      (raise-binding-result-arity-error
54665                                       4
54666                                       args))))))))))))
54667                      (loop_0
54668                       (begin-unsafe
54669                        (flip-scopes
54670                         id10_0
54671                         (begin-unsafe
54672                          (expand-context/outer-current-introduction-scopes
54673                           ctx_0)))))))))))))))))
54674(define 1/syntax-local-value
54675  (let ((syntax-local-value_0
54676         (|#%name|
54677          syntax-local-value
54678          (lambda (id16_0 failure-thunk14_0 intdef15_0)
54679            (begin
54680              (do-syntax-local-value.1
54681               #f
54682               'syntax-local-value
54683               id16_0
54684               intdef15_0
54685               failure-thunk14_0))))))
54686    (|#%name|
54687     syntax-local-value
54688     (case-lambda
54689      ((id_0) (begin (syntax-local-value_0 id_0 #f #f)))
54690      ((id_0 failure-thunk_0 intdef15_0)
54691       (syntax-local-value_0 id_0 failure-thunk_0 intdef15_0))
54692      ((id_0 failure-thunk14_0)
54693       (syntax-local-value_0 id_0 failure-thunk14_0 #f))))))
54694(define 1/syntax-local-value/immediate
54695  (let ((syntax-local-value/immediate_0
54696         (|#%name|
54697          syntax-local-value/immediate
54698          (lambda (id19_0 failure-thunk17_0 intdef18_0)
54699            (begin
54700              (do-syntax-local-value.1
54701               #t
54702               'syntax-local-value/immediate
54703               id19_0
54704               intdef18_0
54705               failure-thunk17_0))))))
54706    (|#%name|
54707     syntax-local-value/immediate
54708     (case-lambda
54709      ((id_0) (begin (syntax-local-value/immediate_0 id_0 #f #f)))
54710      ((id_0 failure-thunk_0 intdef18_0)
54711       (syntax-local-value/immediate_0 id_0 failure-thunk_0 intdef18_0))
54712      ((id_0 failure-thunk17_0)
54713       (syntax-local-value/immediate_0 id_0 failure-thunk17_0 #f))))))
54714(define do-lift-values-expression
54715  (lambda (who_0 n_0 s_0)
54716    (begin
54717      (if (syntax?$1 s_0) (void) (raise-argument-error who_0 "syntax?" s_0))
54718      (begin
54719        (if (exact-nonnegative-integer? n_0)
54720          (void)
54721          (raise-argument-error who_0 "exact-nonnegative-integer?" n_0))
54722        (let ((ctx_0 (get-current-expand-context.1 #f who_0)))
54723          (let ((lifts_0
54724                 (begin-unsafe
54725                  (expand-context/inner-lifts
54726                   (root-expand-context/outer-inner ctx_0)))))
54727            (begin
54728              (if lifts_0
54729                (void)
54730                (raise-arguments-error who_0 "no lift target"))
54731              (let ((counter_0
54732                     (begin-unsafe
54733                      (root-expand-context/inner-counter
54734                       (root-expand-context/outer-inner ctx_0)))))
54735                (let ((ids_0
54736                       (reverse$1
54737                        (begin
54738                          (letrec*
54739                           ((for-loop_0
54740                             (|#%name|
54741                              for-loop
54742                              (lambda (fold-var_0 pos_0)
54743                                (begin
54744                                  (if (< pos_0 n_0)
54745                                    (let ((fold-var_1
54746                                           (let ((fold-var_1
54747                                                  (cons
54748                                                   (begin
54749                                                     (set-box!
54750                                                      counter_0
54751                                                      (add1 (unbox counter_0)))
54752                                                     (let ((name_0
54753                                                            (string->unreadable-symbol
54754                                                             (format
54755                                                              "lifted/~a"
54756                                                              (unbox
54757                                                               counter_0)))))
54758                                                       (let ((app_0
54759                                                              (datum->syntax$1
54760                                                               #f
54761                                                               name_0)))
54762                                                         (add-scope
54763                                                          app_0
54764                                                          (new-scope
54765                                                           'macro)))))
54766                                                   fold-var_0)))
54767                                             (values fold-var_1))))
54768                                      (for-loop_0 fold-var_1 (+ pos_0 1)))
54769                                    fold-var_0))))))
54770                           (for-loop_0 null 0))))))
54771                  (let ((added-s_0
54772                         (begin-unsafe
54773                          (flip-scopes
54774                           s_0
54775                           (begin-unsafe
54776                            (expand-context/outer-current-introduction-scopes
54777                             ctx_0))))))
54778                    (begin
54779                      (let ((obs_0
54780                             (begin-unsafe
54781                              (expand-context/inner-observer
54782                               (root-expand-context/outer-inner ctx_0)))))
54783                        (if obs_0
54784                          (call-expand-observe
54785                           obs_0
54786                           'lift-expr
54787                           ids_0
54788                           s_0
54789                           added-s_0)
54790                          (void)))
54791                      (map_1346
54792                       (lambda (id_0)
54793                         (begin-unsafe
54794                          (flip-scopes
54795                           id_0
54796                           (begin-unsafe
54797                            (expand-context/outer-current-introduction-scopes
54798                             ctx_0)))))
54799                       (add-lifted!
54800                        lifts_0
54801                        ids_0
54802                        added-s_0
54803                        (begin-unsafe
54804                         (expand-context/inner-phase
54805                          (root-expand-context/outer-inner
54806                           ctx_0))))))))))))))))
54807(define 1/syntax-local-lift-expression
54808  (|#%name|
54809   syntax-local-lift-expression
54810   (lambda (s_0)
54811     (begin
54812       (car
54813        (do-lift-values-expression 'syntax-local-lift-expression 1 s_0))))))
54814(define 1/syntax-local-lift-values-expression
54815  (|#%name|
54816   syntax-local-lift-values-expression
54817   (lambda (n_0 s_0)
54818     (begin
54819       (do-lift-values-expression
54820        'syntax-local-lift-values-expression
54821        n_0
54822        s_0)))))
54823(define 1/syntax-local-lift-context
54824  (|#%name|
54825   syntax-local-lift-context
54826   (lambda ()
54827     (begin
54828       (let ((ctx_0
54829              (get-current-expand-context.1 #f 'syntax-local-lift-context)))
54830         (begin-unsafe
54831          (root-expand-context/inner-lift-key
54832           (root-expand-context/outer-inner ctx_0))))))))
54833(define 1/syntax-local-lift-module
54834  (|#%name|
54835   syntax-local-lift-module
54836   (lambda (s_0)
54837     (begin
54838       (begin
54839         (if (syntax?$1 s_0)
54840           (void)
54841           (raise-argument-error 'syntax-local-lift-module "syntax?" s_0))
54842         (let ((ctx_0
54843                (get-current-expand-context.1 #f 'syntax-local-lift-module)))
54844           (let ((phase_0
54845                  (begin-unsafe
54846                   (expand-context/inner-phase
54847                    (root-expand-context/outer-inner ctx_0)))))
54848             (let ((tmp_0 (core-form-sym s_0 phase_0)))
54849               (if (if (eq? tmp_0 'module) #t (eq? tmp_0 'module*))
54850                 (let ((lifts_0
54851                        (begin-unsafe
54852                         (expand-context/inner-module-lifts
54853                          (root-expand-context/outer-inner ctx_0)))))
54854                   (begin
54855                     (if lifts_0
54856                       (void)
54857                       (raise-arguments-error
54858                        'syntax-local-lift-module
54859                        "not currently transforming within a module declaration or top level"
54860                        "form to lift"
54861                        s_0))
54862                     (let ((added-s_0
54863                            (begin-unsafe
54864                             (flip-scopes
54865                              s_0
54866                              (begin-unsafe
54867                               (expand-context/outer-current-introduction-scopes
54868                                ctx_0))))))
54869                       (begin
54870                         (add-lifted-module! lifts_0 added-s_0 phase_0)
54871                         (let ((obs_0
54872                                (begin-unsafe
54873                                 (expand-context/inner-observer
54874                                  (root-expand-context/outer-inner ctx_0)))))
54875                           (if obs_0
54876                             (call-expand-observe
54877                              obs_0
54878                              'lift-module
54879                              s_0
54880                              added-s_0)
54881                             (void)))))))
54882                 (raise-arguments-error
54883                  'syntax-local-lift-module
54884                  "not a module form"
54885                  "given form"
54886                  s_0))))))))))
54887(define do-local-lift-to-module.1
54888  (|#%name|
54889   do-local-lift-to-module
54890   (lambda (add-lifted!25_0
54891            get-lift-ctx24_0
54892            get-wrt-phase26_0
54893            intro?22_0
54894            log-tag20_0
54895            more-checks23_0
54896            no-target-msg21_0
54897            post-wrap29_0
54898            pre-wrap27_0
54899            shift-wrap28_0
54900            who40_0
54901            s41_0)
54902     (begin
54903       (let ((pre-wrap_0
54904              (if (eq? pre-wrap27_0 unsafe-undefined)
54905                (|#%name|
54906                 pre-wrap
54907                 (lambda (s_0 phase_0 lift-ctx_0) (begin s_0)))
54908                pre-wrap27_0)))
54909         (let ((shift-wrap_0
54910                (if (eq? shift-wrap28_0 unsafe-undefined)
54911                  (|#%name|
54912                   shift-wrap
54913                   (lambda (s_0 phase_0 lift-ctx_0) (begin s_0)))
54914                  shift-wrap28_0)))
54915           (let ((post-wrap_0
54916                  (if (eq? post-wrap29_0 unsafe-undefined)
54917                    (|#%name|
54918                     post-wrap
54919                     (lambda (s_0 phase_0 lift-ctx_0) (begin s_0)))
54920                    post-wrap29_0)))
54921             (begin
54922               (if (syntax?$1 s41_0)
54923                 (void)
54924                 (raise-argument-error who40_0 "syntax?" s41_0))
54925               (begin
54926                 (|#%app| more-checks23_0)
54927                 (let ((ctx_0 (get-current-expand-context.1 #f who40_0)))
54928                   (let ((lift-ctx_0 (|#%app| get-lift-ctx24_0 ctx_0)))
54929                     (begin
54930                       (if lift-ctx_0
54931                         (void)
54932                         (raise-arguments-error
54933                          who40_0
54934                          no-target-msg21_0
54935                          "form to lift"
54936                          s41_0))
54937                       (let ((phase_0
54938                              (begin-unsafe
54939                               (expand-context/inner-phase
54940                                (root-expand-context/outer-inner ctx_0)))))
54941                         (let ((wrt-phase_0
54942                                (|#%app| get-wrt-phase26_0 lift-ctx_0)))
54943                           (let ((added-s_0
54944                                  (if intro?22_0
54945                                    (begin-unsafe
54946                                     (flip-scopes
54947                                      s41_0
54948                                      (begin-unsafe
54949                                       (expand-context/outer-current-introduction-scopes
54950                                        ctx_0))))
54951                                    s41_0)))
54952                             (let ((pre-s_0
54953                                    (|#%app|
54954                                     pre-wrap_0
54955                                     added-s_0
54956                                     phase_0
54957                                     lift-ctx_0)))
54958                               (let ((shift-s_0
54959                                      (begin
54960                                        (letrec*
54961                                         ((for-loop_0
54962                                           (|#%name|
54963                                            for-loop
54964                                            (lambda (s_0 pos_0)
54965                                              (begin
54966                                                (if (> pos_0 wrt-phase_0)
54967                                                  (let ((s_1
54968                                                         (let ((s_1
54969                                                                (|#%app|
54970                                                                 shift-wrap_0
54971                                                                 s_0
54972                                                                 (sub1 pos_0)
54973                                                                 lift-ctx_0)))
54974                                                           (values s_1))))
54975                                                    (for-loop_0
54976                                                     s_1
54977                                                     (+ pos_0 -1)))
54978                                                  s_0))))))
54979                                         (for-loop_0 pre-s_0 phase_0)))))
54980                                 (let ((post-s_0
54981                                        (|#%app|
54982                                         post-wrap_0
54983                                         shift-s_0
54984                                         wrt-phase_0
54985                                         lift-ctx_0)))
54986                                   (begin
54987                                     (if log-tag20_0
54988                                       (let ((obs_0
54989                                              (begin-unsafe
54990                                               (expand-context/inner-observer
54991                                                (root-expand-context/outer-inner
54992                                                 ctx_0)))))
54993                                         (if obs_0
54994                                           (call-expand-observe
54995                                            obs_0
54996                                            log-tag20_0
54997                                            s41_0
54998                                            added-s_0
54999                                            post-s_0)
55000                                           (void)))
55001                                       (void))
55002                                     (|#%app|
55003                                      add-lifted!25_0
55004                                      lift-ctx_0
55005                                      post-s_0
55006                                      wrt-phase_0)
55007                                     (values ctx_0 post-s_0))))))))))))))))))))
55008(define 1/syntax-local-lift-require
55009  (|#%name|
55010   syntax-local-lift-require
55011   (lambda (s_0 use-s_0)
55012     (begin
55013       (let ((sc_0 (new-scope 'lifted-require)))
55014         (call-with-values
55015          (lambda ()
55016            (let ((temp105_0 (datum->syntax$1 #f s_0)))
55017              (let ((temp106_0 "could not find target context"))
55018                (let ((temp108_0
55019                       (lambda ()
55020                         (if (syntax?$1 use-s_0)
55021                           (void)
55022                           (raise-argument-error
55023                            'syntax-local-lift-require
55024                            "syntax?"
55025                            use-s_0)))))
55026                  (let ((expand-context-require-lifts109_0
55027                         expand-context-require-lifts))
55028                    (let ((temp112_0
55029                           (lambda (s_1 phase_0 require-lift-ctx_0)
55030                             (require-spec-shift-for-syntax s_1))))
55031                      (let ((temp113_0
55032                             (lambda (s_1 phase_0 require-lift-ctx_0)
55033                               (wrap-form
55034                                '|#%require|
55035                                (add-scope s_1 sc_0)
55036                                phase_0))))
55037                        (let ((temp112_1 temp112_0)
55038                              (expand-context-require-lifts109_1
55039                               expand-context-require-lifts109_0)
55040                              (temp108_1 temp108_0)
55041                              (temp106_1 temp106_0)
55042                              (temp105_1 temp105_0))
55043                          (do-local-lift-to-module.1
55044                           add-lifted-require!
55045                           expand-context-require-lifts109_1
55046                           require-lift-context-wrt-phase
55047                           #f
55048                           #f
55049                           temp108_1
55050                           temp106_1
55051                           temp113_0
55052                           unsafe-undefined
55053                           temp112_1
55054                           'syntax-local-lift-require
55055                           temp105_1)))))))))
55056          (case-lambda
55057           ((ctx_0 added-s_0)
55058            (begin
55059              (with-continuation-mark*
55060               push-authentic
55061               current-expand-context
55062               #f
55063               (namespace-visit-available-modules!
55064                (begin-unsafe
55065                 (expand-context/inner-namespace
55066                  (root-expand-context/outer-inner ctx_0)))
55067                (begin-unsafe
55068                 (expand-context/inner-phase
55069                  (root-expand-context/outer-inner ctx_0)))))
55070              (let ((result-s_0 (add-scope use-s_0 sc_0)))
55071                (begin
55072                  (let ((obs_0
55073                         (begin-unsafe
55074                          (expand-context/inner-observer
55075                           (root-expand-context/outer-inner ctx_0)))))
55076                    (if obs_0
55077                      (call-expand-observe
55078                       obs_0
55079                       'lift-require
55080                       added-s_0
55081                       use-s_0
55082                       result-s_0)
55083                      (void)))
55084                  result-s_0))))
55085           (args (raise-binding-result-arity-error 2 args)))))))))
55086(define 1/syntax-local-lift-provide
55087  (|#%name|
55088   syntax-local-lift-provide
55089   (lambda (s_0)
55090     (begin
55091       (call-with-values
55092        (lambda ()
55093          (let ((temp117_0 "not expanding in a module run-time body"))
55094            (let ((expand-context-to-module-lifts118_0
55095                   expand-context-to-module-lifts))
55096              (let ((add-lifted-to-module-provide!120_0
55097                     add-lifted-to-module-provide!))
55098                (let ((temp121_0
55099                       (lambda (s_1 phase_0 to-module-lift-ctx_0)
55100                         (wrap-form 'for-syntax s_1 #f))))
55101                  (let ((temp122_0
55102                         (lambda (s_1 phase_0 to-module-lift-ctx_0)
55103                           (wrap-form '|#%provide| s_1 phase_0))))
55104                    (do-local-lift-to-module.1
55105                     add-lifted-to-module-provide!120_0
55106                     expand-context-to-module-lifts118_0
55107                     to-module-lift-context-wrt-phase
55108                     #t
55109                     #f
55110                     void
55111                     temp117_0
55112                     temp122_0
55113                     unsafe-undefined
55114                     temp121_0
55115                     'syntax-local-lift-provide
55116                     s_0)))))))
55117        (case-lambda
55118         ((ctx_0 result-s_0)
55119          (let ((obs_0
55120                 (begin-unsafe
55121                  (expand-context/inner-observer
55122                   (root-expand-context/outer-inner ctx_0)))))
55123            (if obs_0
55124              (call-expand-observe obs_0 'lift-provide result-s_0)
55125              (void))))
55126         (args (raise-binding-result-arity-error 2 args))))))))
55127(define 1/syntax-local-lift-module-end-declaration
55128  (|#%name|
55129   syntax-local-lift-module-end-declaration
55130   (lambda (s_0)
55131     (begin
55132       (call-with-values
55133        (lambda ()
55134          (let ((temp127_0
55135                 "not currently transforming an expression within a module declaration"))
55136            (let ((expand-context-to-module-lifts128_0
55137                   expand-context-to-module-lifts))
55138              (let ((temp129_0 (lambda (lift-ctx_0) 0)))
55139                (let ((add-lifted-to-module-end!130_0
55140                       add-lifted-to-module-end!))
55141                  (let ((temp131_0
55142                         (lambda (orig-s_0 phase_0 to-module-lift-ctx_0)
55143                           (if (to-module-lift-context-end-as-expressions?
55144                                to-module-lift-ctx_0)
55145                             (wrap-form '|#%expression| orig-s_0 phase_0)
55146                             orig-s_0))))
55147                    (let ((temp132_0
55148                           (lambda (s_1 phase_0 to-module-lift-ctx_0)
55149                             (wrap-form 'begin-for-syntax s_1 phase_0))))
55150                      (do-local-lift-to-module.1
55151                       add-lifted-to-module-end!130_0
55152                       expand-context-to-module-lifts128_0
55153                       temp129_0
55154                       #t
55155                       'lift-end-decl
55156                       void
55157                       temp127_0
55158                       unsafe-undefined
55159                       temp131_0
55160                       temp132_0
55161                       'syntax-local-lift-module-end-declaration
55162                       s_0))))))))
55163        (case-lambda
55164         ((ctx_0 also-s_0) (void))
55165         (args (raise-binding-result-arity-error 2 args))))))))
55166(define wrap-form
55167  (lambda (sym_0 s_0 phase_0)
55168    (datum->syntax$1
55169     #f
55170     (list
55171      (datum->syntax$1
55172       (if phase_0 (syntax-shift-phase-level$1 core-stx phase_0) #f)
55173       sym_0)
55174      s_0))))
55175(define 1/syntax-local-module-defined-identifiers
55176  (|#%name|
55177   syntax-local-module-defined-identifiers
55178   (lambda ()
55179     (begin
55180       (begin
55181         (if (1/syntax-local-transforming-module-provides?)
55182           (void)
55183           (raise-arguments-error
55184            'syntax-local-module-defined-identifiers
55185            "not currently transforming module provides"))
55186         (let ((ctx_0
55187                (get-current-expand-context.1
55188                 #f
55189                 'syntax-local-module-defined-identifiers)))
55190           (requireds->phase-ht
55191            (extract-module-definitions
55192             (begin-unsafe
55193              (expand-context/inner-requires+provides
55194               (root-expand-context/outer-inner ctx_0)))))))))))
55195(define 1/syntax-local-module-required-identifiers
55196  (|#%name|
55197   syntax-local-module-required-identifiers
55198   (lambda (mod-path_0 phase+space-shift_0)
55199     (begin
55200       (begin
55201         (if (let ((or-part_0 (not mod-path_0)))
55202               (if or-part_0 or-part_0 (1/module-path? mod-path_0)))
55203           (void)
55204           (raise-argument-error
55205            'syntax-local-module-required-identifiers
55206            "(or/c module-path? #f)"
55207            mod-path_0))
55208         (begin
55209           (if (let ((or-part_0 (eq? phase+space-shift_0 #t)))
55210                 (if or-part_0
55211                   or-part_0
55212                   (phase+space-shift? phase+space-shift_0)))
55213             (void)
55214             (raise-argument-error
55215              'syntax-local-module-required-identifiers
55216              (format "(or/c ~a #t)" phase+space-shift?-string)
55217              phase+space-shift_0))
55218           (begin
55219             (if (1/syntax-local-transforming-module-provides?)
55220               (void)
55221               (raise-arguments-error
55222                'syntax-local-module-required-identifiers
55223                "not currently transforming module provides"))
55224             (let ((ctx_0
55225                    (get-current-expand-context.1
55226                     #f
55227                     'syntax-local-module-required-identifiers)))
55228               (let ((requires+provides_0
55229                      (begin-unsafe
55230                       (expand-context/inner-requires+provides
55231                        (root-expand-context/outer-inner ctx_0)))))
55232                 (let ((mpi_0
55233                        (if mod-path_0
55234                          (module-path->mpi/context mod-path_0 ctx_0)
55235                          #f)))
55236                   (let ((requireds_0
55237                          (extract-all-module-requires
55238                           requires+provides_0
55239                           mpi_0
55240                           (if (eq? phase+space-shift_0 #t)
55241                             'all
55242                             (intern-phase+space-shift phase+space-shift_0)))))
55243                     (if requireds_0
55244                       (reverse$1
55245                        (let ((ht_0 (requireds->phase-ht requireds_0)))
55246                          (begin
55247                            (letrec*
55248                             ((for-loop_0
55249                               (|#%name|
55250                                for-loop
55251                                (lambda (fold-var_0 i_0)
55252                                  (begin
55253                                    (if i_0
55254                                      (call-with-values
55255                                       (lambda ()
55256                                         (hash-iterate-key+value ht_0 i_0))
55257                                       (case-lambda
55258                                        ((phase+space-shift_1 ids_0)
55259                                         (let ((fold-var_1
55260                                                (cons
55261                                                 (cons
55262                                                  phase+space-shift_1
55263                                                  ids_0)
55264                                                 fold-var_0)))
55265                                           (let ((fold-var_2
55266                                                  (values fold-var_1)))
55267                                             (for-loop_0
55268                                              fold-var_2
55269                                              (hash-iterate-next ht_0 i_0)))))
55270                                        (args
55271                                         (raise-binding-result-arity-error
55272                                          2
55273                                          args))))
55274                                      fold-var_0))))))
55275                             (for-loop_0 null (hash-iterate-first ht_0))))))
55276                       #f))))))))))))
55277(define requireds->phase-ht
55278  (lambda (requireds_0)
55279    (begin
55280      (letrec*
55281       ((for-loop_0
55282         (|#%name|
55283          for-loop
55284          (lambda (ht_0 lst_0)
55285            (begin
55286              (if (pair? lst_0)
55287                (let ((r_0 (unsafe-car lst_0)))
55288                  (let ((rest_0 (unsafe-cdr lst_0)))
55289                    (let ((key_0 (required-phase+space r_0)))
55290                      (let ((ht_1
55291                             (let ((ht_1
55292                                    (let ((xform_0
55293                                           (lambda (l_0)
55294                                             (cons (required-id r_0) l_0))))
55295                                      (begin-unsafe
55296                                       (do-hash-update
55297                                        'hash-update
55298                                        #f
55299                                        hash-set
55300                                        ht_0
55301                                        key_0
55302                                        xform_0
55303                                        null)))))
55304                               (values ht_1))))
55305                        (for-loop_0 ht_1 rest_0)))))
55306                ht_0))))))
55307       (for-loop_0 (hasheqv) requireds_0)))))
55308(define 1/syntax-local-module-exports
55309  (|#%name|
55310   syntax-local-module-exports
55311   (lambda (mod-path_0)
55312     (begin
55313       (begin
55314         (if (let ((or-part_0 (1/module-path? mod-path_0)))
55315               (if or-part_0
55316                 or-part_0
55317                 (if (syntax?$1 mod-path_0)
55318                   (1/module-path? (syntax->datum$1 mod-path_0))
55319                   #f)))
55320           (void)
55321           (raise-argument-error
55322            'syntax-local-module-exports
55323            (string-append
55324             "(or/c module-path?\n"
55325             "      (and/c syntax?\n"
55326             "             (lambda (stx)\n"
55327             "               (module-path? (syntax->datum stx)))))")
55328            mod-path_0))
55329         (let ((ctx_0
55330                (get-current-expand-context.1
55331                 #f
55332                 'syntax-local-module-exports)))
55333           (let ((ns_0
55334                  (begin-unsafe
55335                   (expand-context/inner-namespace
55336                    (root-expand-context/outer-inner ctx_0)))))
55337             (let ((mod-name_0
55338                    (1/module-path-index-resolve
55339                     (module-path->mpi/context
55340                      (if (syntax?$1 mod-path_0)
55341                        (syntax->datum$1 mod-path_0)
55342                        mod-path_0)
55343                      ctx_0)
55344                     #t)))
55345               (let ((m_0 (namespace->module ns_0 mod-name_0)))
55346                 (begin
55347                   (if m_0
55348                     (void)
55349                     (begin-unsafe
55350                      (raise-arguments-error
55351                       'syntax-local-module-exports
55352                       "unknown module"
55353                       "module name"
55354                       (module-name->error-string mod-name_0))))
55355                   (reverse$1
55356                    (let ((ht_0 (module-provides m_0)))
55357                      (begin
55358                        (letrec*
55359                         ((for-loop_0
55360                           (|#%name|
55361                            for-loop
55362                            (lambda (fold-var_0 i_0)
55363                              (begin
55364                                (if i_0
55365                                  (call-with-values
55366                                   (lambda ()
55367                                     (hash-iterate-key+value ht_0 i_0))
55368                                   (case-lambda
55369                                    ((phase_0 syms_0)
55370                                     (let ((fold-var_1
55371                                            (let ((fold-var_1
55372                                                   (cons
55373                                                    (cons
55374                                                     phase_0
55375                                                     (reverse$1
55376                                                      (begin
55377                                                        (letrec*
55378                                                         ((for-loop_1
55379                                                           (|#%name|
55380                                                            for-loop
55381                                                            (lambda (fold-var_1
55382                                                                     i_1)
55383                                                              (begin
55384                                                                (if i_1
55385                                                                  (let ((sym_0
55386                                                                         (hash-iterate-key
55387                                                                          syms_0
55388                                                                          i_1)))
55389                                                                    (let ((fold-var_2
55390                                                                           (cons
55391                                                                            sym_0
55392                                                                            fold-var_1)))
55393                                                                      (let ((fold-var_3
55394                                                                             (values
55395                                                                              fold-var_2)))
55396                                                                        (for-loop_1
55397                                                                         fold-var_3
55398                                                                         (hash-iterate-next
55399                                                                          syms_0
55400                                                                          i_1)))))
55401                                                                  fold-var_1))))))
55402                                                         (for-loop_1
55403                                                          null
55404                                                          (hash-iterate-first
55405                                                           syms_0))))))
55406                                                    fold-var_0)))
55407                                              (values fold-var_1))))
55408                                       (for-loop_0
55409                                        fold-var_1
55410                                        (hash-iterate-next ht_0 i_0))))
55411                                    (args
55412                                     (raise-binding-result-arity-error
55413                                      2
55414                                      args))))
55415                                  fold-var_0))))))
55416                         (for-loop_0
55417                          null
55418                          (hash-iterate-first ht_0))))))))))))))))
55419(define 1/syntax-local-submodules
55420  (|#%name|
55421   syntax-local-submodules
55422   (lambda ()
55423     (begin
55424       (let ((ctx_0
55425              (get-current-expand-context.1 #f 'syntax-local-submodules)))
55426         (let ((submods_0
55427                (begin-unsafe
55428                 (expand-context/inner-declared-submodule-names
55429                  (root-expand-context/outer-inner ctx_0)))))
55430           (reverse$1
55431            (begin
55432              (letrec*
55433               ((for-loop_0
55434                 (|#%name|
55435                  for-loop
55436                  (lambda (fold-var_0 i_0)
55437                    (begin
55438                      (if i_0
55439                        (call-with-values
55440                         (lambda () (hash-iterate-key+value submods_0 i_0))
55441                         (case-lambda
55442                          ((name_0 kind_0)
55443                           (let ((fold-var_1
55444                                  (if (eq? kind_0 'module)
55445                                    (let ((fold-var_1
55446                                           (cons name_0 fold-var_0)))
55447                                      (values fold-var_1))
55448                                    fold-var_0)))
55449                             (for-loop_0
55450                              fold-var_1
55451                              (hash-iterate-next submods_0 i_0))))
55452                          (args (raise-binding-result-arity-error 2 args))))
55453                        fold-var_0))))))
55454               (for-loop_0 null (hash-iterate-first submods_0)))))))))))
55455(define 1/syntax-local-module-interned-scope-symbols
55456  (|#%name|
55457   syntax-local-module-interned-scope-symbols
55458   (lambda ()
55459     (begin
55460       (begin
55461         (void
55462          (get-current-expand-context.1
55463           #f
55464           'syntax-local-module-interned-scope-symbols))
55465         (interned-scope-symbols))))))
55466(define syntax-local-expand-observer
55467  (lambda ()
55468    (let ((ctx_0
55469           (get-current-expand-context.1 #f 'syntax-local-expand-observer)))
55470      (begin-unsafe
55471       (expand-context/inner-observer
55472        (root-expand-context/outer-inner ctx_0))))))
55473(define 1/syntax-local-get-shadower
55474  (let ((syntax-local-get-shadower_0
55475         (|#%name|
55476          syntax-local-get-shadower
55477          (lambda (id44_0 only-generated?43_0)
55478            (begin
55479              (begin
55480                (if (identifier? id44_0)
55481                  (void)
55482                  (raise-argument-error
55483                   'syntax-local-get-shadower
55484                   "identifier?"
55485                   id44_0))
55486                (let ((ctx_0
55487                       (get-current-expand-context.1
55488                        #f
55489                        'syntax-local-get-shadower)))
55490                  (let ((new-id_0
55491                         (add-scopes
55492                          id44_0
55493                          (begin-unsafe (expand-context/outer-scopes ctx_0)))))
55494                    (if (begin-unsafe (not (syntax-taintness id44_0)))
55495                      new-id_0
55496                      (syntax-taint$1 new-id_0))))))))))
55497    (|#%name|
55498     syntax-local-get-shadower
55499     (case-lambda
55500      ((id_0) (begin (syntax-local-get-shadower_0 id_0 #f)))
55501      ((id_0 only-generated?43_0)
55502       (syntax-local-get-shadower_0 id_0 only-generated?43_0))))))
55503(define 1/syntax-source
55504  (|#%name|
55505   syntax-source
55506   (lambda (s_0)
55507     (begin
55508       (begin
55509         (if (syntax?$1 s_0)
55510           (void)
55511           (raise-argument-error 'syntax-source "syntax?" s_0))
55512         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
55513           (if srcloc_0 (srcloc-source srcloc_0) #f)))))))
55514(define 1/syntax-line
55515  (|#%name|
55516   syntax-line
55517   (lambda (s_0)
55518     (begin
55519       (begin
55520         (if (syntax?$1 s_0)
55521           (void)
55522           (raise-argument-error 'syntax-line "syntax?" s_0))
55523         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
55524           (if srcloc_0 (srcloc-line srcloc_0) #f)))))))
55525(define 1/syntax-column
55526  (|#%name|
55527   syntax-column
55528   (lambda (s_0)
55529     (begin
55530       (begin
55531         (if (syntax?$1 s_0)
55532           (void)
55533           (raise-argument-error 'syntax-column "syntax?" s_0))
55534         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
55535           (if srcloc_0 (srcloc-column srcloc_0) #f)))))))
55536(define 1/syntax-position
55537  (|#%name|
55538   syntax-position
55539   (lambda (s_0)
55540     (begin
55541       (begin
55542         (if (syntax?$1 s_0)
55543           (void)
55544           (raise-argument-error 'syntax-position "syntax?" s_0))
55545         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
55546           (if srcloc_0 (srcloc-position srcloc_0) #f)))))))
55547(define 1/syntax-span
55548  (|#%name|
55549   syntax-span
55550   (lambda (s_0)
55551     (begin
55552       (begin
55553         (if (syntax?$1 s_0)
55554           (void)
55555           (raise-argument-error 'syntax-span "syntax?" s_0))
55556         (let ((srcloc_0 (syntax-srcloc$1 s_0)))
55557           (if srcloc_0 (srcloc-span srcloc_0) #f)))))))
55558(define encoded-srcloc?
55559  (lambda (v_0)
55560    (let ((or-part_0
55561           (if (list? v_0)
55562             (if (= (length v_0) 5) (srcloc-vector? (list->vector v_0)) #f)
55563             #f)))
55564      (if or-part_0
55565        or-part_0
55566        (if (vector? v_0)
55567          (if (= (vector-length v_0) 5) (srcloc-vector? v_0) #f)
55568          #f)))))
55569(define srcloc-vector?
55570  (lambda (v_0)
55571    (if (let ((or-part_0 (not (vector-ref v_0 1))))
55572          (if or-part_0
55573            or-part_0
55574            (exact-positive-integer? (vector-ref v_0 1))))
55575      (if (let ((or-part_0 (not (vector-ref v_0 2))))
55576            (if or-part_0
55577              or-part_0
55578              (exact-nonnegative-integer? (vector-ref v_0 2))))
55579        (if (let ((or-part_0 (not (vector-ref v_0 3))))
55580              (if or-part_0
55581                or-part_0
55582                (exact-positive-integer? (vector-ref v_0 3))))
55583          (let ((or-part_0 (not (vector-ref v_0 4))))
55584            (if or-part_0
55585              or-part_0
55586              (exact-nonnegative-integer? (vector-ref v_0 4))))
55587          #f)
55588        #f)
55589      #f)))
55590(define to-srcloc-stx
55591  (lambda (v_0)
55592    (if (srcloc? v_0)
55593      (if (syntax?$1 empty-syntax)
55594        (syntax2.1
55595         (syntax-content* empty-syntax)
55596         (syntax-scopes empty-syntax)
55597         (syntax-shifted-multi-scopes empty-syntax)
55598         (syntax-mpi-shifts empty-syntax)
55599         v_0
55600         (syntax-props empty-syntax)
55601         (syntax-inspector empty-syntax))
55602        (raise-argument-error 'struct-copy "syntax?" empty-syntax))
55603      (if (pair? v_0)
55604        (to-srcloc-stx (list->vector v_0))
55605        (if (vector? v_0)
55606          (if (syntax?$1 empty-syntax)
55607            (let ((srcloc2_0
55608                   (let ((app_0 (vector-ref v_0 0)))
55609                     (let ((app_1 (vector-ref v_0 1)))
55610                       (let ((app_2 (vector-ref v_0 2)))
55611                         (let ((app_3 (vector-ref v_0 3)))
55612                           (unsafe-make-srcloc
55613                            app_0
55614                            app_1
55615                            app_2
55616                            app_3
55617                            (vector-ref v_0 4))))))))
55618              (syntax2.1
55619               (syntax-content* empty-syntax)
55620               (syntax-scopes empty-syntax)
55621               (syntax-shifted-multi-scopes empty-syntax)
55622               (syntax-mpi-shifts empty-syntax)
55623               srcloc2_0
55624               (syntax-props empty-syntax)
55625               (syntax-inspector empty-syntax)))
55626            (raise-argument-error 'struct-copy "syntax?" empty-syntax))
55627          v_0)))))
55628(define 1/syntax-e
55629  (|#%name|
55630   syntax-e
55631   (lambda (s_0)
55632     (begin
55633       (begin
55634         (if (syntax?$1 s_0)
55635           (void)
55636           (raise-argument-error 'syntax-e "syntax?" s_0))
55637         (syntax-e$1 s_0))))))
55638(define 1/syntax-srcloc
55639  (|#%name|
55640   syntax-srcloc
55641   (lambda (s_0)
55642     (begin
55643       (begin
55644         (if (syntax?$1 s_0)
55645           (void)
55646           (raise-argument-error 'syntax-srcloc "syntax?" s_0))
55647         (syntax-srcloc$1 s_0))))))
55648(define 1/syntax->datum
55649  (|#%name|
55650   syntax->datum
55651   (lambda (s_0)
55652     (begin
55653       (begin
55654         (if (syntax?$1 s_0)
55655           (void)
55656           (raise-argument-error 'syntax->datum "syntax?" s_0))
55657         (syntax->datum$1 s_0))))))
55658(define maybe-syntax->datum
55659  (lambda (s_0) (if (syntax?$1 s_0) (syntax->datum$1 s_0) s_0)))
55660(define 1/datum->syntax
55661  (let ((datum->syntax_0
55662         (|#%name|
55663          datum->syntax
55664          (lambda (stx-c4_0 s5_0 stx-l1_0 stx-p2_0 ignored3_0)
55665            (begin
55666              (begin
55667                (if (let ((or-part_0 (not stx-c4_0)))
55668                      (if or-part_0 or-part_0 (syntax?$1 stx-c4_0)))
55669                  (void)
55670                  (raise-argument-error
55671                   'datum->syntax
55672                   "(or/c #f syntax?)"
55673                   stx-c4_0))
55674                (if (let ((or-part_0 (not stx-l1_0)))
55675                      (if or-part_0
55676                        or-part_0
55677                        (let ((or-part_1 (syntax?$1 stx-l1_0)))
55678                          (if or-part_1
55679                            or-part_1
55680                            (let ((or-part_2 (srcloc? stx-l1_0)))
55681                              (if or-part_2
55682                                or-part_2
55683                                (encoded-srcloc? stx-l1_0)))))))
55684                  (void)
55685                  (raise-argument-error
55686                   'datum->syntax
55687                   (string-append
55688                    "(or/c #f syntax?\n"
55689                    "         srcloc?\n"
55690                    "         (list/c any/c\n"
55691                    "                 (or/c exact-positive-integer? #f)\n"
55692                    "                 (or/c exact-nonnegative-integer? #f)\n"
55693                    "                 (or/c exact-positive-integer? #f)\n"
55694                    "                 (or/c exact-nonnegative-integer? #f))\n"
55695                    "         (vector/c any/c\n"
55696                    "                   (or/c exact-positive-integer? #f)\n"
55697                    "                   (or/c exact-nonnegative-integer? #f)\n"
55698                    "                   (or/c exact-positive-integer? #f)\n"
55699                    "                   (or/c exact-nonnegative-integer? #f)))")
55700                   stx-l1_0))
55701                (if (let ((or-part_0 (not stx-p2_0)))
55702                      (if or-part_0 or-part_0 (syntax?$1 stx-p2_0)))
55703                  (void)
55704                  (raise-argument-error
55705                   'datum->syntax
55706                   "(or/c #f syntax?)"
55707                   stx-p2_0))
55708                (datum->syntax$1
55709                 stx-c4_0
55710                 s5_0
55711                 (to-srcloc-stx stx-l1_0)
55712                 stx-p2_0)))))))
55713    (|#%name|
55714     datum->syntax
55715     (case-lambda
55716      ((stx-c_0 s_0) (begin (datum->syntax_0 stx-c_0 s_0 #f #f #f)))
55717      ((stx-c_0 s_0 stx-l_0 stx-p_0 ignored3_0)
55718       (datum->syntax_0 stx-c_0 s_0 stx-l_0 stx-p_0 ignored3_0))
55719      ((stx-c_0 s_0 stx-l_0 stx-p2_0)
55720       (datum->syntax_0 stx-c_0 s_0 stx-l_0 stx-p2_0 #f))
55721      ((stx-c_0 s_0 stx-l1_0) (datum->syntax_0 stx-c_0 s_0 stx-l1_0 #f #f))))))
55722(define 1/syntax-binding-set
55723  (|#%name|
55724   syntax-binding-set
55725   (lambda () (begin (syntax-binding-set1.1 null)))))
55726(define 1/syntax-binding-set-extend
55727  (let ((syntax-binding-set-extend_0
55728         (|#%name|
55729          syntax-binding-set-extend
55730          (lambda (bs13_0
55731                   as-sym14_0
55732                   as-phase15_0
55733                   mpi16_0
55734                   sym6_0
55735                   phase7_0
55736                   nominal-mpi8_0
55737                   nominal-phase+space9_0
55738                   nominal-sym10_0
55739                   nominal-require-phase+space-shift11_0
55740                   insp12_0)
55741            (begin
55742              (let ((sym_0
55743                     (if (eq? sym6_0 unsafe-undefined) as-sym14_0 sym6_0)))
55744                (let ((phase_0
55745                       (if (eq? phase7_0 unsafe-undefined)
55746                         as-phase15_0
55747                         phase7_0)))
55748                  (let ((nominal-mpi_0
55749                         (if (eq? nominal-mpi8_0 unsafe-undefined)
55750                           mpi16_0
55751                           nominal-mpi8_0)))
55752                    (let ((nominal-phase+space_0
55753                           (if (eq? nominal-phase+space9_0 unsafe-undefined)
55754                             phase_0
55755                             nominal-phase+space9_0)))
55756                      (let ((nominal-sym_0
55757                             (if (eq? nominal-sym10_0 unsafe-undefined)
55758                               sym_0
55759                               nominal-sym10_0)))
55760                        (begin
55761                          (if (1/syntax-binding-set? bs13_0)
55762                            (void)
55763                            (raise-argument-error
55764                             'syntax-binding-set-extend
55765                             "syntax-binding-set?"
55766                             bs13_0))
55767                          (if (symbol? as-sym14_0)
55768                            (void)
55769                            (raise-argument-error
55770                             'syntax-binding-set-extend
55771                             "symbol?"
55772                             as-sym14_0))
55773                          (if (phase? as-phase15_0)
55774                            (void)
55775                            (raise-argument-error
55776                             'syntax-binding-set-extend
55777                             phase?-string
55778                             as-phase15_0))
55779                          (if (1/module-path-index? mpi16_0)
55780                            (void)
55781                            (raise-argument-error
55782                             'syntax-binding-set-extend
55783                             "module-path-index?"
55784                             mpi16_0))
55785                          (if (symbol? sym_0)
55786                            (void)
55787                            (raise-argument-error
55788                             'syntax-binding-set-extend
55789                             "symbol?"
55790                             sym_0))
55791                          (if (phase? phase_0)
55792                            (void)
55793                            (raise-argument-error
55794                             'syntax-binding-set-extend
55795                             phase?-string
55796                             phase_0))
55797                          (if (1/module-path-index? nominal-mpi_0)
55798                            (void)
55799                            (raise-argument-error
55800                             'syntax-binding-set-extend
55801                             "module-path-index?"
55802                             nominal-mpi_0))
55803                          (if (phase+space? nominal-phase+space_0)
55804                            (void)
55805                            (raise-argument-error
55806                             'syntax-binding-set-extend
55807                             phase+space?-string
55808                             nominal-phase+space_0))
55809                          (if (symbol? nominal-sym_0)
55810                            (void)
55811                            (raise-argument-error
55812                             'syntax-binding-set-extend
55813                             "symbol?"
55814                             nominal-sym_0))
55815                          (if (phase+space-shift?
55816                               nominal-require-phase+space-shift11_0)
55817                            (void)
55818                            (raise-argument-error
55819                             'syntax-binding-set-extend
55820                             phase+space-shift?-string
55821                             nominal-require-phase+space-shift11_0))
55822                          (if (let ((or-part_0 (not insp12_0)))
55823                                (if or-part_0 or-part_0 (inspector? insp12_0)))
55824                            (void)
55825                            (raise-argument-error
55826                             'syntax-binding-set-extend
55827                             "(or/c inspector? #f)"
55828                             insp12_0))
55829                          (let ((app_0
55830                                 (intern-phase+space nominal-phase+space_0)))
55831                            (syntax-binding-set-extend$1
55832                             bs13_0
55833                             as-sym14_0
55834                             as-phase15_0
55835                             mpi16_0
55836                             sym_0
55837                             phase_0
55838                             nominal-mpi_0
55839                             app_0
55840                             nominal-sym_0
55841                             (intern-phase+space-shift
55842                              nominal-require-phase+space-shift11_0)
55843                             insp12_0)))))))))))))
55844    (|#%name|
55845     syntax-binding-set-extend
55846     (case-lambda
55847      ((bs_0 as-sym_0 as-phase_0 mpi_0)
55848       (begin
55849         (syntax-binding-set-extend_0
55850          bs_0
55851          as-sym_0
55852          as-phase_0
55853          mpi_0
55854          unsafe-undefined
55855          unsafe-undefined
55856          unsafe-undefined
55857          unsafe-undefined
55858          unsafe-undefined
55859          0
55860          #f)))
55861      ((bs_0
55862        as-sym_0
55863        as-phase_0
55864        mpi_0
55865        sym_0
55866        phase_0
55867        nominal-mpi_0
55868        nominal-phase+space_0
55869        nominal-sym_0
55870        nominal-require-phase+space-shift_0
55871        insp12_0)
55872       (syntax-binding-set-extend_0
55873        bs_0
55874        as-sym_0
55875        as-phase_0
55876        mpi_0
55877        sym_0
55878        phase_0
55879        nominal-mpi_0
55880        nominal-phase+space_0
55881        nominal-sym_0
55882        nominal-require-phase+space-shift_0
55883        insp12_0))
55884      ((bs_0
55885        as-sym_0
55886        as-phase_0
55887        mpi_0
55888        sym_0
55889        phase_0
55890        nominal-mpi_0
55891        nominal-phase+space_0
55892        nominal-sym_0
55893        nominal-require-phase+space-shift11_0)
55894       (syntax-binding-set-extend_0
55895        bs_0
55896        as-sym_0
55897        as-phase_0
55898        mpi_0
55899        sym_0
55900        phase_0
55901        nominal-mpi_0
55902        nominal-phase+space_0
55903        nominal-sym_0
55904        nominal-require-phase+space-shift11_0
55905        #f))
55906      ((bs_0
55907        as-sym_0
55908        as-phase_0
55909        mpi_0
55910        sym_0
55911        phase_0
55912        nominal-mpi_0
55913        nominal-phase+space_0
55914        nominal-sym10_0)
55915       (syntax-binding-set-extend_0
55916        bs_0
55917        as-sym_0
55918        as-phase_0
55919        mpi_0
55920        sym_0
55921        phase_0
55922        nominal-mpi_0
55923        nominal-phase+space_0
55924        nominal-sym10_0
55925        0
55926        #f))
55927      ((bs_0
55928        as-sym_0
55929        as-phase_0
55930        mpi_0
55931        sym_0
55932        phase_0
55933        nominal-mpi_0
55934        nominal-phase+space9_0)
55935       (syntax-binding-set-extend_0
55936        bs_0
55937        as-sym_0
55938        as-phase_0
55939        mpi_0
55940        sym_0
55941        phase_0
55942        nominal-mpi_0
55943        nominal-phase+space9_0
55944        unsafe-undefined
55945        0
55946        #f))
55947      ((bs_0 as-sym_0 as-phase_0 mpi_0 sym_0 phase_0 nominal-mpi8_0)
55948       (syntax-binding-set-extend_0
55949        bs_0
55950        as-sym_0
55951        as-phase_0
55952        mpi_0
55953        sym_0
55954        phase_0
55955        nominal-mpi8_0
55956        unsafe-undefined
55957        unsafe-undefined
55958        0
55959        #f))
55960      ((bs_0 as-sym_0 as-phase_0 mpi_0 sym_0 phase7_0)
55961       (syntax-binding-set-extend_0
55962        bs_0
55963        as-sym_0
55964        as-phase_0
55965        mpi_0
55966        sym_0
55967        phase7_0
55968        unsafe-undefined
55969        unsafe-undefined
55970        unsafe-undefined
55971        0
55972        #f))
55973      ((bs_0 as-sym_0 as-phase_0 mpi_0 sym6_0)
55974       (syntax-binding-set-extend_0
55975        bs_0
55976        as-sym_0
55977        as-phase_0
55978        mpi_0
55979        sym6_0
55980        unsafe-undefined
55981        unsafe-undefined
55982        unsafe-undefined
55983        unsafe-undefined
55984        0
55985        #f))))))
55986(define 1/syntax-binding-set->syntax
55987  (|#%name|
55988   syntax-binding-set->syntax
55989   (lambda (bs_0 datum_0)
55990     (begin
55991       (begin
55992         (if (1/syntax-binding-set? bs_0)
55993           (void)
55994           (raise-argument-error
55995            'syntax-binding-set->syntax
55996            "syntax-binding-set?"
55997            bs_0))
55998         (syntax-binding-set->syntax$1 bs_0 datum_0))))))
55999(define 1/syntax->list
56000  (|#%name|
56001   syntax->list
56002   (lambda (s_0)
56003     (begin
56004       (begin
56005         (if (syntax?$1 s_0)
56006           (void)
56007           (raise-argument-error 'syntax->list "syntax?" s_0))
56008         (syntax->list$1 s_0))))))
56009(define 1/syntax-original?
56010  (|#%name|
56011   syntax-original?
56012   (lambda (s_0)
56013     (begin
56014       (begin
56015         (if (syntax?$1 s_0)
56016           (void)
56017           (raise-argument-error 'syntax-original? "syntax?" s_0))
56018         (if (syntax-property$1 s_0 original-property-sym)
56019           (not (syntax-any-macro-scopes? s_0))
56020           #f))))))
56021(define 1/bound-identifier=?
56022  (let ((bound-identifier=?_0
56023         (|#%name|
56024          bound-identifier=?
56025          (lambda (a18_0 b19_0 phase17_0)
56026            (begin
56027              (let ((phase_0
56028                     (if (eq? phase17_0 unsafe-undefined)
56029                       (1/syntax-local-phase-level)
56030                       phase17_0)))
56031                (begin
56032                  (if (identifier? a18_0)
56033                    (void)
56034                    (raise-argument-error
56035                     'bound-identifier=?
56036                     "identifier?"
56037                     a18_0))
56038                  (if (identifier? b19_0)
56039                    (void)
56040                    (raise-argument-error
56041                     'bound-identifier=?
56042                     "identifier?"
56043                     b19_0))
56044                  (if (phase? phase_0)
56045                    (void)
56046                    (raise-argument-error
56047                     'bound-identifier=?
56048                     phase?-string
56049                     phase_0))
56050                  (bound-identifier=?$1 a18_0 b19_0 phase_0))))))))
56051    (|#%name|
56052     bound-identifier=?
56053     (case-lambda
56054      ((a_0 b_0) (begin (bound-identifier=?_0 a_0 b_0 unsafe-undefined)))
56055      ((a_0 b_0 phase17_0) (bound-identifier=?_0 a_0 b_0 phase17_0))))))
56056(define 1/free-identifier=?
56057  (let ((free-identifier=?_0
56058         (|#%name|
56059          free-identifier=?
56060          (lambda (a22_0 b23_0 a-phase20_0 b-phase21_0)
56061            (begin
56062              (let ((a-phase_0
56063                     (if (eq? a-phase20_0 unsafe-undefined)
56064                       (1/syntax-local-phase-level)
56065                       a-phase20_0)))
56066                (let ((b-phase_0
56067                       (if (eq? b-phase21_0 unsafe-undefined)
56068                         a-phase_0
56069                         b-phase21_0)))
56070                  (begin
56071                    (if (identifier? a22_0)
56072                      (void)
56073                      (raise-argument-error
56074                       'free-identifier=?
56075                       "identifier?"
56076                       a22_0))
56077                    (if (identifier? b23_0)
56078                      (void)
56079                      (raise-argument-error
56080                       'free-identifier=?
56081                       "identifier?"
56082                       b23_0))
56083                    (if (phase? a-phase_0)
56084                      (void)
56085                      (raise-argument-error
56086                       'free-identifier=?
56087                       phase?-string
56088                       a-phase_0))
56089                    (if (phase? b-phase_0)
56090                      (void)
56091                      (raise-argument-error
56092                       'free-identifier=?
56093                       phase?-string
56094                       b-phase_0))
56095                    (free-identifier=?$1
56096                     a22_0
56097                     b23_0
56098                     a-phase_0
56099                     b-phase_0)))))))))
56100    (|#%name|
56101     free-identifier=?
56102     (case-lambda
56103      ((a_0 b_0)
56104       (begin (free-identifier=?_0 a_0 b_0 unsafe-undefined unsafe-undefined)))
56105      ((a_0 b_0 a-phase_0 b-phase21_0)
56106       (free-identifier=?_0 a_0 b_0 a-phase_0 b-phase21_0))
56107      ((a_0 b_0 a-phase20_0)
56108       (free-identifier=?_0 a_0 b_0 a-phase20_0 unsafe-undefined))))))
56109(define 1/free-transformer-identifier=?
56110  (|#%name|
56111   free-transformer-identifier=?
56112   (lambda (a_0 b_0)
56113     (begin
56114       (begin
56115         (if (identifier? a_0)
56116           (void)
56117           (raise-argument-error
56118            'free-transformer-identifier=?
56119            "identifier?"
56120            a_0))
56121         (begin
56122           (if (identifier? b_0)
56123             (void)
56124             (raise-argument-error
56125              'free-transformer-identifier=?
56126              "identifier?"
56127              b_0))
56128           (let ((phase_0 (add1 (1/syntax-local-phase-level))))
56129             (free-identifier=?$1 a_0 b_0 phase_0 phase_0))))))))
56130(define 1/free-template-identifier=?
56131  (|#%name|
56132   free-template-identifier=?
56133   (lambda (a_0 b_0)
56134     (begin
56135       (begin
56136         (if (identifier? a_0)
56137           (void)
56138           (raise-argument-error
56139            'free-template-identifier=?
56140            "identifier?"
56141            a_0))
56142         (begin
56143           (if (identifier? b_0)
56144             (void)
56145             (raise-argument-error
56146              'free-template-identifier=?
56147              "identifier?"
56148              b_0))
56149           (let ((phase_0 (sub1 (1/syntax-local-phase-level))))
56150             (free-identifier=?$1 a_0 b_0 phase_0 phase_0))))))))
56151(define 1/free-label-identifier=?
56152  (|#%name|
56153   free-label-identifier=?
56154   (lambda (a_0 b_0)
56155     (begin
56156       (begin
56157         (if (identifier? a_0)
56158           (void)
56159           (raise-argument-error 'free-label-identifier=? "identifier?" a_0))
56160         (if (identifier? b_0)
56161           (void)
56162           (raise-argument-error 'free-label-identifier=? "identifier?" b_0))
56163         (free-identifier=?$1 a_0 b_0 #f #f))))))
56164(define 1/identifier-binding
56165  (let ((identifier-binding_0
56166         (|#%name|
56167          identifier-binding
56168          (lambda (id26_0 phase24_0 top-level-symbol?25_0)
56169            (begin
56170              (let ((phase_0
56171                     (if (eq? phase24_0 unsafe-undefined)
56172                       (1/syntax-local-phase-level)
56173                       phase24_0)))
56174                (begin
56175                  (if (identifier? id26_0)
56176                    (void)
56177                    (raise-argument-error
56178                     'identifier-binding
56179                     "identifier?"
56180                     id26_0))
56181                  (if (phase? phase_0)
56182                    (void)
56183                    (raise-argument-error
56184                     'identifier-binding
56185                     phase?-string
56186                     phase_0))
56187                  (identifier-binding$1
56188                   id26_0
56189                   phase_0
56190                   top-level-symbol?25_0))))))))
56191    (|#%name|
56192     identifier-binding
56193     (case-lambda
56194      ((id_0) (begin (identifier-binding_0 id_0 unsafe-undefined #f)))
56195      ((id_0 phase_0 top-level-symbol?25_0)
56196       (identifier-binding_0 id_0 phase_0 top-level-symbol?25_0))
56197      ((id_0 phase24_0) (identifier-binding_0 id_0 phase24_0 #f))))))
56198(define 1/identifier-transformer-binding
56199  (let ((identifier-transformer-binding_0
56200         (|#%name|
56201          identifier-transformer-binding
56202          (lambda (id28_0 phase27_0)
56203            (begin
56204              (let ((phase_0
56205                     (if (eq? phase27_0 unsafe-undefined)
56206                       (1/syntax-local-phase-level)
56207                       phase27_0)))
56208                (begin
56209                  (if (identifier? id28_0)
56210                    (void)
56211                    (raise-argument-error
56212                     'identifier-transformer-binding
56213                     "identifier?"
56214                     id28_0))
56215                  (identifier-binding$1
56216                   id28_0
56217                   (if phase_0 (add1 phase_0) #f)))))))))
56218    (|#%name|
56219     identifier-transformer-binding
56220     (case-lambda
56221      ((id_0) (begin (identifier-transformer-binding_0 id_0 unsafe-undefined)))
56222      ((id_0 phase27_0) (identifier-transformer-binding_0 id_0 phase27_0))))))
56223(define 1/identifier-template-binding
56224  (|#%name|
56225   identifier-template-binding
56226   (lambda (id_0)
56227     (begin
56228       (begin
56229         (if (identifier? id_0)
56230           (void)
56231           (raise-argument-error
56232            'identifier-template-binding
56233            "identifier?"
56234            id_0))
56235         (identifier-binding$1 id_0 (sub1 (1/syntax-local-phase-level))))))))
56236(define 1/identifier-label-binding
56237  (|#%name|
56238   identifier-label-binding
56239   (lambda (id_0)
56240     (begin
56241       (begin
56242         (if (identifier? id_0)
56243           (void)
56244           (raise-argument-error 'identifier-label-binding "identifier?" id_0))
56245         (identifier-binding$1 id_0 #f))))))
56246(define 1/identifier-binding-symbol
56247  (let ((identifier-binding-symbol_0
56248         (|#%name|
56249          identifier-binding-symbol
56250          (lambda (id30_0 phase29_0)
56251            (begin
56252              (let ((phase_0
56253                     (if (eq? phase29_0 unsafe-undefined)
56254                       (1/syntax-local-phase-level)
56255                       phase29_0)))
56256                (begin
56257                  (if (identifier? id30_0)
56258                    (void)
56259                    (raise-argument-error
56260                     'identifier-binding-symbol
56261                     "identifier?"
56262                     id30_0))
56263                  (if (phase? phase_0)
56264                    (void)
56265                    (raise-argument-error
56266                     'identifier-binding-symbol
56267                     phase?-string
56268                     phase_0))
56269                  (identifier-binding-symbol$1 id30_0 phase_0))))))))
56270    (|#%name|
56271     identifier-binding-symbol
56272     (case-lambda
56273      ((id_0) (begin (identifier-binding-symbol_0 id_0 unsafe-undefined)))
56274      ((id_0 phase29_0) (identifier-binding-symbol_0 id_0 phase29_0))))))
56275(define 1/identifier-prune-lexical-context
56276  (let ((identifier-prune-lexical-context_0
56277         (|#%name|
56278          identifier-prune-lexical-context
56279          (lambda (id32_0 syms31_0)
56280            (begin
56281              (begin
56282                (if (identifier? id32_0)
56283                  (void)
56284                  (raise-argument-error
56285                   'identifier-prune-lexical-context
56286                   "identifier?"
56287                   id32_0))
56288                (if (if (list? syms31_0) (andmap_2344 symbol? syms31_0) #f)
56289                  (void)
56290                  (raise-argument-error
56291                   'identifier-prune-lexical-context
56292                   "(listof symbol?)"
56293                   syms31_0))
56294                id32_0))))))
56295    (|#%name|
56296     identifier-prune-lexical-context
56297     (case-lambda
56298      ((id_0) (begin (identifier-prune-lexical-context_0 id_0 null)))
56299      ((id_0 syms31_0) (identifier-prune-lexical-context_0 id_0 syms31_0))))))
56300(define 1/syntax-debug-info
56301  (let ((syntax-debug-info_0
56302         (|#%name|
56303          syntax-debug-info
56304          (lambda (s35_0 phase33_0 all-bindings?34_0)
56305            (begin
56306              (let ((phase_0
56307                     (if (eq? phase33_0 unsafe-undefined)
56308                       (1/syntax-local-phase-level)
56309                       phase33_0)))
56310                (begin
56311                  (if (syntax?$1 s35_0)
56312                    (void)
56313                    (raise-argument-error 'syntax-debug-info "syntax?" s35_0))
56314                  (if (phase? phase_0)
56315                    (void)
56316                    (raise-argument-error
56317                     'syntax-debug-info
56318                     phase?-string
56319                     phase_0))
56320                  (syntax-debug-info$1 s35_0 phase_0 all-bindings?34_0))))))))
56321    (|#%name|
56322     syntax-debug-info
56323     (case-lambda
56324      ((s_0) (begin (syntax-debug-info_0 s_0 unsafe-undefined #f)))
56325      ((s_0 phase_0 all-bindings?34_0)
56326       (syntax-debug-info_0 s_0 phase_0 all-bindings?34_0))
56327      ((s_0 phase33_0) (syntax-debug-info_0 s_0 phase33_0 #f))))))
56328(define 1/syntax-shift-phase-level
56329  (|#%name|
56330   syntax-shift-phase-level
56331   (lambda (s_0 phase_0)
56332     (begin
56333       (begin
56334         (if (syntax?$1 s_0)
56335           (void)
56336           (raise-argument-error 'syntax-shift-phase-level "syntax?" s_0))
56337         (if (phase? phase_0)
56338           (void)
56339           (raise-argument-error
56340            'syntax-shift-phase-level
56341            phase?-string
56342            phase_0))
56343         (syntax-shift-phase-level$1 s_0 phase_0))))))
56344(define 1/syntax-track-origin
56345  (|#%name|
56346   syntax-track-origin
56347   (lambda (new-stx_0 old-stx_0 id_0)
56348     (begin
56349       (begin
56350         (if (syntax?$1 new-stx_0)
56351           (void)
56352           (raise-argument-error 'syntax-track-origin "syntax?" new-stx_0))
56353         (begin
56354           (if (syntax?$1 old-stx_0)
56355             (void)
56356             (raise-argument-error 'syntax-track-origin "syntax?" old-stx_0))
56357           (begin
56358             (if (identifier? id_0)
56359               (void)
56360               (raise-argument-error 'syntax-track-origin "identifier?" id_0))
56361             (let ((s_0 (syntax-track-origin$1 new-stx_0 old-stx_0 id_0)))
56362               (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
56363                 (begin
56364                   (if ctx_0
56365                     (let ((obs_0
56366                            (begin-unsafe
56367                             (expand-context/inner-observer
56368                              (root-expand-context/outer-inner ctx_0)))))
56369                       (if obs_0
56370                         (call-expand-observe
56371                          obs_0
56372                          'track-syntax
56373                          'track-origin
56374                          new-stx_0
56375                          s_0)
56376                         (void)))
56377                     (void))
56378                   s_0))))))))))
56379(define 1/namespace-attach-module
56380  (let ((namespace-attach-module_0
56381         (|#%name|
56382          namespace-attach-module
56383          (lambda (src-namespace2_0 mod-path3_0 dest-namespace1_0)
56384            (begin
56385              (let ((dest-namespace_0
56386                     (if (eq? dest-namespace1_0 unsafe-undefined)
56387                       (1/current-namespace)
56388                       dest-namespace1_0)))
56389                (do-attach-module.1
56390                 #t
56391                 'namespace-attach-module
56392                 src-namespace2_0
56393                 mod-path3_0
56394                 dest-namespace_0)))))))
56395    (|#%name|
56396     namespace-attach-module
56397     (case-lambda
56398      ((src-namespace_0 mod-path_0)
56399       (begin
56400         (namespace-attach-module_0
56401          src-namespace_0
56402          mod-path_0
56403          unsafe-undefined)))
56404      ((src-namespace_0 mod-path_0 dest-namespace1_0)
56405       (namespace-attach-module_0
56406        src-namespace_0
56407        mod-path_0
56408        dest-namespace1_0))))))
56409(define 1/namespace-attach-module-declaration
56410  (let ((namespace-attach-module-declaration_0
56411         (|#%name|
56412          namespace-attach-module-declaration
56413          (lambda (src-namespace5_0 mod-path6_0 dest-namespace4_0)
56414            (begin
56415              (let ((dest-namespace_0
56416                     (if (eq? dest-namespace4_0 unsafe-undefined)
56417                       (1/current-namespace)
56418                       dest-namespace4_0)))
56419                (do-attach-module.1
56420                 #f
56421                 'namespace-attach-module-declaration
56422                 src-namespace5_0
56423                 mod-path6_0
56424                 dest-namespace_0)))))))
56425    (|#%name|
56426     namespace-attach-module-declaration
56427     (case-lambda
56428      ((src-namespace_0 mod-path_0)
56429       (begin
56430         (namespace-attach-module-declaration_0
56431          src-namespace_0
56432          mod-path_0
56433          unsafe-undefined)))
56434      ((src-namespace_0 mod-path_0 dest-namespace4_0)
56435       (namespace-attach-module-declaration_0
56436        src-namespace_0
56437        mod-path_0
56438        dest-namespace4_0))))))
56439(define do-attach-module.1
56440  (|#%name|
56441   do-attach-module
56442   (lambda (attach-instances?7_0
56443            who9_0
56444            src-namespace10_0
56445            mod-path11_0
56446            dest-namespace12_0)
56447     (begin
56448       (begin
56449         (if (1/namespace? src-namespace10_0)
56450           (void)
56451           (raise-argument-error who9_0 "namespace?" src-namespace10_0))
56452         (begin
56453           (if (let ((or-part_0 (1/module-path? mod-path11_0)))
56454                 (if or-part_0
56455                   or-part_0
56456                   (1/resolved-module-path? mod-path11_0)))
56457             (void)
56458             (raise-argument-error
56459              who9_0
56460              "(or/c module-path? resolved-module-path?)"
56461              mod-path11_0))
56462           (begin
56463             (if (1/namespace? dest-namespace12_0)
56464               (void)
56465               (raise-argument-error who9_0 "namespace?" dest-namespace12_0))
56466             (let ((phase_0 (namespace-phase src-namespace10_0)))
56467               (begin
56468                 (if (eqv? phase_0 (namespace-phase dest-namespace12_0))
56469                   (void)
56470                   (raise-arguments-error
56471                    who9_0
56472                    "source and destination namespace phases do not match"
56473                    "source phase"
56474                    phase_0
56475                    "destination phase"
56476                    (namespace-phase dest-namespace12_0)))
56477                 (let ((todo_0 (make-hasheq)))
56478                   (let ((missing_0 kw2836))
56479                     (begin
56480                       (letrec*
56481                        ((loop_0
56482                          (|#%name|
56483                           loop
56484                           (lambda (mpi_0
56485                                    phase_1
56486                                    attach-instances?_0
56487                                    attach-phase_0)
56488                             (begin
56489                               (let ((mod-name_0
56490                                      (with-continuation-mark*
56491                                       push-authentic
56492                                       parameterization-key
56493                                       (extend-parameterization
56494                                        (continuation-mark-set-first
56495                                         #f
56496                                         parameterization-key)
56497                                        1/current-namespace
56498                                        src-namespace10_0)
56499                                       (1/module-path-index-resolve mpi_0))))
56500                                 (let ((attach-this-instance?_0
56501                                        (if attach-instances?_0
56502                                          (eqv? phase_1 attach-phase_0)
56503                                          #f)))
56504                                   (let ((m-ns_0
56505                                          (hash-ref
56506                                           (hash-ref
56507                                            todo_0
56508                                            mod-name_0
56509                                            hash2589)
56510                                           phase_1
56511                                           missing_0)))
56512                                     (if (let ((or-part_0
56513                                                (eq? missing_0 m-ns_0)))
56514                                           (if or-part_0
56515                                             or-part_0
56516                                             (if attach-this-instance?_0
56517                                               (not m-ns_0)
56518                                               #f)))
56519                                       (let ((m_0
56520                                              (namespace->module
56521                                               src-namespace10_0
56522                                               mod-name_0)))
56523                                         (begin
56524                                           (if m_0
56525                                             (void)
56526                                             (raise-arguments-error
56527                                              who9_0
56528                                              "module not declared (in the source namespace)"
56529                                              "module name"
56530                                              mod-name_0))
56531                                           (if (if (module-cross-phase-persistent?
56532                                                    m_0)
56533                                                 (if (not
56534                                                      (begin-unsafe
56535                                                       (not phase_1)))
56536                                                   (not
56537                                                    (begin-unsafe
56538                                                     (eq? phase_1 0)))
56539                                                   #f)
56540                                                 #f)
56541                                             (loop_0
56542                                              mpi_0
56543                                              0
56544                                              attach-instances?_0
56545                                              0)
56546                                             (let ((already-m_0
56547                                                    (namespace->module
56548                                                     dest-namespace12_0
56549                                                     mod-name_0)))
56550                                               (begin
56551                                                 (if (if already-m_0
56552                                                       (not
56553                                                        (eq? already-m_0 m_0))
56554                                                       #f)
56555                                                   (raise-arguments-error
56556                                                    who9_0
56557                                                    "a different declaration is already in the destination namespace"
56558                                                    "module name"
56559                                                    mod-name_0)
56560                                                   (void))
56561                                                 (call-with-values
56562                                                  (lambda ()
56563                                                    (if (if attach-this-instance?_0
56564                                                          attach-this-instance?_0
56565                                                          (module-cross-phase-persistent?
56566                                                           m_0))
56567                                                      (let ((m-ns_1
56568                                                             (namespace->module-namespace.1
56569                                                              #f
56570                                                              #f
56571                                                              void
56572                                                              src-namespace10_0
56573                                                              mod-name_0
56574                                                              phase_1)))
56575                                                        (begin
56576                                                          (if m-ns_1
56577                                                            (void)
56578                                                            (raise-arguments-error
56579                                                             who9_0
56580                                                             "module not instantiated (in the source namespace)"
56581                                                             "module name"
56582                                                             mod-name_0))
56583                                                          (let ((already-m-ns_0
56584                                                                 (if already-m_0
56585                                                                   (namespace->module-namespace.1
56586                                                                    #f
56587                                                                    #f
56588                                                                    void
56589                                                                    dest-namespace12_0
56590                                                                    mod-name_0
56591                                                                    phase_1)
56592                                                                   #f)))
56593                                                            (begin
56594                                                              (if (if already-m-ns_0
56595                                                                    (if (not
56596                                                                         (eq?
56597                                                                          m-ns_1
56598                                                                          already-m-ns_0))
56599                                                                      (not
56600                                                                       (namespace-same-instance?
56601                                                                        m-ns_1
56602                                                                        already-m-ns_0))
56603                                                                      #f)
56604                                                                    #f)
56605                                                                (raise-arguments-error
56606                                                                 who9_0
56607                                                                 "a different instance is already in the destination namespace"
56608                                                                 "module name"
56609                                                                 mod-name_0)
56610                                                                (void))
56611                                                              (values
56612                                                               m-ns_1
56613                                                               (if already-m-ns_0
56614                                                                 #t
56615                                                                 #f))))))
56616                                                      (begin
56617                                                        (if (if (begin-unsafe
56618                                                                 (not phase_1))
56619                                                              (not
56620                                                               (namespace->module-namespace.1
56621                                                                #f
56622                                                                #f
56623                                                                void
56624                                                                src-namespace10_0
56625                                                                mod-name_0
56626                                                                phase_1))
56627                                                              #f)
56628                                                          (with-continuation-mark*
56629                                                           push-authentic
56630                                                           parameterization-key
56631                                                           (extend-parameterization
56632                                                            (continuation-mark-set-first
56633                                                             #f
56634                                                             parameterization-key)
56635                                                            1/current-namespace
56636                                                            src-namespace10_0)
56637                                                           (namespace-module-instantiate!.1
56638                                                            #f
56639                                                            #t
56640                                                            unsafe-undefined
56641                                                            hash2610
56642                                                            null
56643                                                            #f
56644                                                            src-namespace10_0
56645                                                            mpi_0
56646                                                            phase_1))
56647                                                          (void))
56648                                                        (values
56649                                                         #f
56650                                                         (if already-m_0
56651                                                           #t
56652                                                           #f)))))
56653                                                  (case-lambda
56654                                                   ((m-ns_1 already?_0)
56655                                                    (begin
56656                                                      (let ((xform_0
56657                                                             (lambda (ht_0)
56658                                                               (hash-set
56659                                                                ht_0
56660                                                                phase_1
56661                                                                m-ns_1))))
56662                                                        (let ((default_0
56663                                                               hash2589))
56664                                                          (begin-unsafe
56665                                                           (do-hash-update
56666                                                            'hash-update!
56667                                                            #t
56668                                                            hash-set!
56669                                                            todo_0
56670                                                            mod-name_0
56671                                                            xform_0
56672                                                            default_0))))
56673                                                      (if already?_0
56674                                                        (void)
56675                                                        (begin
56676                                                          (let ((lst_0
56677                                                                 (module-requires
56678                                                                  m_0)))
56679                                                            (begin
56680                                                              (letrec*
56681                                                               ((for-loop_0
56682                                                                 (|#%name|
56683                                                                  for-loop
56684                                                                  (lambda (lst_1)
56685                                                                    (begin
56686                                                                      (if (pair?
56687                                                                           lst_1)
56688                                                                        (let ((phase+reqs_0
56689                                                                               (unsafe-car
56690                                                                                lst_1)))
56691                                                                          (let ((rest_0
56692                                                                                 (unsafe-cdr
56693                                                                                  lst_1)))
56694                                                                            (call-with-values
56695                                                                             (lambda ()
56696                                                                               (let ((lst_2
56697                                                                                      (cdr
56698                                                                                       phase+reqs_0)))
56699                                                                                 (begin
56700                                                                                   (letrec*
56701                                                                                    ((for-loop_1
56702                                                                                      (|#%name|
56703                                                                                       for-loop
56704                                                                                       (lambda (lst_3)
56705                                                                                         (begin
56706                                                                                           (if (pair?
56707                                                                                                lst_3)
56708                                                                                             (let ((req_0
56709                                                                                                    (unsafe-car
56710                                                                                                     lst_3)))
56711                                                                                               (let ((rest_1
56712                                                                                                      (unsafe-cdr
56713                                                                                                       lst_3)))
56714                                                                                                 (begin
56715                                                                                                   (let ((app_0
56716                                                                                                          (module-path-index-shift
56717                                                                                                           req_0
56718                                                                                                           (module-self
56719                                                                                                            m_0)
56720                                                                                                           mpi_0)))
56721                                                                                                     (loop_0
56722                                                                                                      app_0
56723                                                                                                      (phase+
56724                                                                                                       phase_1
56725                                                                                                       (car
56726                                                                                                        phase+reqs_0))
56727                                                                                                      attach-instances?_0
56728                                                                                                      attach-phase_0))
56729                                                                                                   (for-loop_1
56730                                                                                                    rest_1))))
56731                                                                                             (values)))))))
56732                                                                                    (for-loop_1
56733                                                                                     lst_2)))))
56734                                                                             (case-lambda
56735                                                                              (()
56736                                                                               (for-loop_0
56737                                                                                rest_0))
56738                                                                              (args
56739                                                                               (raise-binding-result-arity-error
56740                                                                                0
56741                                                                                args))))))
56742                                                                        (values)))))))
56743                                                               (for-loop_0
56744                                                                lst_0))))
56745                                                          (void)
56746                                                          (let ((lst_0
56747                                                                 (module-submodule-names
56748                                                                  m_0)))
56749                                                            (begin
56750                                                              (letrec*
56751                                                               ((for-loop_0
56752                                                                 (|#%name|
56753                                                                  for-loop
56754                                                                  (lambda (lst_1)
56755                                                                    (begin
56756                                                                      (if (pair?
56757                                                                           lst_1)
56758                                                                        (let ((submod-name_0
56759                                                                               (unsafe-car
56760                                                                                lst_1)))
56761                                                                          (let ((rest_0
56762                                                                                 (unsafe-cdr
56763                                                                                  lst_1)))
56764                                                                            (begin
56765                                                                              (loop_0
56766                                                                               (1/module-path-index-join
56767                                                                                (list
56768                                                                                 'submod
56769                                                                                 "."
56770                                                                                 submod-name_0)
56771                                                                                mpi_0)
56772                                                                               #f
56773                                                                               #f
56774                                                                               attach-phase_0)
56775                                                                              (for-loop_0
56776                                                                               rest_0))))
56777                                                                        (values)))))))
56778                                                               (for-loop_0
56779                                                                lst_0))))
56780                                                          (void)
56781                                                          (if (module-supermodule-name
56782                                                               m_0)
56783                                                            (loop_0
56784                                                             (1/module-path-index-join
56785                                                              '(submod "..")
56786                                                              mpi_0)
56787                                                             #f
56788                                                             #f
56789                                                             attach-phase_0)
56790                                                            (void))))))
56791                                                   (args
56792                                                    (raise-binding-result-arity-error
56793                                                     2
56794                                                     args)))))))))
56795                                       (void))))))))))
56796                        (loop_0
56797                         (1/module-path-index-join
56798                          (if (1/resolved-module-path? mod-path11_0)
56799                            (resolved-module-path->module-path mod-path11_0)
56800                            mod-path11_0)
56801                          #f)
56802                         phase_0
56803                         attach-instances?7_0
56804                         phase_0))
56805                       (begin
56806                         (begin
56807                           (letrec*
56808                            ((for-loop_0
56809                              (|#%name|
56810                               for-loop
56811                               (lambda (i_0)
56812                                 (begin
56813                                   (if i_0
56814                                     (call-with-values
56815                                      (lambda ()
56816                                        (hash-iterate-key+value todo_0 i_0))
56817                                      (case-lambda
56818                                       ((mod-name_0 phases_0)
56819                                        (call-with-values
56820                                         (lambda ()
56821                                           (begin
56822                                             (letrec*
56823                                              ((for-loop_1
56824                                                (|#%name|
56825                                                 for-loop
56826                                                 (lambda (i_1)
56827                                                   (begin
56828                                                     (if i_1
56829                                                       (call-with-values
56830                                                        (lambda ()
56831                                                          (hash-iterate-key+value
56832                                                           phases_0
56833                                                           i_1))
56834                                                        (case-lambda
56835                                                         ((phase_1 m-ns_0)
56836                                                          (begin
56837                                                            (let ((m_0
56838                                                                   (namespace->module
56839                                                                    src-namespace10_0
56840                                                                    mod-name_0)))
56841                                                              (begin
56842                                                                (begin-unsafe
56843                                                                 (|#%app|
56844                                                                  (module-force-bulk-binding
56845                                                                   m_0)
56846                                                                  (namespace-bulk-binding-registry
56847                                                                   src-namespace10_0)))
56848                                                                (with-continuation-mark*
56849                                                                 push-authentic
56850                                                                 parameterization-key
56851                                                                 (extend-parameterization
56852                                                                  (continuation-mark-set-first
56853                                                                   #f
56854                                                                   parameterization-key)
56855                                                                  1/current-namespace
56856                                                                  dest-namespace12_0)
56857                                                                 (declare-module!.1
56858                                                                  #t
56859                                                                  dest-namespace12_0
56860                                                                  m_0
56861                                                                  mod-name_0))
56862                                                                (if m-ns_0
56863                                                                  (begin
56864                                                                    (namespace-record-module-instance-attached!
56865                                                                     src-namespace10_0
56866                                                                     mod-name_0
56867                                                                     phase_1)
56868                                                                    (let ((or-part_0
56869                                                                           (namespace->module-namespace.1
56870                                                                            #f
56871                                                                            #f
56872                                                                            void
56873                                                                            dest-namespace12_0
56874                                                                            mod-name_0
56875                                                                            phase_1)))
56876                                                                      (if or-part_0
56877                                                                        or-part_0
56878                                                                        (namespace-install-module-namespace!
56879                                                                         dest-namespace12_0
56880                                                                         mod-name_0
56881                                                                         phase_1
56882                                                                         m_0
56883                                                                         m-ns_0))))
56884                                                                  (void))))
56885                                                            (for-loop_1
56886                                                             (hash-iterate-next
56887                                                              phases_0
56888                                                              i_1))))
56889                                                         (args
56890                                                          (raise-binding-result-arity-error
56891                                                           2
56892                                                           args))))
56893                                                       (values)))))))
56894                                              (for-loop_1
56895                                               (hash-iterate-first
56896                                                phases_0)))))
56897                                         (case-lambda
56898                                          (()
56899                                           (for-loop_0
56900                                            (hash-iterate-next todo_0 i_0)))
56901                                          (args
56902                                           (raise-binding-result-arity-error
56903                                            0
56904                                            args)))))
56905                                       (args
56906                                        (raise-binding-result-arity-error
56907                                         2
56908                                         args))))
56909                                     (values)))))))
56910                            (for-loop_0 (hash-iterate-first todo_0))))
56911                         (let ((mnr_0
56912                                (|#%app| 1/current-module-name-resolver)))
56913                           (with-continuation-mark*
56914                            authentic
56915                            parameterization-key
56916                            (extend-parameterization
56917                             (continuation-mark-set-first
56918                              #f
56919                              parameterization-key)
56920                             1/current-namespace
56921                             dest-namespace12_0)
56922                            (begin
56923                              (begin
56924                                (letrec*
56925                                 ((for-loop_0
56926                                   (|#%name|
56927                                    for-loop
56928                                    (lambda (i_0)
56929                                      (begin
56930                                        (if i_0
56931                                          (let ((mod-name_0
56932                                                 (hash-iterate-key
56933                                                  todo_0
56934                                                  i_0)))
56935                                            (begin
56936                                              (|#%app|
56937                                               mnr_0
56938                                               mod-name_0
56939                                               src-namespace10_0)
56940                                              (for-loop_0
56941                                               (hash-iterate-next
56942                                                todo_0
56943                                                i_0))))
56944                                          (values)))))))
56945                                 (for-loop_0 (hash-iterate-first todo_0))))
56946                              (void)))))))))))))))))
56947(define 1/make-empty-namespace
56948  (|#%name|
56949   make-empty-namespace
56950   (lambda ()
56951     (begin
56952       (let ((current-ns_0 (1/current-namespace)))
56953         (let ((phase_0 (namespace-phase current-ns_0)))
56954           (let ((ns_0
56955                  (namespace->namespace-at-phase (make-namespace) phase_0)))
56956             (begin
56957               (1/namespace-attach-module current-ns_0 ''|#%kernel| ns_0)
56958               (namespace-primitive-module-visit! ns_0 '|#%kernel|)
56959               ns_0))))))))
56960(define 1/namespace-syntax-introduce
56961  (let ((namespace-syntax-introduce_0
56962         (|#%name|
56963          namespace-syntax-introduce
56964          (lambda (s2_0 ns1_0)
56965            (begin
56966              (let ((ns_0
56967                     (if (eq? ns1_0 unsafe-undefined)
56968                       (1/current-namespace)
56969                       ns1_0)))
56970                (begin
56971                  (if (syntax?$1 s2_0)
56972                    (void)
56973                    (raise-argument-error
56974                     'namespace-syntax-introduce
56975                     "syntax?"
56976                     s2_0))
56977                  (begin
56978                    (if (1/namespace? ns_0)
56979                      (void)
56980                      (raise-argument-error
56981                       'namespace-syntax-introduce
56982                       "namespace?"
56983                       ns_0))
56984                    (let ((root-ctx_0 (namespace-get-root-expand-ctx ns_0)))
56985                      (let ((post-scope_0
56986                             (post-expansion-scope
56987                              (begin-unsafe
56988                               (root-expand-context/outer-post-expansion
56989                                root-ctx_0)))))
56990                        (let ((other-namespace-scopes_0
56991                               (reverse$1
56992                                (let ((ht_0
56993                                       (syntax-scope-set
56994                                        (begin-unsafe
56995                                         (root-expand-context/inner-all-scopes-stx
56996                                          (root-expand-context/outer-inner
56997                                           root-ctx_0)))
56998                                        0)))
56999                                  (begin
57000                                    (letrec*
57001                                     ((for-loop_0
57002                                       (|#%name|
57003                                        for-loop
57004                                        (lambda (fold-var_0 i_0)
57005                                          (begin
57006                                            (if i_0
57007                                              (let ((sc_0
57008                                                     (unsafe-immutable-hash-iterate-key
57009                                                      ht_0
57010                                                      i_0)))
57011                                                (let ((fold-var_1
57012                                                       (if (equal?
57013                                                            sc_0
57014                                                            post-scope_0)
57015                                                         fold-var_0
57016                                                         (let ((fold-var_1
57017                                                                (cons
57018                                                                 sc_0
57019                                                                 fold-var_0)))
57020                                                           (values
57021                                                            fold-var_1)))))
57022                                                  (for-loop_0
57023                                                   fold-var_1
57024                                                   (unsafe-immutable-hash-iterate-next
57025                                                    ht_0
57026                                                    i_0))))
57027                                              fold-var_0))))))
57028                                     (for-loop_0
57029                                      null
57030                                      (unsafe-immutable-hash-iterate-first
57031                                       ht_0))))))))
57032                          (let ((add-ns-scopes_0
57033                                 (|#%name|
57034                                  add-ns-scopes
57035                                  (lambda (s_0)
57036                                    (begin
57037                                      (let ((temp40_0
57038                                             (add-scopes
57039                                              (push-scope s_0 post-scope_0)
57040                                              other-namespace-scopes_0)))
57041                                        (let ((temp41_0
57042                                               (begin-unsafe
57043                                                (root-expand-context/inner-all-scopes-stx
57044                                                 (root-expand-context/outer-inner
57045                                                  root-ctx_0)))))
57046                                          (let ((temp42_0
57047                                                 (let ((or-part_0
57048                                                        (namespace-declaration-inspector
57049                                                         ns_0)))
57050                                                   (if or-part_0
57051                                                     or-part_0
57052                                                     (current-code-inspector)))))
57053                                            (let ((temp41_1 temp41_0)
57054                                                  (temp40_1 temp40_0))
57055                                              (syntax-transfer-shifts.1
57056                                               #t
57057                                               temp40_1
57058                                               temp41_1
57059                                               temp42_0))))))))))
57060                            (let ((maybe-module-id_0
57061                                   (if (pair? (1/syntax-e s2_0))
57062                                     (if (identifier? (car (1/syntax-e s2_0)))
57063                                       (add-ns-scopes_0
57064                                        (car (1/syntax-e s2_0)))
57065                                       #f)
57066                                     #f)))
57067                              (if (if maybe-module-id_0
57068                                    (1/free-identifier=?
57069                                     maybe-module-id_0
57070                                     (1/namespace-module-identifier ns_0)
57071                                     (namespace-phase ns_0))
57072                                    #f)
57073                                (1/datum->syntax
57074                                 s2_0
57075                                 (cons
57076                                  maybe-module-id_0
57077                                  (cdr (1/syntax-e s2_0)))
57078                                 s2_0
57079                                 s2_0)
57080                                (add-ns-scopes_0 s2_0)))))))))))))))
57081    (|#%name|
57082     namespace-syntax-introduce
57083     (case-lambda
57084      ((s_0) (begin (namespace-syntax-introduce_0 s_0 unsafe-undefined)))
57085      ((s_0 ns1_0) (namespace-syntax-introduce_0 s_0 ns1_0))))))
57086(define namespace-datum-introduce
57087  (lambda (s_0) (1/namespace-syntax-introduce (1/datum->syntax #f s_0))))
57088(define 1/namespace-module-identifier
57089  (let ((namespace-module-identifier_0
57090         (|#%name|
57091          namespace-module-identifier
57092          (lambda (where3_0)
57093            (begin
57094              (let ((where_0
57095                     (if (eq? where3_0 unsafe-undefined)
57096                       (1/current-namespace)
57097                       where3_0)))
57098                (begin
57099                  (if (let ((or-part_0 (1/namespace? where_0)))
57100                        (if or-part_0 or-part_0 (phase? where_0)))
57101                    (void)
57102                    (raise-argument-error
57103                     'namespace-module-identifier
57104                     (string-append "(or/c namespace? " phase?-string ")")
57105                     where_0))
57106                  (1/datum->syntax
57107                   (1/syntax-shift-phase-level
57108                    core-stx
57109                    (if (1/namespace? where_0)
57110                      (namespace-phase where_0)
57111                      where_0))
57112                   'module))))))))
57113    (|#%name|
57114     namespace-module-identifier
57115     (case-lambda
57116      (() (begin (namespace-module-identifier_0 unsafe-undefined)))
57117      ((where3_0) (namespace-module-identifier_0 where3_0))))))
57118(define 1/namespace-symbol->identifier
57119  (|#%name|
57120   namespace-symbol->identifier
57121   (lambda (sym_0)
57122     (begin
57123       (begin
57124         (if (symbol? sym_0)
57125           (void)
57126           (raise-argument-error
57127            'namespace-symbol->identifier
57128            "symbol?"
57129            sym_0))
57130         (1/namespace-syntax-introduce (1/datum->syntax #f sym_0)))))))
57131(define do-namespace-require.1
57132  (|#%name|
57133   do-namespace-require
57134   (lambda (copy-variable-as-constant?7_0
57135            copy-variable-phase-level6_0
57136            run?4_0
57137            skip-variable-phase-level8_0
57138            visit?5_0
57139            who14_0
57140            req15_0
57141            ns16_0)
57142     (begin
57143       (begin
57144         (if (1/namespace? ns16_0)
57145           (void)
57146           (raise-argument-error who14_0 "namespace?" ns16_0))
57147         (let ((ctx-stx_0
57148                (add-scopes
57149                 empty-syntax
57150                 (let ((v_0 (namespace-get-root-expand-ctx ns16_0)))
57151                   (begin-unsafe
57152                    (root-expand-context/inner-module-scopes
57153                     (root-expand-context/outer-inner v_0)))))))
57154           (if (let ((or-part_0 (1/module-path-index? req15_0)))
57155                 (if or-part_0 or-part_0 (1/module-path? req15_0)))
57156             (let ((temp46_0
57157                    (if (1/module-path-index? req15_0)
57158                      req15_0
57159                      (1/module-path-index-join req15_0 #f))))
57160               (let ((temp53_0 (namespace-phase ns16_0)))
57161                 (let ((temp54_0 (namespace-phase ns16_0)))
57162                   (let ((temp53_1 temp53_0) (temp46_1 temp46_0))
57163                     (perform-require!.1
57164                      #f
57165                      #t
57166                      #f
57167                      copy-variable-as-constant?7_0
57168                      copy-variable-phase-level6_0
57169                      #f
57170                      'all
57171                      #t
57172                      temp53_1
57173                      #f
57174                      temp54_0
57175                      run?4_0
57176                      skip-variable-phase-level8_0
57177                      unsafe-undefined
57178                      visit?5_0
57179                      who14_0
57180                      temp46_1
57181                      #f
57182                      #f
57183                      ctx-stx_0
57184                      ns16_0)))))
57185             (let ((temp61_0 (list (1/datum->syntax ctx-stx_0 req15_0))))
57186               (let ((temp64_0 (namespace-phase ns16_0)))
57187                 (let ((temp65_0 (make-requires+provides.1 #f #f)))
57188                   (let ((temp64_1 temp64_0) (temp61_1 temp61_0))
57189                     (parse-and-perform-requires!.1
57190                      copy-variable-as-constant?7_0
57191                      copy-variable-phase-level6_0
57192                      hash2610
57193                      #f
57194                      unsafe-undefined
57195                      run?4_0
57196                      #f
57197                      skip-variable-phase-level8_0
57198                      visit?5_0
57199                      who14_0
57200                      temp61_1
57201                      #f
57202                      ns16_0
57203                      temp64_1
57204                      temp65_0))))))))))))
57205(define 1/namespace-require
57206  (let ((namespace-require_0
57207         (|#%name|
57208          namespace-require
57209          (lambda (req19_0 ns18_0)
57210            (begin
57211              (let ((ns_0
57212                     (if (eq? ns18_0 unsafe-undefined)
57213                       (1/current-namespace)
57214                       ns18_0)))
57215                (do-namespace-require.1
57216                 #f
57217                 #f
57218                 #t
57219                 #f
57220                 #f
57221                 'namespace-require
57222                 req19_0
57223                 ns_0)))))))
57224    (|#%name|
57225     namespace-require
57226     (case-lambda
57227      ((req_0) (begin (namespace-require_0 req_0 unsafe-undefined)))
57228      ((req_0 ns18_0) (namespace-require_0 req_0 ns18_0))))))
57229(define 1/namespace-require/expansion-time
57230  (let ((namespace-require/expansion-time_0
57231         (|#%name|
57232          namespace-require/expansion-time
57233          (lambda (req21_0 ns20_0)
57234            (begin
57235              (let ((ns_0
57236                     (if (eq? ns20_0 unsafe-undefined)
57237                       (1/current-namespace)
57238                       ns20_0)))
57239                (do-namespace-require.1
57240                 #f
57241                 #f
57242                 #f
57243                 #f
57244                 #t
57245                 'namespace-require/expansion-time
57246                 req21_0
57247                 ns_0)))))))
57248    (|#%name|
57249     namespace-require/expansion-time
57250     (case-lambda
57251      ((req_0)
57252       (begin (namespace-require/expansion-time_0 req_0 unsafe-undefined)))
57253      ((req_0 ns20_0) (namespace-require/expansion-time_0 req_0 ns20_0))))))
57254(define 1/namespace-require/constant
57255  (let ((namespace-require/constant_0
57256         (|#%name|
57257          namespace-require/constant
57258          (lambda (req23_0 ns22_0)
57259            (begin
57260              (let ((ns_0
57261                     (if (eq? ns22_0 unsafe-undefined)
57262                       (1/current-namespace)
57263                       ns22_0)))
57264                (do-namespace-require.1
57265                 #t
57266                 0
57267                 #t
57268                 #f
57269                 #f
57270                 'namespace-require/constant
57271                 req23_0
57272                 ns_0)))))))
57273    (|#%name|
57274     namespace-require/constant
57275     (case-lambda
57276      ((req_0) (begin (namespace-require/constant_0 req_0 unsafe-undefined)))
57277      ((req_0 ns22_0) (namespace-require/constant_0 req_0 ns22_0))))))
57278(define 1/namespace-require/copy
57279  (let ((namespace-require/copy_0
57280         (|#%name|
57281          namespace-require/copy
57282          (lambda (req25_0 ns24_0)
57283            (begin
57284              (let ((ns_0
57285                     (if (eq? ns24_0 unsafe-undefined)
57286                       (1/current-namespace)
57287                       ns24_0)))
57288                (do-namespace-require.1
57289                 #f
57290                 0
57291                 #t
57292                 0
57293                 #f
57294                 'namespace-require/copy
57295                 req25_0
57296                 ns_0)))))))
57297    (|#%name|
57298     namespace-require/copy
57299     (case-lambda
57300      ((req_0) (begin (namespace-require/copy_0 req_0 unsafe-undefined)))
57301      ((req_0 ns24_0) (namespace-require/copy_0 req_0 ns24_0))))))
57302(define 1/namespace-variable-value
57303  (let ((namespace-variable-value_0
57304         (|#%name|
57305          namespace-variable-value
57306          (lambda (sym29_0 use-mapping?26_0 failure-thunk27_0 ns28_0)
57307            (begin
57308              (let ((ns_0
57309                     (if (eq? ns28_0 unsafe-undefined)
57310                       (1/current-namespace)
57311                       ns28_0)))
57312                (begin
57313                  (if (symbol? sym29_0)
57314                    (void)
57315                    (raise-argument-error
57316                     'namespace-variable-value
57317                     "symbol?"
57318                     sym29_0))
57319                  (if (let ((or-part_0 (not failure-thunk27_0)))
57320                        (if or-part_0
57321                          or-part_0
57322                          (if (procedure? failure-thunk27_0)
57323                            (procedure-arity-includes? failure-thunk27_0 0)
57324                            #f)))
57325                    (void)
57326                    (raise-argument-error
57327                     'namespace-variable-value
57328                     "(or/c #f (procedure-arity-includes/c 0))"
57329                     failure-thunk27_0))
57330                  (if (1/namespace? ns_0)
57331                    (void)
57332                    (raise-argument-error
57333                     'namespace-variable-value
57334                     "namespace?"
57335                     ns_0))
57336                  (|#%app|
57337                   (call-with-escape-continuation
57338                    (lambda (escape_0)
57339                      (call-with-values
57340                       (lambda ()
57341                         (if use-mapping?26_0
57342                           (let ((id_0 (1/datum->syntax #f sym29_0)))
57343                             (let ((b_0
57344                                    (resolve+shift/extra-inspector
57345                                     (1/namespace-syntax-introduce id_0 ns_0)
57346                                     (namespace-phase ns_0)
57347                                     ns_0)))
57348                               (begin
57349                                 (if b_0
57350                                   (namespace-visit-available-modules! ns_0)
57351                                   (void))
57352                                 (call-with-values
57353                                  (lambda ()
57354                                    (if b_0
57355                                      (let ((temp98_0 (namespace-phase ns_0)))
57356                                        (binding-lookup.1
57357                                         #f
57358                                         #f
57359                                         b_0
57360                                         empty-env
57361                                         null
57362                                         ns_0
57363                                         temp98_0
57364                                         id_0))
57365                                      (values variable #f #f #f)))
57366                                  (case-lambda
57367                                   ((v_0
57368                                     primitive?_0
57369                                     extra-inspector_0
57370                                     protected?_0)
57371                                    (begin
57372                                      (if (variable? v_0)
57373                                        (void)
57374                                        (|#%app|
57375                                         escape_0
57376                                         (if failure-thunk27_0
57377                                           failure-thunk27_0
57378                                           (lambda ()
57379                                             (raise
57380                                              (let ((app_0
57381                                                     (format
57382                                                      (string-append
57383                                                       "namespace-variable-value: bound to syntax\n"
57384                                                       "  in: ~s")
57385                                                      sym29_0)))
57386                                                (|#%app|
57387                                                 make-exn:fail:syntax$1
57388                                                 app_0
57389                                                 (current-continuation-marks)
57390                                                 null)))))))
57391                                      (if (module-binding? b_0)
57392                                        (let ((app_0
57393                                               (if (let ((mpi_0
57394                                                          (module-binding-module
57395                                                           b_0)))
57396                                                     (begin-unsafe
57397                                                      (eq?
57398                                                       top-level-module-path-index
57399                                                       mpi_0)))
57400                                                 ns_0
57401                                                 (module-instance-namespace
57402                                                  (binding->module-instance
57403                                                   b_0
57404                                                   ns_0
57405                                                   (namespace-phase ns_0)
57406                                                   id_0)))))
57407                                          (let ((app_1
57408                                                 (module-binding-phase b_0)))
57409                                            (values
57410                                             app_0
57411                                             app_1
57412                                             (module-binding-sym b_0))))
57413                                        (values
57414                                         ns_0
57415                                         (namespace-phase ns_0)
57416                                         sym29_0))))
57417                                   (args
57418                                    (raise-binding-result-arity-error
57419                                     4
57420                                     args)))))))
57421                           (values ns_0 (namespace-phase ns_0) sym29_0)))
57422                       (case-lambda
57423                        ((var-ns_0 var-phase-level_0 var-sym_0)
57424                         (let ((val_0
57425                                (namespace-get-variable
57426                                 var-ns_0
57427                                 var-phase-level_0
57428                                 var-sym_0
57429                                 (lambda ()
57430                                   (|#%app|
57431                                    escape_0
57432                                    (if failure-thunk27_0
57433                                      failure-thunk27_0
57434                                      (raise
57435                                       (let ((app_0
57436                                              (format
57437                                               (string-append
57438                                                "namespace-variable-value: given name is not defined\n"
57439                                                "  name: ~s")
57440                                               sym29_0)))
57441                                         (|#%app|
57442                                          exn:fail:contract:variable
57443                                          app_0
57444                                          (current-continuation-marks)
57445                                          sym29_0)))))))))
57446                           (lambda () val_0)))
57447                        (args
57448                         (raise-binding-result-arity-error 3 args))))))))))))))
57449    (|#%name|
57450     namespace-variable-value
57451     (case-lambda
57452      ((sym_0)
57453       (begin (namespace-variable-value_0 sym_0 #t #f unsafe-undefined)))
57454      ((sym_0 use-mapping?_0 failure-thunk_0 ns28_0)
57455       (namespace-variable-value_0
57456        sym_0
57457        use-mapping?_0
57458        failure-thunk_0
57459        ns28_0))
57460      ((sym_0 use-mapping?_0 failure-thunk27_0)
57461       (namespace-variable-value_0
57462        sym_0
57463        use-mapping?_0
57464        failure-thunk27_0
57465        unsafe-undefined))
57466      ((sym_0 use-mapping?26_0)
57467       (namespace-variable-value_0
57468        sym_0
57469        use-mapping?26_0
57470        #f
57471        unsafe-undefined))))))
57472(define 1/namespace-set-variable-value!
57473  (let ((namespace-set-variable-value!_0
57474         (|#%name|
57475          namespace-set-variable-value!
57476          (lambda (sym33_0 val34_0 map?30_0 ns31_0 as-constant?32_0)
57477            (begin
57478              (let ((ns_0
57479                     (if (eq? ns31_0 unsafe-undefined)
57480                       (1/current-namespace)
57481                       ns31_0)))
57482                (begin
57483                  (if (symbol? sym33_0)
57484                    (void)
57485                    (raise-argument-error
57486                     'namespace-set-variable-value!
57487                     "symbol?"
57488                     sym33_0))
57489                  (if (1/namespace? ns_0)
57490                    (void)
57491                    (raise-argument-error
57492                     'namespace-set-variable-value!
57493                     "namespace?"
57494                     ns_0))
57495                  (namespace-set-variable!
57496                   ns_0
57497                   (namespace-phase ns_0)
57498                   sym33_0
57499                   val34_0
57500                   as-constant?32_0)
57501                  (if map?30_0
57502                    (begin
57503                      (namespace-unset-transformer!
57504                       ns_0
57505                       (namespace-phase ns_0)
57506                       sym33_0)
57507                      (let ((id_0 (1/datum->syntax #f sym33_0)))
57508                        (let ((temp101_0
57509                               (1/namespace-syntax-introduce id_0 ns_0)))
57510                          (let ((temp102_0
57511                                 (let ((temp104_0 (namespace-mpi ns_0)))
57512                                   (let ((temp105_0 (namespace-phase ns_0)))
57513                                     (make-module-binding.1
57514                                      #f
57515                                      null
57516                                      #f
57517                                      #f
57518                                      unsafe-undefined
57519                                      unsafe-undefined
57520                                      0
57521                                      unsafe-undefined
57522                                      temp104_0
57523                                      temp105_0
57524                                      sym33_0)))))
57525                            (let ((temp103_0 (namespace-phase ns_0)))
57526                              (let ((temp102_1 temp102_0)
57527                                    (temp101_1 temp101_0))
57528                                (add-binding!.1
57529                                 #f
57530                                 #f
57531                                 temp101_1
57532                                 temp102_1
57533                                 temp103_0)))))))
57534                    (void)))))))))
57535    (|#%name|
57536     namespace-set-variable-value!
57537     (case-lambda
57538      ((sym_0 val_0)
57539       (begin
57540         (namespace-set-variable-value!_0 sym_0 val_0 #f unsafe-undefined #f)))
57541      ((sym_0 val_0 map?_0 ns_0 as-constant?32_0)
57542       (namespace-set-variable-value!_0
57543        sym_0
57544        val_0
57545        map?_0
57546        ns_0
57547        as-constant?32_0))
57548      ((sym_0 val_0 map?_0 ns31_0)
57549       (namespace-set-variable-value!_0 sym_0 val_0 map?_0 ns31_0 #f))
57550      ((sym_0 val_0 map?30_0)
57551       (namespace-set-variable-value!_0
57552        sym_0
57553        val_0
57554        map?30_0
57555        unsafe-undefined
57556        #f))))))
57557(define 1/namespace-undefine-variable!
57558  (let ((namespace-undefine-variable!_0
57559         (|#%name|
57560          namespace-undefine-variable!
57561          (lambda (sym36_0 ns35_0)
57562            (begin
57563              (let ((ns_0
57564                     (if (eq? ns35_0 unsafe-undefined)
57565                       (1/current-namespace)
57566                       ns35_0)))
57567                (begin
57568                  (if (symbol? sym36_0)
57569                    (void)
57570                    (raise-argument-error
57571                     'namespace-undefine-variable!
57572                     "symbol?"
57573                     sym36_0))
57574                  (if (1/namespace? ns_0)
57575                    (void)
57576                    (raise-argument-error
57577                     'namespace-undefine-variable!
57578                     "namespace?"
57579                     ns_0))
57580                  (namespace-unset-variable!
57581                   ns_0
57582                   (namespace-phase ns_0)
57583                   sym36_0))))))))
57584    (|#%name|
57585     namespace-undefine-variable!
57586     (case-lambda
57587      ((sym_0) (begin (namespace-undefine-variable!_0 sym_0 unsafe-undefined)))
57588      ((sym_0 ns35_0) (namespace-undefine-variable!_0 sym_0 ns35_0))))))
57589(define 1/namespace-mapped-symbols
57590  (let ((namespace-mapped-symbols_0
57591         (|#%name|
57592          namespace-mapped-symbols
57593          (lambda (ns37_0)
57594            (begin
57595              (let ((ns_0
57596                     (if (eq? ns37_0 unsafe-undefined)
57597                       (1/current-namespace)
57598                       ns37_0)))
57599                (begin
57600                  (if (1/namespace? ns_0)
57601                    (void)
57602                    (raise-argument-error
57603                     'namespace-mapped-symbols
57604                     "namespace?"
57605                     ns_0))
57606                  (set->list
57607                   (let ((app_0
57608                          (syntax-mapped-names
57609                           (let ((v_0 (namespace-get-root-expand-ctx ns_0)))
57610                             (begin-unsafe
57611                              (root-expand-context/inner-all-scopes-stx
57612                               (root-expand-context/outer-inner v_0))))
57613                           (namespace-phase ns_0))))
57614                     (set-union
57615                      app_0
57616                      (list->set
57617                       (instance-variable-names
57618                        (begin-unsafe
57619                         (definitions-variables
57620                          (namespace->definitions ns_0 0)))))))))))))))
57621    (|#%name|
57622     namespace-mapped-symbols
57623     (case-lambda
57624      (() (begin (namespace-mapped-symbols_0 unsafe-undefined)))
57625      ((ns37_0) (namespace-mapped-symbols_0 ns37_0))))))
57626(define 1/namespace-base-phase
57627  (let ((namespace-base-phase_0
57628         (|#%name|
57629          namespace-base-phase
57630          (lambda (ns38_0)
57631            (begin
57632              (let ((ns_0
57633                     (if (eq? ns38_0 unsafe-undefined)
57634                       (1/current-namespace)
57635                       ns38_0)))
57636                (begin
57637                  (if (1/namespace? ns_0)
57638                    (void)
57639                    (raise-argument-error
57640                     'namespace-base-phase
57641                     "namespace?"
57642                     ns_0))
57643                  (namespace-phase ns_0))))))))
57644    (|#%name|
57645     namespace-base-phase
57646     (case-lambda
57647      (() (begin (namespace-base-phase_0 unsafe-undefined)))
57648      ((ns38_0) (namespace-base-phase_0 ns38_0))))))
57649(define 1/namespace-call-with-registry-lock
57650  (|#%name|
57651   namespace-call-with-registry-lock
57652   (lambda (ns_0 thunk_0)
57653     (begin
57654       (begin
57655         (if (1/namespace? ns_0)
57656           (void)
57657           (raise-argument-error
57658            'namespace-call-with-registry-lock
57659            "namespace?"
57660            ns_0))
57661         (if (if (procedure? thunk_0) (procedure-arity-includes? thunk_0 0) #f)
57662           (void)
57663           (raise-argument-error
57664            'namespace-call-with-registry-lock
57665            "(procedure-arity-includes/c 0)"
57666            thunk_0))
57667         (registry-call-with-lock
57668          (namespace-module-registry$1 ns_0)
57669          thunk_0))))))
57670(define 1/eval
57671  (let ((eval_0
57672         (|#%name|
57673          eval
57674          (lambda (s3_0 ns1_0 compile2_0)
57675            (begin
57676              (let ((ns_0
57677                     (if (eq? ns1_0 unsafe-undefined)
57678                       (1/current-namespace)
57679                       ns1_0)))
57680                (let ((compile_0
57681                       (if (eq? compile2_0 unsafe-undefined)
57682                         (|#%name|
57683                          compile
57684                          (lambda (s_0 ns_1) (begin (1/compile s_0 ns_1 #f))))
57685                         compile2_0)))
57686                  (if (let ((or-part_0 (compiled-in-memory? s3_0)))
57687                        (if or-part_0
57688                          or-part_0
57689                          (let ((or-part_1 (linklet-directory?$1 s3_0)))
57690                            (if or-part_1
57691                              or-part_1
57692                              (1/linklet-bundle? s3_0)))))
57693                    (eval-compiled s3_0 ns_0)
57694                    (if (if (syntax?$1 s3_0)
57695                          (let ((or-part_0
57696                                 (compiled-in-memory? (1/syntax-e s3_0))))
57697                            (if or-part_0
57698                              or-part_0
57699                              (let ((or-part_1
57700                                     (linklet-directory?$1 (1/syntax-e s3_0))))
57701                                (if or-part_1
57702                                  or-part_1
57703                                  (1/linklet-bundle? (1/syntax-e s3_0))))))
57704                          #f)
57705                      (eval-compiled (1/syntax->datum s3_0) ns_0)
57706                      (let ((temp65_0
57707                             (lambda (s_0 ns_1 tail?_0)
57708                               (eval-compiled
57709                                (|#%app| compile_0 s_0 ns_1)
57710                                ns_1
57711                                tail?_0))))
57712                        (per-top-level.1
57713                         #f
57714                         #f
57715                         #f
57716                         #t
57717                         #f
57718                         temp65_0
57719                         #f
57720                         s3_0
57721                         ns_0)))))))))))
57722    (|#%name|
57723     eval
57724     (case-lambda
57725      ((s_0) (begin (eval_0 s_0 unsafe-undefined unsafe-undefined)))
57726      ((s_0 ns_0 compile2_0) (eval_0 s_0 ns_0 compile2_0))
57727      ((s_0 ns1_0) (eval_0 s_0 ns1_0 unsafe-undefined))))))
57728(define eval-compiled
57729  (let ((eval-compiled_0
57730         (|#%name|
57731          eval-compiled
57732          (lambda (c5_0 ns6_0 as-tail?4_0)
57733            (begin
57734              (if (1/compiled-module-expression? c5_0)
57735                (eval-module.1 ns6_0 #f #t c5_0)
57736                (eval-top c5_0 ns6_0 eval-compiled as-tail?4_0)))))))
57737    (case-lambda
57738     ((c_0 ns_0) (eval-compiled_0 c_0 ns_0 #t))
57739     ((c_0 ns_0 as-tail?4_0) (eval-compiled_0 c_0 ns_0 as-tail?4_0)))))
57740(define 1/compile
57741  (let ((compile_0
57742         (|#%name|
57743          compile
57744          (lambda (s10_0 ns7_0 serializable?8_0 expand9_0)
57745            (begin
57746              (let ((ns_0
57747                     (if (eq? ns7_0 unsafe-undefined)
57748                       (1/current-namespace)
57749                       ns7_0)))
57750                (let ((expand_0
57751                       (if (eq? expand9_0 unsafe-undefined)
57752                         expand$1
57753                         expand9_0)))
57754                  (let ((to-correlated-linklet?_0
57755                         (if serializable?8_0
57756                           (not (current-compile-target-machine))
57757                           #f)))
57758                    (let ((cs_0
57759                           (if (1/compiled-expression? s10_0)
57760                             (list s10_0)
57761                             (if (if (syntax?$1 s10_0)
57762                                   (1/compiled-expression? (1/syntax-e s10_0))
57763                                   #f)
57764                               (list (1/syntax-e s10_0))
57765                               (let ((temp71_0
57766                                      (lambda (s_0 ns_1 as-tail?_0)
57767                                        (list
57768                                         (compile-single.1
57769                                          serializable?8_0
57770                                          to-correlated-linklet?_0
57771                                          s_0
57772                                          ns_1
57773                                          expand_0)))))
57774                                 (per-top-level.1
57775                                  append
57776                                  #f
57777                                  #f
57778                                  #t
57779                                  #f
57780                                  temp71_0
57781                                  #f
57782                                  s10_0
57783                                  ns_0))))))
57784                      (if (if (= 1 (length cs_0))
57785                            (not (compiled-multiple-top? (car cs_0)))
57786                            #f)
57787                        (car cs_0)
57788                        (compiled-tops->compiled-top.1
57789                         serializable?8_0
57790                         ns_0
57791                         to-correlated-linklet?_0
57792                         cs_0)))))))))))
57793    (|#%name|
57794     compile
57795     (case-lambda
57796      ((s_0) (begin (compile_0 s_0 unsafe-undefined #t unsafe-undefined)))
57797      ((s_0 ns_0 serializable?_0 expand9_0)
57798       (compile_0 s_0 ns_0 serializable?_0 expand9_0))
57799      ((s_0 ns_0 serializable?8_0)
57800       (compile_0 s_0 ns_0 serializable?8_0 unsafe-undefined))
57801      ((s_0 ns7_0) (compile_0 s_0 ns7_0 #t unsafe-undefined))))))
57802(define finish_2305
57803  (make-struct-type-install-properties
57804   '(lifted-parsed-begin)
57805   2
57806   0
57807   #f
57808   null
57809   (current-inspector)
57810   #f
57811   '(0 1)
57812   #f
57813   'lifted-parsed-begin))
57814(define struct:lifted-parsed-begin
57815  (make-record-type-descriptor*
57816   'lifted-parsed-begin
57817   #f
57818   (|#%nongenerative-uid| lifted-parsed-begin)
57819   #f
57820   #f
57821   2
57822   0))
57823(define effect_2583 (finish_2305 struct:lifted-parsed-begin))
57824(define lifted-parsed-begin11.1
57825  (|#%name|
57826   lifted-parsed-begin
57827   (record-constructor
57828    (make-record-constructor-descriptor struct:lifted-parsed-begin #f #f))))
57829(define lifted-parsed-begin?_2302
57830  (|#%name|
57831   lifted-parsed-begin?
57832   (record-predicate struct:lifted-parsed-begin)))
57833(define lifted-parsed-begin?
57834  (|#%name|
57835   lifted-parsed-begin?
57836   (lambda (v)
57837     (if (lifted-parsed-begin?_2302 v)
57838       #t
57839       ($value
57840        (if (impersonator? v)
57841          (lifted-parsed-begin?_2302 (impersonator-val v))
57842          #f))))))
57843(define lifted-parsed-begin-seq_2038
57844  (|#%name|
57845   lifted-parsed-begin-seq
57846   (record-accessor struct:lifted-parsed-begin 0)))
57847(define lifted-parsed-begin-seq
57848  (|#%name|
57849   lifted-parsed-begin-seq
57850   (lambda (s)
57851     (if (lifted-parsed-begin?_2302 s)
57852       (lifted-parsed-begin-seq_2038 s)
57853       ($value
57854        (impersonate-ref
57855         lifted-parsed-begin-seq_2038
57856         struct:lifted-parsed-begin
57857         0
57858         s
57859         'lifted-parsed-begin
57860         'seq))))))
57861(define lifted-parsed-begin-last_2385
57862  (|#%name|
57863   lifted-parsed-begin-last
57864   (record-accessor struct:lifted-parsed-begin 1)))
57865(define lifted-parsed-begin-last
57866  (|#%name|
57867   lifted-parsed-begin-last
57868   (lambda (s)
57869     (if (lifted-parsed-begin?_2302 s)
57870       (lifted-parsed-begin-last_2385 s)
57871       ($value
57872        (impersonate-ref
57873         lifted-parsed-begin-last_2385
57874         struct:lifted-parsed-begin
57875         1
57876         s
57877         'lifted-parsed-begin
57878         'last))))))
57879(define compile-single.1
57880  (|#%name|
57881   compile-single
57882   (lambda (serializable?12_0
57883            to-correlated-linklet?13_0
57884            s16_0
57885            ns17_0
57886            expand18_0)
57887     (begin
57888       (let ((exp-s_0
57889              (|#%app|
57890               expand18_0
57891               s16_0
57892               ns17_0
57893               #f
57894               #t
57895               serializable?12_0
57896               to-correlated-linklet?13_0)))
57897         (letrec*
57898          ((loop_0
57899            (|#%name|
57900             loop
57901             (lambda (exp-s_1)
57902               (begin
57903                 (if (parsed-module? exp-s_1)
57904                   (let ((temp85_0
57905                          (make-compile-context.1
57906                           #f
57907                           unsafe-undefined
57908                           #f
57909                           ns17_0
57910                           unsafe-undefined
57911                           unsafe-undefined)))
57912                     (compile-module.1
57913                      #f
57914                      unsafe-undefined
57915                      #t
57916                      serializable?12_0
57917                      to-correlated-linklet?13_0
57918                      exp-s_1
57919                      temp85_0))
57920                   (if (lifted-parsed-begin? exp-s_1)
57921                     (let ((temp90_0
57922                            (reverse$1
57923                             (let ((lst_0
57924                                    (let ((app_0
57925                                           (lifted-parsed-begin-seq exp-s_1)))
57926                                      (append
57927                                       app_0
57928                                       (list
57929                                        (lifted-parsed-begin-last exp-s_1))))))
57930                               (begin
57931                                 (letrec*
57932                                  ((for-loop_0
57933                                    (|#%name|
57934                                     for-loop
57935                                     (lambda (fold-var_0 lst_1)
57936                                       (begin
57937                                         (if (pair? lst_1)
57938                                           (let ((e_0 (unsafe-car lst_1)))
57939                                             (let ((rest_0 (unsafe-cdr lst_1)))
57940                                               (let ((fold-var_1
57941                                                      (let ((fold-var_1
57942                                                             (cons
57943                                                              (loop_0 e_0)
57944                                                              fold-var_0)))
57945                                                        (values fold-var_1))))
57946                                                 (for-loop_0
57947                                                  fold-var_1
57948                                                  rest_0))))
57949                                           fold-var_0))))))
57950                                  (for-loop_0 null lst_0)))))))
57951                       (compiled-tops->compiled-top.1
57952                        #f
57953                        #f
57954                        to-correlated-linklet?13_0
57955                        temp90_0))
57956                     (let ((temp92_0
57957                            (make-compile-context.1
57958                             #f
57959                             unsafe-undefined
57960                             #f
57961                             ns17_0
57962                             unsafe-undefined
57963                             unsafe-undefined)))
57964                       (compile-top.1
57965                        serializable?12_0
57966                        #f
57967                        to-correlated-linklet?13_0
57968                        exp-s_1
57969                        temp92_0)))))))))
57970          (loop_0 exp-s_0)))))))
57971(define expand$1
57972  (let ((expand_0
57973         (|#%name|
57974          expand
57975          (lambda (s25_0
57976                   ns20_0
57977                   observable?21_0
57978                   to-parsed?22_0
57979                   serializable?23_0
57980                   to-correlated-linklet?24_0)
57981            (begin
57982              (let ((ns_0
57983                     (if (eq? ns20_0 unsafe-undefined)
57984                       (1/current-namespace)
57985                       ns20_0)))
57986                (let ((observer_0
57987                       (if observable?21_0 (current-expand-observe) #f)))
57988                  (begin
57989                    (if observer_0
57990                      (call-expand-observe observer_0 'start-top)
57991                      (void))
57992                    (with-continuation-mark*
57993                     authentic
57994                     parameterization-key
57995                     (extend-parameterization
57996                      (continuation-mark-set-first #f parameterization-key)
57997                      current-expand-observe
57998                      #f)
57999                     (let ((temp98_0
58000                            (lambda (s_0 ns_1 as-tail?_0)
58001                              (expand-single.1
58002                               serializable?23_0
58003                               to-correlated-linklet?24_0
58004                               s_0
58005                               ns_1
58006                               observer_0
58007                               to-parsed?22_0))))
58008                       (let ((re-pair100_0 re-pair))
58009                         (per-top-level.1
58010                          cons
58011                          #f
58012                          observer_0
58013                          #t
58014                          #f
58015                          temp98_0
58016                          re-pair100_0
58017                          s25_0
58018                          ns_0))))))))))))
58019    (|#%name|
58020     expand
58021     (case-lambda
58022      ((s_0) (begin (expand_0 s_0 unsafe-undefined #f #f #f #f)))
58023      ((s_0
58024        ns_0
58025        observable?_0
58026        to-parsed?_0
58027        serializable?_0
58028        to-correlated-linklet?24_0)
58029       (expand_0
58030        s_0
58031        ns_0
58032        observable?_0
58033        to-parsed?_0
58034        serializable?_0
58035        to-correlated-linklet?24_0))
58036      ((s_0 ns_0 observable?_0 to-parsed?_0 serializable?23_0)
58037       (expand_0 s_0 ns_0 observable?_0 to-parsed?_0 serializable?23_0 #f))
58038      ((s_0 ns_0 observable?_0 to-parsed?22_0)
58039       (expand_0 s_0 ns_0 observable?_0 to-parsed?22_0 #f #f))
58040      ((s_0 ns_0 observable?21_0) (expand_0 s_0 ns_0 observable?21_0 #f #f #f))
58041      ((s_0 ns20_0) (expand_0 s_0 ns20_0 #f #f #f #f))))))
58042(define expand-single.1
58043  (|#%name|
58044   expand-single
58045   (lambda (serializable?26_0
58046            to-correlated-linklet?27_0
58047            s30_0
58048            ns31_0
58049            observer32_0
58050            to-parsed?33_0)
58051     (begin
58052       (let ((rebuild-s_0 (keep-properties-only s30_0)))
58053         (let ((ctx_0
58054                (make-expand-context.1
58055                 serializable?26_0
58056                 observer32_0
58057                 #f
58058                 to-correlated-linklet?27_0
58059                 to-parsed?33_0
58060                 ns31_0)))
58061           (call-with-values
58062            (lambda () (expand-capturing-lifts s30_0 ctx_0))
58063            (case-lambda
58064             ((require-lifts_0 lifts_0 exp-s_0)
58065              (if (if (null? require-lifts_0) (null? lifts_0) #f)
58066                exp-s_0
58067                (if to-parsed?33_0
58068                  (let ((temp117_0
58069                         (lambda (form_0)
58070                           (expand-single.1
58071                            serializable?26_0
58072                            #f
58073                            form_0
58074                            ns31_0
58075                            observer32_0
58076                            to-parsed?33_0))))
58077                    (wrap-lifts-as-lifted-parsed-begin.1
58078                     temp117_0
58079                     require-lifts_0
58080                     lifts_0
58081                     exp-s_0
58082                     rebuild-s_0))
58083                  (let ((new-s_0
58084                         (let ((temp128_0 (append require-lifts_0 lifts_0)))
58085                           (let ((temp130_0 (namespace-phase ns31_0)))
58086                             (let ((temp128_1 temp128_0))
58087                               (wrap-lifts-as-begin.1
58088                                unsafe-undefined
58089                                unsafe-undefined
58090                                temp128_1
58091                                exp-s_0
58092                                temp130_0))))))
58093                    (begin
58094                      (let ((obs_0
58095                             (begin-unsafe
58096                              (expand-context/inner-observer
58097                               (root-expand-context/outer-inner ctx_0)))))
58098                        (if obs_0
58099                          (call-expand-observe obs_0 'lift-loop new-s_0)
58100                          (void)))
58101                      (expand-single.1
58102                       serializable?26_0
58103                       #f
58104                       new-s_0
58105                       ns31_0
58106                       observer32_0
58107                       to-parsed?33_0))))))
58108             (args (raise-binding-result-arity-error 3 args))))))))))
58109(define expand-once$1
58110  (let ((expand-once_0
58111         (|#%name|
58112          expand-once
58113          (lambda (s36_0 ns35_0)
58114            (begin
58115              (let ((ns_0
58116                     (if (eq? ns35_0 unsafe-undefined)
58117                       (1/current-namespace)
58118                       ns35_0)))
58119                (let ((temp133_0
58120                       (lambda (s_0 ns_1 as-tail?_0)
58121                         (expand-single-once s_0 ns_1))))
58122                  (let ((re-pair135_0 re-pair))
58123                    (per-top-level.1
58124                     cons
58125                     #t
58126                     #f
58127                     #t
58128                     #f
58129                     temp133_0
58130                     re-pair135_0
58131                     s36_0
58132                     ns_0)))))))))
58133    (|#%name|
58134     expand-once
58135     (case-lambda
58136      ((s_0) (begin (expand-once_0 s_0 unsafe-undefined)))
58137      ((s_0 ns35_0) (expand-once_0 s_0 ns35_0))))))
58138(define expand-single-once
58139  (lambda (s_0 ns_0)
58140    (call-with-values
58141     (lambda ()
58142       (expand-capturing-lifts
58143        s_0
58144        (let ((v_0 (make-expand-context.1 #f #f #f #f #f ns_0)))
58145          (if (expand-context/outer? v_0)
58146            (let ((the-struct_0 (root-expand-context/outer-inner v_0)))
58147              (let ((inner139_0
58148                     (if (expand-context/inner? the-struct_0)
58149                       (expand-context/inner2.1
58150                        (root-expand-context/inner-self-mpi the-struct_0)
58151                        (root-expand-context/inner-module-scopes the-struct_0)
58152                        (root-expand-context/inner-top-level-bind-scope
58153                         the-struct_0)
58154                        (root-expand-context/inner-all-scopes-stx the-struct_0)
58155                        (root-expand-context/inner-defined-syms the-struct_0)
58156                        (root-expand-context/inner-counter the-struct_0)
58157                        (root-expand-context/inner-lift-key the-struct_0)
58158                        (expand-context/inner-to-parsed? the-struct_0)
58159                        (expand-context/inner-phase the-struct_0)
58160                        (expand-context/inner-namespace the-struct_0)
58161                        #t
58162                        (expand-context/inner-module-begin-k the-struct_0)
58163                        (expand-context/inner-allow-unbound? the-struct_0)
58164                        (expand-context/inner-in-local-expand? the-struct_0)
58165                        (|expand-context/inner-keep-#%expression?|
58166                         the-struct_0)
58167                        (expand-context/inner-stops the-struct_0)
58168                        (expand-context/inner-declared-submodule-names
58169                         the-struct_0)
58170                        (expand-context/inner-lifts the-struct_0)
58171                        (expand-context/inner-lift-envs the-struct_0)
58172                        (expand-context/inner-module-lifts the-struct_0)
58173                        (expand-context/inner-require-lifts the-struct_0)
58174                        (expand-context/inner-to-module-lifts the-struct_0)
58175                        (expand-context/inner-requires+provides the-struct_0)
58176                        (expand-context/inner-observer the-struct_0)
58177                        (expand-context/inner-for-serializable? the-struct_0)
58178                        (expand-context/inner-to-correlated-linklet?
58179                         the-struct_0)
58180                        (expand-context/inner-normalize-locals? the-struct_0)
58181                        (expand-context/inner-parsing-expanded? the-struct_0)
58182                        (expand-context/inner-skip-visit-available?
58183                         the-struct_0))
58184                       (raise-argument-error
58185                        'struct-copy
58186                        "expand-context/inner?"
58187                        the-struct_0))))
58188                (expand-context/outer1.1
58189                 inner139_0
58190                 (root-expand-context/outer-post-expansion v_0)
58191                 (root-expand-context/outer-use-site-scopes v_0)
58192                 (root-expand-context/outer-frame-id v_0)
58193                 (expand-context/outer-context v_0)
58194                 (expand-context/outer-env v_0)
58195                 (expand-context/outer-scopes v_0)
58196                 (expand-context/outer-def-ctx-scopes v_0)
58197                 (expand-context/outer-binding-layer v_0)
58198                 (expand-context/outer-reference-records v_0)
58199                 (expand-context/outer-only-immediate? v_0)
58200                 (expand-context/outer-need-eventually-defined v_0)
58201                 (expand-context/outer-current-introduction-scopes v_0)
58202                 (expand-context/outer-current-use-scopes v_0)
58203                 (expand-context/outer-name v_0))))
58204            (raise-argument-error 'struct-copy "expand-context/outer?" v_0)))))
58205     (case-lambda
58206      ((require-lifts_0 lifts_0 exp-s_0)
58207       (if (if (null? require-lifts_0) (null? lifts_0) #f)
58208         exp-s_0
58209         (let ((temp141_0 (append require-lifts_0 lifts_0)))
58210           (let ((temp143_0 (namespace-phase ns_0)))
58211             (let ((temp141_1 temp141_0))
58212               (wrap-lifts-as-begin.1
58213                unsafe-undefined
58214                unsafe-undefined
58215                temp141_1
58216                exp-s_0
58217                temp143_0))))))
58218      (args (raise-binding-result-arity-error 3 args))))))
58219(define expand-to-top-form$1
58220  (let ((expand-to-top-form_0
58221         (|#%name|
58222          expand-to-top-form
58223          (lambda (s38_0 ns37_0)
58224            (begin
58225              (let ((ns_0
58226                     (if (eq? ns37_0 unsafe-undefined)
58227                       (1/current-namespace)
58228                       ns37_0)))
58229                (let ((observer_0 (current-expand-observe)))
58230                  (begin
58231                    (if observer_0
58232                      (call-expand-observe observer_0 'start-top)
58233                      (void))
58234                    (with-continuation-mark*
58235                     authentic
58236                     parameterization-key
58237                     (extend-parameterization
58238                      (continuation-mark-set-first #f parameterization-key)
58239                      current-expand-observe
58240                      #f)
58241                     (per-top-level.1
58242                      #f
58243                      #f
58244                      observer_0
58245                      #f
58246                      #f
58247                      #f
58248                      #f
58249                      s38_0
58250                      ns_0))))))))))
58251    (|#%name|
58252     expand-to-top-form
58253     (case-lambda
58254      ((s_0) (begin (expand-to-top-form_0 s_0 unsafe-undefined)))
58255      ((s_0 ns37_0) (expand-to-top-form_0 s_0 ns37_0))))))
58256(define per-top-level.1
58257  (|#%name|
58258   per-top-level
58259   (lambda (combine40_0
58260            just-once?42_0
58261            observer45_0
58262            quick-immediate?43_0
58263            serializable?44_0
58264            single39_0
58265            wrap41_0
58266            given-s53_0
58267            ns54_0)
58268     (begin
58269       (let ((s_0 (maybe-intro given-s53_0 ns54_0)))
58270         (let ((ctx_0 (make-expand-context.1 #f observer45_0 #f #f #f ns54_0)))
58271           (let ((phase_0 (namespace-phase ns54_0)))
58272             (letrec*
58273              ((loop_0
58274                (|#%name|
58275                 loop
58276                 (lambda (s_1 phase_1 ns_0 as-tail?_0)
58277                   (begin
58278                     (let ((tl-ctx_0
58279                            (if (expand-context/outer? ctx_0)
58280                              (let ((the-struct_0
58281                                     (root-expand-context/outer-inner ctx_0)))
58282                                (let ((inner151_0
58283                                       (if (expand-context/inner? the-struct_0)
58284                                         (expand-context/inner2.1
58285                                          (root-expand-context/inner-self-mpi
58286                                           the-struct_0)
58287                                          (root-expand-context/inner-module-scopes
58288                                           the-struct_0)
58289                                          (root-expand-context/inner-top-level-bind-scope
58290                                           the-struct_0)
58291                                          (root-expand-context/inner-all-scopes-stx
58292                                           the-struct_0)
58293                                          (root-expand-context/inner-defined-syms
58294                                           the-struct_0)
58295                                          (root-expand-context/inner-counter
58296                                           the-struct_0)
58297                                          (root-expand-context/inner-lift-key
58298                                           the-struct_0)
58299                                          (expand-context/inner-to-parsed?
58300                                           the-struct_0)
58301                                          phase_1
58302                                          ns_0
58303                                          just-once?42_0
58304                                          (expand-context/inner-module-begin-k
58305                                           the-struct_0)
58306                                          (expand-context/inner-allow-unbound?
58307                                           the-struct_0)
58308                                          (expand-context/inner-in-local-expand?
58309                                           the-struct_0)
58310                                          (|expand-context/inner-keep-#%expression?|
58311                                           the-struct_0)
58312                                          (expand-context/inner-stops
58313                                           the-struct_0)
58314                                          (expand-context/inner-declared-submodule-names
58315                                           the-struct_0)
58316                                          (expand-context/inner-lifts
58317                                           the-struct_0)
58318                                          (expand-context/inner-lift-envs
58319                                           the-struct_0)
58320                                          (expand-context/inner-module-lifts
58321                                           the-struct_0)
58322                                          (expand-context/inner-require-lifts
58323                                           the-struct_0)
58324                                          (expand-context/inner-to-module-lifts
58325                                           the-struct_0)
58326                                          (expand-context/inner-requires+provides
58327                                           the-struct_0)
58328                                          (expand-context/inner-observer
58329                                           the-struct_0)
58330                                          serializable?44_0
58331                                          (expand-context/inner-to-correlated-linklet?
58332                                           the-struct_0)
58333                                          (expand-context/inner-normalize-locals?
58334                                           the-struct_0)
58335                                          (expand-context/inner-parsing-expanded?
58336                                           the-struct_0)
58337                                          (expand-context/inner-skip-visit-available?
58338                                           the-struct_0))
58339                                         (raise-argument-error
58340                                          'struct-copy
58341                                          "expand-context/inner?"
58342                                          the-struct_0))))
58343                                  (expand-context/outer1.1
58344                                   inner151_0
58345                                   (root-expand-context/outer-post-expansion
58346                                    ctx_0)
58347                                   (root-expand-context/outer-use-site-scopes
58348                                    ctx_0)
58349                                   (root-expand-context/outer-frame-id ctx_0)
58350                                   (expand-context/outer-context ctx_0)
58351                                   (expand-context/outer-env ctx_0)
58352                                   (expand-context/outer-scopes ctx_0)
58353                                   (expand-context/outer-def-ctx-scopes ctx_0)
58354                                   (expand-context/outer-binding-layer ctx_0)
58355                                   (expand-context/outer-reference-records
58356                                    ctx_0)
58357                                   (expand-context/outer-only-immediate? ctx_0)
58358                                   (expand-context/outer-need-eventually-defined
58359                                    ctx_0)
58360                                   (expand-context/outer-current-introduction-scopes
58361                                    ctx_0)
58362                                   (expand-context/outer-current-use-scopes
58363                                    ctx_0)
58364                                   (expand-context/outer-name ctx_0))))
58365                              (raise-argument-error
58366                               'struct-copy
58367                               "expand-context/outer?"
58368                               ctx_0))))
58369                       (let ((wb-s_0 (if just-once?42_0 s_1 #f)))
58370                         (begin
58371                           (let ((obs_0
58372                                  (begin-unsafe
58373                                   (expand-context/inner-observer
58374                                    (root-expand-context/outer-inner
58375                                     tl-ctx_0)))))
58376                             (if obs_0
58377                               (call-expand-observe obs_0 'visit s_1)
58378                               (void)))
58379                           (call-with-values
58380                            (lambda ()
58381                              (expand-capturing-lifts
58382                               s_1
58383                               (if (expand-context/outer? tl-ctx_0)
58384                                 (let ((the-struct_0
58385                                        (root-expand-context/outer-inner
58386                                         tl-ctx_0)))
58387                                   (let ((inner157_0
58388                                          (if (expand-context/inner?
58389                                               the-struct_0)
58390                                            (expand-context/inner2.1
58391                                             (root-expand-context/inner-self-mpi
58392                                              the-struct_0)
58393                                             (root-expand-context/inner-module-scopes
58394                                              the-struct_0)
58395                                             (root-expand-context/inner-top-level-bind-scope
58396                                              the-struct_0)
58397                                             (root-expand-context/inner-all-scopes-stx
58398                                              the-struct_0)
58399                                             (root-expand-context/inner-defined-syms
58400                                              the-struct_0)
58401                                             (root-expand-context/inner-counter
58402                                              the-struct_0)
58403                                             (root-expand-context/inner-lift-key
58404                                              the-struct_0)
58405                                             (expand-context/inner-to-parsed?
58406                                              the-struct_0)
58407                                             phase_1
58408                                             ns_0
58409                                             (expand-context/inner-just-once?
58410                                              the-struct_0)
58411                                             (expand-context/inner-module-begin-k
58412                                              the-struct_0)
58413                                             (expand-context/inner-allow-unbound?
58414                                              the-struct_0)
58415                                             (expand-context/inner-in-local-expand?
58416                                              the-struct_0)
58417                                             (|expand-context/inner-keep-#%expression?|
58418                                              the-struct_0)
58419                                             (expand-context/inner-stops
58420                                              the-struct_0)
58421                                             (expand-context/inner-declared-submodule-names
58422                                              the-struct_0)
58423                                             (expand-context/inner-lifts
58424                                              the-struct_0)
58425                                             (expand-context/inner-lift-envs
58426                                              the-struct_0)
58427                                             (expand-context/inner-module-lifts
58428                                              the-struct_0)
58429                                             (expand-context/inner-require-lifts
58430                                              the-struct_0)
58431                                             (expand-context/inner-to-module-lifts
58432                                              the-struct_0)
58433                                             (expand-context/inner-requires+provides
58434                                              the-struct_0)
58435                                             (expand-context/inner-observer
58436                                              the-struct_0)
58437                                             (expand-context/inner-for-serializable?
58438                                              the-struct_0)
58439                                             (expand-context/inner-to-correlated-linklet?
58440                                              the-struct_0)
58441                                             (expand-context/inner-normalize-locals?
58442                                              the-struct_0)
58443                                             (expand-context/inner-parsing-expanded?
58444                                              the-struct_0)
58445                                             (expand-context/inner-skip-visit-available?
58446                                              the-struct_0))
58447                                            (raise-argument-error
58448                                             'struct-copy
58449                                             "expand-context/inner?"
58450                                             the-struct_0))))
58451                                     (expand-context/outer1.1
58452                                      inner157_0
58453                                      (root-expand-context/outer-post-expansion
58454                                       tl-ctx_0)
58455                                      (root-expand-context/outer-use-site-scopes
58456                                       tl-ctx_0)
58457                                      (root-expand-context/outer-frame-id
58458                                       tl-ctx_0)
58459                                      (expand-context/outer-context tl-ctx_0)
58460                                      (expand-context/outer-env tl-ctx_0)
58461                                      (expand-context/outer-scopes tl-ctx_0)
58462                                      (expand-context/outer-def-ctx-scopes
58463                                       tl-ctx_0)
58464                                      (expand-context/outer-binding-layer
58465                                       tl-ctx_0)
58466                                      (expand-context/outer-reference-records
58467                                       tl-ctx_0)
58468                                      #t
58469                                      (expand-context/outer-need-eventually-defined
58470                                       tl-ctx_0)
58471                                      (expand-context/outer-current-introduction-scopes
58472                                       tl-ctx_0)
58473                                      (expand-context/outer-current-use-scopes
58474                                       tl-ctx_0)
58475                                      (expand-context/outer-name tl-ctx_0))))
58476                                 (raise-argument-error
58477                                  'struct-copy
58478                                  "expand-context/outer?"
58479                                  tl-ctx_0))))
58480                            (case-lambda
58481                             ((require-lifts_0 lifts_0 exp-s_0)
58482                              (if (let ((or-part_0 (pair? require-lifts_0)))
58483                                    (if or-part_0 or-part_0 (pair? lifts_0)))
58484                                (let ((new-s_0
58485                                       (let ((temp160_0
58486                                              (append
58487                                               require-lifts_0
58488                                               lifts_0)))
58489                                         (wrap-lifts-as-begin.1
58490                                          unsafe-undefined
58491                                          unsafe-undefined
58492                                          temp160_0
58493                                          exp-s_0
58494                                          phase_1))))
58495                                  (begin
58496                                    (let ((obs_0
58497                                           (begin-unsafe
58498                                            (expand-context/inner-observer
58499                                             (root-expand-context/outer-inner
58500                                              tl-ctx_0)))))
58501                                      (if obs_0
58502                                        (call-expand-observe
58503                                         obs_0
58504                                         'lift-loop
58505                                         new-s_0)
58506                                        (void)))
58507                                    (if just-once?42_0
58508                                      new-s_0
58509                                      (loop_0
58510                                       new-s_0
58511                                       phase_1
58512                                       ns_0
58513                                       as-tail?_0))))
58514                                (if (not single39_0)
58515                                  (begin
58516                                    (let ((obs_0
58517                                           (begin-unsafe
58518                                            (expand-context/inner-observer
58519                                             (root-expand-context/outer-inner
58520                                              tl-ctx_0)))))
58521                                      (if obs_0
58522                                        (call-expand-observe
58523                                         obs_0
58524                                         'return
58525                                         exp-s_0)
58526                                        (void)))
58527                                    exp-s_0)
58528                                  (if (if just-once?42_0
58529                                        (not (eq? exp-s_0 wb-s_0))
58530                                        #f)
58531                                    exp-s_0
58532                                    (let ((tmp_0
58533                                           (core-form-sym exp-s_0 phase_1)))
58534                                      (if (eq? tmp_0 'begin)
58535                                        (begin
58536                                          (let ((obs_0
58537                                                 (begin-unsafe
58538                                                  (expand-context/inner-observer
58539                                                   (root-expand-context/outer-inner
58540                                                    ctx_0)))))
58541                                            (if obs_0
58542                                              (call-expand-observe
58543                                               obs_0
58544                                               'prim-begin
58545                                               exp-s_0)
58546                                              (void)))
58547                                          (call-with-values
58548                                           (lambda ()
58549                                             (call-with-values
58550                                              (lambda ()
58551                                                (let ((s_2
58552                                                       (if (syntax?$1 exp-s_0)
58553                                                         (syntax-e$1 exp-s_0)
58554                                                         exp-s_0)))
58555                                                  (if (pair? s_2)
58556                                                    (let ((begin165_0
58557                                                           (let ((s_3
58558                                                                  (car s_2)))
58559                                                             s_3)))
58560                                                      (let ((e166_0
58561                                                             (let ((s_3
58562                                                                    (cdr s_2)))
58563                                                               (let ((s_4
58564                                                                      (if (syntax?$1
58565                                                                           s_3)
58566                                                                        (syntax-e$1
58567                                                                         s_3)
58568                                                                        s_3)))
58569                                                                 (let ((flat-s_0
58570                                                                        (to-syntax-list.1
58571                                                                         s_4)))
58572                                                                   (if (not
58573                                                                        flat-s_0)
58574                                                                     (raise-syntax-error$1
58575                                                                      #f
58576                                                                      "bad syntax"
58577                                                                      exp-s_0)
58578                                                                     flat-s_0))))))
58579                                                        (let ((begin165_1
58580                                                               begin165_0))
58581                                                          (values
58582                                                           begin165_1
58583                                                           e166_0))))
58584                                                    (raise-syntax-error$1
58585                                                     #f
58586                                                     "bad syntax"
58587                                                     exp-s_0))))
58588                                              (case-lambda
58589                                               ((begin163_0 e164_0)
58590                                                (values #t begin163_0 e164_0))
58591                                               (args
58592                                                (raise-binding-result-arity-error
58593                                                 2
58594                                                 args)))))
58595                                           (case-lambda
58596                                            ((ok?_0 begin163_0 e164_0)
58597                                             (letrec*
58598                                              ((begin-loop_0
58599                                                (|#%name|
58600                                                 begin-loop
58601                                                 (lambda (es_0)
58602                                                   (begin
58603                                                     (if (null? es_0)
58604                                                       (if combine40_0
58605                                                         null
58606                                                         (void))
58607                                                       (if (if (not
58608                                                                combine40_0)
58609                                                             (null? (cdr es_0))
58610                                                             #f)
58611                                                         (loop_0
58612                                                          (car es_0)
58613                                                          phase_1
58614                                                          ns_0
58615                                                          as-tail?_0)
58616                                                         (begin
58617                                                           (let ((obs_0
58618                                                                  (begin-unsafe
58619                                                                   (expand-context/inner-observer
58620                                                                    (root-expand-context/outer-inner
58621                                                                     tl-ctx_0)))))
58622                                                             (if obs_0
58623                                                               (call-expand-observe
58624                                                                obs_0
58625                                                                'next)
58626                                                               (void)))
58627                                                           (let ((a_0
58628                                                                  (if combine40_0
58629                                                                    (loop_0
58630                                                                     (car es_0)
58631                                                                     phase_1
58632                                                                     ns_0
58633                                                                     #f)
58634                                                                    (begin
58635                                                                      (loop_0
58636                                                                       (car
58637                                                                        es_0)
58638                                                                       phase_1
58639                                                                       ns_0
58640                                                                       #f)
58641                                                                      (void)))))
58642                                                             (if combine40_0
58643                                                               (|#%app|
58644                                                                combine40_0
58645                                                                a_0
58646                                                                (begin-loop_0
58647                                                                 (cdr es_0)))
58648                                                               (begin-loop_0
58649                                                                (cdr
58650                                                                 es_0))))))))))))
58651                                              (if wrap41_0
58652                                                (let ((new-s_0
58653                                                       (|#%app|
58654                                                        wrap41_0
58655                                                        begin163_0
58656                                                        exp-s_0
58657                                                        (begin-loop_0
58658                                                         e164_0))))
58659                                                  (begin
58660                                                    (let ((obs_0
58661                                                           (begin-unsafe
58662                                                            (expand-context/inner-observer
58663                                                             (root-expand-context/outer-inner
58664                                                              tl-ctx_0)))))
58665                                                      (if obs_0
58666                                                        (call-expand-observe
58667                                                         obs_0
58668                                                         'return
58669                                                         new-s_0)
58670                                                        (void)))
58671                                                    new-s_0))
58672                                                (begin-loop_0 e164_0))))
58673                                            (args
58674                                             (raise-binding-result-arity-error
58675                                              3
58676                                              args)))))
58677                                        (if (eq? tmp_0 'begin-for-syntax)
58678                                          (begin
58679                                            (let ((obs_0
58680                                                   (begin-unsafe
58681                                                    (expand-context/inner-observer
58682                                                     (root-expand-context/outer-inner
58683                                                      tl-ctx_0)))))
58684                                              (if obs_0
58685                                                (call-expand-observe
58686                                                 obs_0
58687                                                 'prim-begin-for-syntax
58688                                                 exp-s_0)
58689                                                (void)))
58690                                            (call-with-values
58691                                             (lambda ()
58692                                               (call-with-values
58693                                                (lambda ()
58694                                                  (let ((s_2
58695                                                         (if (syntax?$1
58696                                                              exp-s_0)
58697                                                           (syntax-e$1 exp-s_0)
58698                                                           exp-s_0)))
58699                                                    (if (pair? s_2)
58700                                                      (let ((begin-for-syntax169_0
58701                                                             (let ((s_3
58702                                                                    (car s_2)))
58703                                                               s_3)))
58704                                                        (let ((e170_0
58705                                                               (let ((s_3
58706                                                                      (cdr
58707                                                                       s_2)))
58708                                                                 (let ((s_4
58709                                                                        (if (syntax?$1
58710                                                                             s_3)
58711                                                                          (syntax-e$1
58712                                                                           s_3)
58713                                                                          s_3)))
58714                                                                   (let ((flat-s_0
58715                                                                          (to-syntax-list.1
58716                                                                           s_4)))
58717                                                                     (if (not
58718                                                                          flat-s_0)
58719                                                                       (raise-syntax-error$1
58720                                                                        #f
58721                                                                        "bad syntax"
58722                                                                        exp-s_0)
58723                                                                       flat-s_0))))))
58724                                                          (let ((begin-for-syntax169_1
58725                                                                 begin-for-syntax169_0))
58726                                                            (values
58727                                                             begin-for-syntax169_1
58728                                                             e170_0))))
58729                                                      (raise-syntax-error$1
58730                                                       #f
58731                                                       "bad syntax"
58732                                                       exp-s_0))))
58733                                                (case-lambda
58734                                                 ((begin-for-syntax167_0
58735                                                   e168_0)
58736                                                  (values
58737                                                   #t
58738                                                   begin-for-syntax167_0
58739                                                   e168_0))
58740                                                 (args
58741                                                  (raise-binding-result-arity-error
58742                                                   2
58743                                                   args)))))
58744                                             (case-lambda
58745                                              ((ok?_0
58746                                                begin-for-syntax167_0
58747                                                e168_0)
58748                                               (let ((next-phase_0
58749                                                      (add1 phase_1)))
58750                                                 (let ((next-ns_0
58751                                                        (namespace->namespace-at-phase
58752                                                         ns_0
58753                                                         next-phase_0)))
58754                                                   (begin
58755                                                     (let ((obs_0
58756                                                            (begin-unsafe
58757                                                             (expand-context/inner-observer
58758                                                              (root-expand-context/outer-inner
58759                                                               tl-ctx_0)))))
58760                                                       (if obs_0
58761                                                         (call-expand-observe
58762                                                          obs_0
58763                                                          'prepare-env)
58764                                                         (void)))
58765                                                     (begin
58766                                                       (if quick-immediate?43_0
58767                                                         (namespace-visit-available-modules!
58768                                                          ns_0)
58769                                                         (void))
58770                                                       (begin
58771                                                         (namespace-visit-available-modules!
58772                                                          next-ns_0)
58773                                                         (let ((l_0
58774                                                                (reverse$1
58775                                                                 (begin
58776                                                                   (letrec*
58777                                                                    ((for-loop_0
58778                                                                      (|#%name|
58779                                                                       for-loop
58780                                                                       (lambda (fold-var_0
58781                                                                                lst_0)
58782                                                                         (begin
58783                                                                           (if (pair?
58784                                                                                lst_0)
58785                                                                             (let ((s_2
58786                                                                                    (unsafe-car
58787                                                                                     lst_0)))
58788                                                                               (let ((rest_0
58789                                                                                      (unsafe-cdr
58790                                                                                       lst_0)))
58791                                                                                 (let ((fold-var_1
58792                                                                                        (let ((fold-var_1
58793                                                                                               (cons
58794                                                                                                (begin
58795                                                                                                  (let ((obs_0
58796                                                                                                         (begin-unsafe
58797                                                                                                          (expand-context/inner-observer
58798                                                                                                           (root-expand-context/outer-inner
58799                                                                                                            tl-ctx_0)))))
58800                                                                                                    (if obs_0
58801                                                                                                      (call-expand-observe
58802                                                                                                       obs_0
58803                                                                                                       'next)
58804                                                                                                      (void)))
58805                                                                                                  (loop_0
58806                                                                                                   s_2
58807                                                                                                   next-phase_0
58808                                                                                                   next-ns_0
58809                                                                                                   #f))
58810                                                                                                fold-var_0)))
58811                                                                                          (values
58812                                                                                           fold-var_1))))
58813                                                                                   (for-loop_0
58814                                                                                    fold-var_1
58815                                                                                    rest_0))))
58816                                                                             fold-var_0))))))
58817                                                                    (for-loop_0
58818                                                                     null
58819                                                                     e168_0))))))
58820                                                           (if wrap41_0
58821                                                             (let ((new-s_0
58822                                                                    (|#%app|
58823                                                                     wrap41_0
58824                                                                     begin-for-syntax167_0
58825                                                                     exp-s_0
58826                                                                     l_0)))
58827                                                               (begin
58828                                                                 (let ((obs_0
58829                                                                        (begin-unsafe
58830                                                                         (expand-context/inner-observer
58831                                                                          (root-expand-context/outer-inner
58832                                                                           tl-ctx_0)))))
58833                                                                   (if obs_0
58834                                                                     (call-expand-observe
58835                                                                      obs_0
58836                                                                      'return
58837                                                                      new-s_0)
58838                                                                     (void)))
58839                                                                 new-s_0))
58840                                                             (if combine40_0
58841                                                               (apply
58842                                                                append
58843                                                                l_0)
58844                                                               (void))))))))))
58845                                              (args
58846                                               (raise-binding-result-arity-error
58847                                                3
58848                                                args)))))
58849                                          (|#%app|
58850                                           single39_0
58851                                           exp-s_0
58852                                           ns_0
58853                                           as-tail?_0))))))))
58854                             (args
58855                              (raise-binding-result-arity-error
58856                               3
58857                               args))))))))))))
58858              (loop_0 s_0 phase_0 ns54_0 #t)))))))))
58859(define maybe-intro
58860  (lambda (s_0 ns_0)
58861    (if (syntax?$1 s_0)
58862      s_0
58863      (1/namespace-syntax-introduce (1/datum->syntax #f s_0) ns_0))))
58864(define re-pair
58865  (lambda (form-id_0 s_0 r_0)
58866    (1/datum->syntax s_0 (cons form-id_0 r_0) s_0 s_0)))
58867(define expand-capturing-lifts
58868  (lambda (s_0 ctx_0)
58869    (begin
58870      (if log-performance? (start-performance-region 'expand 'top) (void))
58871      (begin0
58872        (let ((ns_0
58873               (begin-unsafe
58874                (expand-context/inner-namespace
58875                 (root-expand-context/outer-inner ctx_0)))))
58876          (begin
58877            (namespace-visit-available-modules! ns_0)
58878            (let ((lift-ctx_0
58879                   (let ((temp171_0 (make-top-level-lift ctx_0)))
58880                     (make-lift-context.1 #f temp171_0))))
58881              (let ((require-lift-ctx_0
58882                     (make-require-lift-context
58883                      (namespace-phase ns_0)
58884                      (make-parse-top-lifted-require ns_0))))
58885                (let ((exp-s_0
58886                       (let ((temp173_0
58887                              (if (expand-context/outer? ctx_0)
58888                                (let ((the-struct_0
58889                                       (root-expand-context/outer-inner
58890                                        ctx_0)))
58891                                  (let ((inner174_0
58892                                         (if (expand-context/inner?
58893                                              the-struct_0)
58894                                           (expand-context/inner2.1
58895                                            (root-expand-context/inner-self-mpi
58896                                             the-struct_0)
58897                                            (root-expand-context/inner-module-scopes
58898                                             the-struct_0)
58899                                            (root-expand-context/inner-top-level-bind-scope
58900                                             the-struct_0)
58901                                            (root-expand-context/inner-all-scopes-stx
58902                                             the-struct_0)
58903                                            (root-expand-context/inner-defined-syms
58904                                             the-struct_0)
58905                                            (root-expand-context/inner-counter
58906                                             the-struct_0)
58907                                            (root-expand-context/inner-lift-key
58908                                             the-struct_0)
58909                                            (expand-context/inner-to-parsed?
58910                                             the-struct_0)
58911                                            (expand-context/inner-phase
58912                                             the-struct_0)
58913                                            (expand-context/inner-namespace
58914                                             the-struct_0)
58915                                            (expand-context/inner-just-once?
58916                                             the-struct_0)
58917                                            (expand-context/inner-module-begin-k
58918                                             the-struct_0)
58919                                            (expand-context/inner-allow-unbound?
58920                                             the-struct_0)
58921                                            (expand-context/inner-in-local-expand?
58922                                             the-struct_0)
58923                                            (|expand-context/inner-keep-#%expression?|
58924                                             the-struct_0)
58925                                            (expand-context/inner-stops
58926                                             the-struct_0)
58927                                            (expand-context/inner-declared-submodule-names
58928                                             the-struct_0)
58929                                            lift-ctx_0
58930                                            (expand-context/inner-lift-envs
58931                                             the-struct_0)
58932                                            lift-ctx_0
58933                                            require-lift-ctx_0
58934                                            (expand-context/inner-to-module-lifts
58935                                             the-struct_0)
58936                                            (expand-context/inner-requires+provides
58937                                             the-struct_0)
58938                                            (expand-context/inner-observer
58939                                             the-struct_0)
58940                                            (expand-context/inner-for-serializable?
58941                                             the-struct_0)
58942                                            (expand-context/inner-to-correlated-linklet?
58943                                             the-struct_0)
58944                                            (expand-context/inner-normalize-locals?
58945                                             the-struct_0)
58946                                            (expand-context/inner-parsing-expanded?
58947                                             the-struct_0)
58948                                            (expand-context/inner-skip-visit-available?
58949                                             the-struct_0))
58950                                           (raise-argument-error
58951                                            'struct-copy
58952                                            "expand-context/inner?"
58953                                            the-struct_0))))
58954                                    (expand-context/outer1.1
58955                                     inner174_0
58956                                     (root-expand-context/outer-post-expansion
58957                                      ctx_0)
58958                                     (root-expand-context/outer-use-site-scopes
58959                                      ctx_0)
58960                                     (root-expand-context/outer-frame-id ctx_0)
58961                                     (expand-context/outer-context ctx_0)
58962                                     (expand-context/outer-env ctx_0)
58963                                     (expand-context/outer-scopes ctx_0)
58964                                     (expand-context/outer-def-ctx-scopes
58965                                      ctx_0)
58966                                     (expand-context/outer-binding-layer ctx_0)
58967                                     (expand-context/outer-reference-records
58968                                      ctx_0)
58969                                     (expand-context/outer-only-immediate?
58970                                      ctx_0)
58971                                     (expand-context/outer-need-eventually-defined
58972                                      ctx_0)
58973                                     (expand-context/outer-current-introduction-scopes
58974                                      ctx_0)
58975                                     (expand-context/outer-current-use-scopes
58976                                      ctx_0)
58977                                     (expand-context/outer-name ctx_0))))
58978                                (raise-argument-error
58979                                 'struct-copy
58980                                 "expand-context/outer?"
58981                                 ctx_0))))
58982                         (expand.1 #f #f s_0 temp173_0))))
58983                  (let ((app_0
58984                         (begin-unsafe
58985                          (box-clear!
58986                           (require-lift-context-requires
58987                            require-lift-ctx_0)))))
58988                    (values
58989                     app_0
58990                     (begin-unsafe
58991                      (box-clear! (lift-context-lifts lift-ctx_0)))
58992                     exp-s_0)))))))
58993        (if log-performance? (end-performance-region) (void))))))
58994(define make-parse-top-lifted-require
58995  (lambda (ns_0)
58996    (lambda (s_0 phase_0)
58997      (call-with-values
58998       (lambda ()
58999         (call-with-values
59000          (lambda ()
59001            (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
59002              (if (pair? s_1)
59003                (let ((|#%require180_0| (let ((s_2 (car s_1))) s_2)))
59004                  (let ((req181_0
59005                         (let ((s_2 (cdr s_1)))
59006                           (let ((s_3
59007                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
59008                             (if (pair? s_3)
59009                               (let ((req182_0 (let ((s_4 (car s_3))) s_4)))
59010                                 (call-with-values
59011                                  (lambda ()
59012                                    (let ((s_4 (cdr s_3)))
59013                                      (let ((s_5
59014                                             (if (syntax?$1 s_4)
59015                                               (syntax-e$1 s_4)
59016                                               s_4)))
59017                                        (if (null? s_5)
59018                                          (values)
59019                                          (raise-syntax-error$1
59020                                           #f
59021                                           "bad syntax"
59022                                           s_0)))))
59023                                  (case-lambda
59024                                   (()
59025                                    (let ((req182_1 req182_0))
59026                                      (values req182_1)))
59027                                   (args
59028                                    (raise-binding-result-arity-error
59029                                     0
59030                                     args)))))
59031                               (raise-syntax-error$1 #f "bad syntax" s_0))))))
59032                    (let ((|#%require180_1| |#%require180_0|))
59033                      (values |#%require180_1| req181_0))))
59034                (raise-syntax-error$1 #f "bad syntax" s_0))))
59035          (case-lambda
59036           ((|#%require178_0| req179_0) (values #t |#%require178_0| req179_0))
59037           (args (raise-binding-result-arity-error 2 args)))))
59038       (case-lambda
59039        ((ok?_0 |#%require178_0| req179_0)
59040         (let ((temp183_0 (list req179_0)))
59041           (let ((temp188_0 (make-requires+provides.1 #f #f)))
59042             (let ((temp183_1 temp183_0))
59043               (parse-and-perform-requires!.1
59044                #f
59045                #f
59046                hash2610
59047                #f
59048                phase_0
59049                #f
59050                #f
59051                #f
59052                #t
59053                'require
59054                temp183_1
59055                s_0
59056                ns_0
59057                phase_0
59058                temp188_0)))))
59059        (args (raise-binding-result-arity-error 3 args)))))))
59060(define wrap-lifts-as-lifted-parsed-begin.1
59061  (|#%name|
59062   wrap-lifts-as-lifted-parsed-begin
59063   (lambda (adjust-form56_0
59064            require-lifts58_0
59065            lifts59_0
59066            exp-s60_0
59067            rebuild-s61_0)
59068     (begin
59069       (lifted-parsed-begin11.1
59070        (let ((app_0
59071               (reverse$1
59072                (begin
59073                  (letrec*
59074                   ((for-loop_0
59075                     (|#%name|
59076                      for-loop
59077                      (lambda (fold-var_0 lst_0)
59078                        (begin
59079                          (if (pair? lst_0)
59080                            (let ((req_0 (unsafe-car lst_0)))
59081                              (let ((rest_0 (unsafe-cdr lst_0)))
59082                                (let ((fold-var_1
59083                                       (cons
59084                                        (parsed-require23.1 req_0)
59085                                        fold-var_0)))
59086                                  (let ((fold-var_2 (values fold-var_1)))
59087                                    (for-loop_0 fold-var_2 rest_0)))))
59088                            fold-var_0))))))
59089                   (for-loop_0 null require-lifts58_0))))))
59090          (append
59091           app_0
59092           (reverse$1
59093            (let ((lst_0 (get-lifts-as-lists lifts59_0)))
59094              (begin
59095                (letrec*
59096                 ((for-loop_0
59097                   (|#%name|
59098                    for-loop
59099                    (lambda (fold-var_0 lst_1)
59100                      (begin
59101                        (if (pair? lst_1)
59102                          (let ((ids+syms+rhs_0 (unsafe-car lst_1)))
59103                            (let ((rest_0 (unsafe-cdr lst_1)))
59104                              (let ((fold-var_1
59105                                     (let ((fold-var_1
59106                                            (cons
59107                                             (let ((exp-rhs_0
59108                                                    (|#%app|
59109                                                     adjust-form56_0
59110                                                     (caddr ids+syms+rhs_0))))
59111                                               (let ((just-rhs_0
59112                                                      (if (lifted-parsed-begin?
59113                                                           exp-rhs_0)
59114                                                        (lifted-parsed-begin-last
59115                                                         exp-rhs_0)
59116                                                        exp-rhs_0)))
59117                                                 (let ((dv_0
59118                                                        (let ((app_1
59119                                                               (car
59120                                                                ids+syms+rhs_0)))
59121                                                          (parsed-define-values19.1
59122                                                           rebuild-s61_0
59123                                                           app_1
59124                                                           (cadr
59125                                                            ids+syms+rhs_0)
59126                                                           just-rhs_0))))
59127                                                   (if (lifted-parsed-begin?
59128                                                        exp-rhs_0)
59129                                                     (if (lifted-parsed-begin?
59130                                                          exp-rhs_0)
59131                                                       (lifted-parsed-begin11.1
59132                                                        (lifted-parsed-begin-seq
59133                                                         exp-rhs_0)
59134                                                        dv_0)
59135                                                       (raise-argument-error
59136                                                        'struct-copy
59137                                                        "lifted-parsed-begin?"
59138                                                        exp-rhs_0))
59139                                                     dv_0))))
59140                                             fold-var_0)))
59141                                       (values fold-var_1))))
59142                                (for-loop_0 fold-var_1 rest_0))))
59143                          fold-var_0))))))
59144                 (for-loop_0 null lst_0)))))))
59145        exp-s60_0)))))
59146(define replace-me
59147  (lambda (who_0) (lambda args_0 (error who_0 "this stub must be replaced"))))
59148(define 1/current-eval
59149  (make-parameter
59150   (replace-me 'current-eval)
59151   (lambda (p_0)
59152     (begin
59153       (if (if (procedure? p_0) (procedure-arity-includes? p_0 1) #f)
59154         (void)
59155         (raise-argument-error
59156          'current-eval
59157          "(procedure-arity-includes/c 1)"
59158          p_0))
59159       p_0))
59160   'current-eval))
59161(define 1/current-compile
59162  (make-parameter
59163   (replace-me 'current-compile)
59164   (lambda (p_0)
59165     (begin
59166       (if (if (procedure? p_0) (procedure-arity-includes? p_0 2) #f)
59167         (void)
59168         (raise-argument-error
59169          'current-compile
59170          "(procedure-arity-includes/c 2)"
59171          p_0))
59172       p_0))
59173   'current-compile))
59174(define 1/current-load
59175  (make-parameter
59176   (replace-me 'current-load)
59177   (lambda (p_0)
59178     (begin
59179       (if (if (procedure? p_0) (procedure-arity-includes? p_0 2) #f)
59180         (void)
59181         (raise-argument-error
59182          'current-load
59183          "(procedure-arity-includes/c 2)"
59184          p_0))
59185       p_0))
59186   'current-load))
59187(define 1/current-load/use-compiled
59188  (make-parameter
59189   (replace-me 'current-load/use-compiled)
59190   (lambda (p_0)
59191     (begin
59192       (if (if (procedure? p_0) (procedure-arity-includes? p_0 2) #f)
59193         (void)
59194         (raise-argument-error
59195          'current-load/use-compiled
59196          "(procedure-arity-includes/c 2)"
59197          p_0))
59198       p_0))
59199   'current-load/use-compiled))
59200(define 1/current-library-collection-paths
59201  (make-parameter
59202   null
59203   (lambda (l_0)
59204     (begin
59205       (if (if (list? l_0) (andmap_2344 complete-path-string? l_0) #f)
59206         (void)
59207         (raise-argument-error
59208          'current-library-collection-paths
59209          "(listof (and/c path-string? complete-path?))"
59210          l_0))
59211       (map_1346 to-path l_0)))
59212   'current-library-collection-paths))
59213(define 1/current-library-collection-links
59214  (make-parameter
59215   null
59216   (lambda (l_0)
59217     (begin
59218       (if (if (list? l_0)
59219             (andmap_2344
59220              (lambda (p_0)
59221                (let ((or-part_0 (not p_0)))
59222                  (if or-part_0
59223                    or-part_0
59224                    (let ((or-part_1 (|#%app| complete-path-string? p_0)))
59225                      (if or-part_1
59226                        or-part_1
59227                        (if (hash? p_0)
59228                          (begin
59229                            (letrec*
59230                             ((for-loop_0
59231                               (|#%name|
59232                                for-loop
59233                                (lambda (result_0 i_0)
59234                                  (begin
59235                                    (if i_0
59236                                      (call-with-values
59237                                       (lambda ()
59238                                         (hash-iterate-key+value p_0 i_0))
59239                                       (case-lambda
59240                                        ((k_0 v_0)
59241                                         (let ((result_1
59242                                                (let ((result_1
59243                                                       (if (let ((or-part_2
59244                                                                  (not k_0)))
59245                                                             (if or-part_2
59246                                                               or-part_2
59247                                                               (if (symbol?
59248                                                                    k_0)
59249                                                                 (1/module-path?
59250                                                                  k_0)
59251                                                                 #f)))
59252                                                         (if (list? v_0)
59253                                                           (andmap_2344
59254                                                            complete-path-string?
59255                                                            v_0)
59256                                                           #f)
59257                                                         #f)))
59258                                                  (values result_1))))
59259                                           (if (if (not
59260                                                    (let ((x_0 (list k_0 v_0)))
59261                                                      (not result_1)))
59262                                                 #t
59263                                                 #f)
59264                                             (for-loop_0
59265                                              result_1
59266                                              (hash-iterate-next p_0 i_0))
59267                                             result_1)))
59268                                        (args
59269                                         (raise-binding-result-arity-error
59270                                          2
59271                                          args))))
59272                                      result_0))))))
59273                             (for-loop_0 #t (hash-iterate-first p_0))))
59274                          #f))))))
59275              l_0)
59276             #f)
59277         (void)
59278         (raise-argument-error
59279          'current-library-collection-links
59280          (string-append
59281           "(listof (or/c #f\n"
59282           "              (and/c path-string? complete-path?)\n"
59283           "              (hash/c (or/c (and/c symbol? module-path?) #f)\n"
59284           "                      (listof (and/c path-string? complete-path?)))))")
59285          l_0))
59286       (map_1346
59287        (lambda (p_0)
59288          (if (not p_0)
59289            #f
59290            (if (path? p_0)
59291              p_0
59292              (if (string? p_0)
59293                (string->path p_0)
59294                (begin
59295                  (letrec*
59296                   ((for-loop_0
59297                     (|#%name|
59298                      for-loop
59299                      (lambda (table_0 i_0)
59300                        (begin
59301                          (if i_0
59302                            (call-with-values
59303                             (lambda () (hash-iterate-key+value p_0 i_0))
59304                             (case-lambda
59305                              ((k_0 v_0)
59306                               (let ((table_1
59307                                      (let ((table_1
59308                                             (call-with-values
59309                                              (lambda ()
59310                                                (values
59311                                                 k_0
59312                                                 (|#%app| to-path v_0)))
59313                                              (case-lambda
59314                                               ((key_0 val_0)
59315                                                (hash-set table_0 key_0 val_0))
59316                                               (args
59317                                                (raise-binding-result-arity-error
59318                                                 2
59319                                                 args))))))
59320                                        (values table_1))))
59321                                 (for-loop_0
59322                                  table_1
59323                                  (hash-iterate-next p_0 i_0))))
59324                              (args
59325                               (raise-binding-result-arity-error 2 args))))
59326                            table_0))))))
59327                   (for-loop_0 hash2725 (hash-iterate-first p_0))))))))
59328        l_0)))
59329   'current-library-collection-links))
59330(define 1/use-compiled-file-paths
59331  (make-parameter
59332   (list (string->path "compiled"))
59333   (lambda (l_0)
59334     (begin
59335       (if (if (list? l_0) (andmap_2344 relative-path-string?$1 l_0) #f)
59336         (void)
59337         (raise-argument-error
59338          'use-compiled-file-paths
59339          "(listof (and/c path-string? relative-path?))"
59340          l_0))
59341       (map_1346 to-path l_0)))
59342   'use-compiled-file-paths))
59343(define 1/current-compiled-file-roots
59344  (make-parameter
59345   '(same)
59346   (lambda (l_0)
59347     (begin
59348       (if (if (list? l_0)
59349             (andmap_2344
59350              (lambda (p_0)
59351                (let ((or-part_0 (path-string? p_0)))
59352                  (if or-part_0 or-part_0 (eq? p_0 'same))))
59353              l_0)
59354             #f)
59355         (void)
59356         (raise-argument-error
59357          'current-compiled-file-roots
59358          "(listof (or/c path-string? 'same))"
59359          l_0))
59360       (map_1346 to-path l_0)))
59361   'current-compiled-file-roots))
59362(define 1/use-compiled-file-check
59363  (make-parameter
59364   'modify-seconds
59365   (lambda (v_0)
59366     (begin
59367       (if (let ((or-part_0 (eq? v_0 'modify-seconds)))
59368             (if or-part_0 or-part_0 (eq? v_0 'exists)))
59369         (void)
59370         (raise-argument-error
59371          'use-compiled-file-check
59372          "(or/c 'modify-seconds 'exists)"
59373          v_0))
59374       v_0))
59375   'use-compiled-file-check))
59376(define 1/use-collection-link-paths
59377  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'use-collection-link-paths))
59378(define 1/use-user-specific-search-paths
59379  (make-parameter
59380   #t
59381   (lambda (v_0) (if v_0 #t #f))
59382   'use-user-specific-search-paths))
59383(define complete-path-string?
59384  (lambda (p_0) (if (path-string? p_0) (complete-path? p_0) #f)))
59385(define relative-path-string?$1
59386  (|#%name|
59387   relative-path-string?
59388   (lambda (p_0) (begin (if (path-string? p_0) (relative-path? p_0) #f)))))
59389(define to-path (lambda (p_0) (if (string? p_0) (string->path p_0) p_0)))
59390(define eval$1
59391  (|#%name|
59392   eval
59393   (case-lambda
59394    ((s_0)
59395     (begin (let ((app_0 (1/current-eval))) (|#%app| app_0 (intro s_0)))))
59396    ((s_0 ns_0)
59397     (begin
59398       (if (1/namespace? ns_0)
59399         (void)
59400         (raise-argument-error 'eval "namespace?" ns_0))
59401       (with-continuation-mark*
59402        authentic
59403        parameterization-key
59404        (extend-parameterization
59405         (continuation-mark-set-first #f parameterization-key)
59406         1/current-namespace
59407         ns_0)
59408        (let ((app_0 (1/current-eval))) (|#%app| app_0 (intro s_0 ns_0)))))))))
59409(define 1/eval-syntax
59410  (|#%name|
59411   eval-syntax
59412   (case-lambda
59413    ((s_0)
59414     (begin
59415       (begin
59416         (if (syntax?$1 s_0)
59417           (void)
59418           (raise-argument-error 'eval-syntax "syntax?" s_0))
59419         (|#%app| (1/current-eval) s_0))))
59420    ((s_0 ns_0)
59421     (begin
59422       (if (syntax?$1 s_0)
59423         (void)
59424         (raise-argument-error 'eval-syntax "syntax?" s_0))
59425       (if (1/namespace? ns_0)
59426         (void)
59427         (raise-argument-error 'eval-syntax "namespace?" ns_0))
59428       (with-continuation-mark*
59429        authentic
59430        parameterization-key
59431        (extend-parameterization
59432         (continuation-mark-set-first #f parameterization-key)
59433         1/current-namespace
59434         ns_0)
59435        (|#%app| (1/current-eval) s_0)))))))
59436(define compile$1
59437  (|#%name|
59438   compile
59439   (lambda (s_0)
59440     (begin
59441       (let ((app_0 (1/current-compile))) (|#%app| app_0 (intro s_0) #f))))))
59442(define 1/compile-syntax
59443  (|#%name|
59444   compile-syntax
59445   (lambda (s_0)
59446     (begin
59447       (begin
59448         (if (syntax?$1 s_0)
59449           (void)
59450           (raise-argument-error 'compile-syntax "syntax?" s_0))
59451         (|#%app| (1/current-compile) s_0 #f))))))
59452(define 1/expand
59453  (let ((expand_0
59454         (|#%name|
59455          expand
59456          (lambda (s2_0 insp1_0)
59457            (begin
59458              (let ((insp_0
59459                     (if (eq? insp1_0 unsafe-undefined)
59460                       (current-code-inspector)
59461                       insp1_0)))
59462                (begin
59463                  (if (inspector? insp_0)
59464                    (void)
59465                    (raise-argument-error 'expand "inspector?" insp_0))
59466                  (maybe-taint-expanded
59467                   insp_0
59468                   (let ((app_0 (intro s2_0)))
59469                     (expand$1 app_0 (1/current-namespace) #t))))))))))
59470    (|#%name|
59471     expand
59472     (case-lambda
59473      ((s_0) (begin (expand_0 s_0 unsafe-undefined)))
59474      ((s_0 insp1_0) (expand_0 s_0 insp1_0))))))
59475(define 1/expand-syntax
59476  (let ((expand-syntax_0
59477         (|#%name|
59478          expand-syntax
59479          (lambda (s4_0 insp3_0)
59480            (begin
59481              (let ((insp_0
59482                     (if (eq? insp3_0 unsafe-undefined)
59483                       (current-code-inspector)
59484                       insp3_0)))
59485                (begin
59486                  (if (syntax?$1 s4_0)
59487                    (void)
59488                    (raise-argument-error 'expand-syntax "syntax?" s4_0))
59489                  (if (inspector? insp_0)
59490                    (void)
59491                    (raise-argument-error 'expand-syntax "inspector?" insp_0))
59492                  (maybe-taint-expanded
59493                   insp_0
59494                   (expand$1 s4_0 (1/current-namespace) #t)))))))))
59495    (|#%name|
59496     expand-syntax
59497     (case-lambda
59498      ((s_0) (begin (expand-syntax_0 s_0 unsafe-undefined)))
59499      ((s_0 insp3_0) (expand-syntax_0 s_0 insp3_0))))))
59500(define 1/expand-once
59501  (let ((expand-once_0
59502         (|#%name|
59503          expand-once
59504          (lambda (s6_0 insp5_0)
59505            (begin
59506              (let ((insp_0
59507                     (if (eq? insp5_0 unsafe-undefined)
59508                       (current-code-inspector)
59509                       insp5_0)))
59510                (begin
59511                  (if (inspector? insp_0)
59512                    (void)
59513                    (raise-argument-error 'expand-once "inspector?" insp_0))
59514                  (maybe-taint-expanded
59515                   insp_0
59516                   (expand-once$1 (intro s6_0))))))))))
59517    (|#%name|
59518     expand-once
59519     (case-lambda
59520      ((s_0) (begin (expand-once_0 s_0 unsafe-undefined)))
59521      ((s_0 insp5_0) (expand-once_0 s_0 insp5_0))))))
59522(define 1/expand-syntax-once
59523  (let ((expand-syntax-once_0
59524         (|#%name|
59525          expand-syntax-once
59526          (lambda (s8_0 insp7_0)
59527            (begin
59528              (let ((insp_0
59529                     (if (eq? insp7_0 unsafe-undefined)
59530                       (current-code-inspector)
59531                       insp7_0)))
59532                (begin
59533                  (if (syntax?$1 s8_0)
59534                    (void)
59535                    (raise-argument-error 'expand-syntax-once "syntax?" s8_0))
59536                  (if (inspector? insp_0)
59537                    (void)
59538                    (raise-argument-error
59539                     'expand-syntax-once
59540                     "inspector?"
59541                     insp_0))
59542                  (maybe-taint-expanded insp_0 (expand-once$1 s8_0)))))))))
59543    (|#%name|
59544     expand-syntax-once
59545     (case-lambda
59546      ((s_0) (begin (expand-syntax-once_0 s_0 unsafe-undefined)))
59547      ((s_0 insp7_0) (expand-syntax-once_0 s_0 insp7_0))))))
59548(define 1/expand-to-top-form
59549  (let ((expand-to-top-form_0
59550         (|#%name|
59551          expand-to-top-form
59552          (lambda (s10_0 insp9_0)
59553            (begin
59554              (let ((insp_0
59555                     (if (eq? insp9_0 unsafe-undefined)
59556                       (current-code-inspector)
59557                       insp9_0)))
59558                (begin
59559                  (if (inspector? insp_0)
59560                    (void)
59561                    (raise-argument-error
59562                     'expand-to-top-form
59563                     "inspector?"
59564                     insp_0))
59565                  (maybe-taint-expanded
59566                   insp_0
59567                   (expand-to-top-form$1 (intro s10_0))))))))))
59568    (|#%name|
59569     expand-to-top-form
59570     (case-lambda
59571      ((s_0) (begin (expand-to-top-form_0 s_0 unsafe-undefined)))
59572      ((s_0 insp9_0) (expand-to-top-form_0 s_0 insp9_0))))))
59573(define 1/expand-syntax-to-top-form
59574  (let ((expand-syntax-to-top-form_0
59575         (|#%name|
59576          expand-syntax-to-top-form
59577          (lambda (s12_0 insp11_0)
59578            (begin
59579              (let ((insp_0
59580                     (if (eq? insp11_0 unsafe-undefined)
59581                       (current-code-inspector)
59582                       insp11_0)))
59583                (begin
59584                  (if (syntax?$1 s12_0)
59585                    (void)
59586                    (raise-argument-error
59587                     'expand-syntax-to-top-form
59588                     "syntax?"
59589                     s12_0))
59590                  (if (inspector? insp_0)
59591                    (void)
59592                    (raise-argument-error
59593                     'expand-syntax-to-top-form
59594                     "inspector?"
59595                     insp_0))
59596                  (maybe-taint-expanded
59597                   insp_0
59598                   (expand-to-top-form$1 s12_0)))))))))
59599    (|#%name|
59600     expand-syntax-to-top-form
59601     (case-lambda
59602      ((s_0) (begin (expand-syntax-to-top-form_0 s_0 unsafe-undefined)))
59603      ((s_0 insp11_0) (expand-syntax-to-top-form_0 s_0 insp11_0))))))
59604(define intro
59605  (let ((intro_0
59606         (|#%name|
59607          intro
59608          (lambda (given-s14_0 ns13_0)
59609            (begin
59610              (let ((ns_0
59611                     (if (eq? ns13_0 unsafe-undefined)
59612                       (1/current-namespace)
59613                       ns13_0)))
59614                (let ((s_0
59615                       (if (syntax?$1 given-s14_0)
59616                         given-s14_0
59617                         (1/datum->syntax #f given-s14_0))))
59618                  (1/namespace-syntax-introduce s_0 ns_0))))))))
59619    (case-lambda
59620     ((given-s_0) (intro_0 given-s_0 unsafe-undefined))
59621     ((given-s_0 ns13_0) (intro_0 given-s_0 ns13_0)))))
59622(define maybe-taint-expanded
59623  (lambda (insp_0 s_0)
59624    (if (eq? insp_0 initial-code-inspector) s_0 (syntax-taint$1 s_0))))
59625(define do-dynamic-require
59626  (let ((do-dynamic-require_0
59627         (|#%name|
59628          do-dynamic-require
59629          (lambda (who2_0 mod-path3_0 sym4_0 fail-k1_0)
59630            (begin
59631              (let ((fail-k_0
59632                     (if (eq? fail-k1_0 unsafe-undefined)
59633                       default-dynamic-require-fail-thunk
59634                       fail-k1_0)))
59635                (begin
59636                  (if (let ((or-part_0 (1/module-path? mod-path3_0)))
59637                        (if or-part_0
59638                          or-part_0
59639                          (let ((or-part_1 (1/module-path-index? mod-path3_0)))
59640                            (if or-part_1
59641                              or-part_1
59642                              (1/resolved-module-path? mod-path3_0)))))
59643                    (void)
59644                    (raise-argument-error
59645                     who2_0
59646                     "(or/c module-path? module-path-index? resolved-module-path?)"
59647                     mod-path3_0))
59648                  (begin
59649                    (if (let ((or-part_0 (symbol? sym4_0)))
59650                          (if or-part_0
59651                            or-part_0
59652                            (let ((or-part_1 (not sym4_0)))
59653                              (if or-part_1
59654                                or-part_1
59655                                (let ((or-part_2 (eq? sym4_0 0)))
59656                                  (if or-part_2 or-part_2 (void? sym4_0)))))))
59657                      (void)
59658                      (raise-argument-error
59659                       who2_0
59660                       "(or/c symbol? #f 0 void?)"
59661                       sym4_0))
59662                    (begin
59663                      (if (if (procedure? fail-k_0)
59664                            (procedure-arity-includes? fail-k_0 0)
59665                            #f)
59666                        (void)
59667                        (raise-argument-error who2_0 "(-> any)" fail-k_0))
59668                      (let ((ns_0 (1/current-namespace)))
59669                        (let ((mpi_0
59670                               (if (1/module-path? mod-path3_0)
59671                                 (1/module-path-index-join mod-path3_0 #f)
59672                                 (if (1/module-path-index? mod-path3_0)
59673                                   mod-path3_0
59674                                   (1/module-path-index-join
59675                                    (resolved-module-path->module-path
59676                                     mod-path3_0)
59677                                    #f)))))
59678                          (let ((mod-name_0
59679                                 (1/module-path-index-resolve mpi_0 #t)))
59680                            (let ((phase_0 (namespace-phase ns_0)))
59681                              (if (not sym4_0)
59682                                (namespace-module-instantiate!.1
59683                                 #f
59684                                 #f
59685                                 phase_0
59686                                 hash2610
59687                                 null
59688                                 #f
59689                                 ns_0
59690                                 mpi_0
59691                                 phase_0)
59692                                (if (eq? sym4_0 0)
59693                                  (namespace-module-instantiate!.1
59694                                   #f
59695                                   #t
59696                                   phase_0
59697                                   hash2610
59698                                   null
59699                                   #f
59700                                   ns_0
59701                                   mpi_0
59702                                   phase_0)
59703                                  (if (void? sym4_0)
59704                                    (begin
59705                                      (namespace-visit-available-modules!
59706                                       ns_0
59707                                       phase_0)
59708                                      (namespace-module-visit!.1
59709                                       phase_0
59710                                       ns_0
59711                                       mpi_0
59712                                       phase_0))
59713                                    (let ((m_0
59714                                           (namespace->module
59715                                            ns_0
59716                                            mod-name_0)))
59717                                      (begin
59718                                        (if m_0
59719                                          (void)
59720                                          (begin-unsafe
59721                                           (raise-arguments-error
59722                                            'dynamic-require
59723                                            "unknown module"
59724                                            "module name"
59725                                            (module-name->error-string
59726                                             mod-name_0))))
59727                                        (let ((binding/p_0
59728                                               (hash-ref
59729                                                (hash-ref
59730                                                 (module-provides m_0)
59731                                                 0
59732                                                 hash2610)
59733                                                sym4_0
59734                                                #f)))
59735                                          (if (not binding/p_0)
59736                                            (if (eq?
59737                                                 fail-k_0
59738                                                 default-dynamic-require-fail-thunk)
59739                                              (raise-arguments-error
59740                                               'dynamic-require
59741                                               "name is not provided"
59742                                               "name"
59743                                               sym4_0
59744                                               "module"
59745                                               mod-name_0)
59746                                              (|#%app| fail-k_0))
59747                                            (let ((binding_0
59748                                                   (provided-as-binding
59749                                                    binding/p_0)))
59750                                              (let ((ex-sym_0
59751                                                     (module-binding-sym
59752                                                      binding_0)))
59753                                                (let ((ex-phase_0
59754                                                       (module-binding-phase
59755                                                        binding_0)))
59756                                                  (begin
59757                                                    (namespace-module-instantiate!.1
59758                                                     #f
59759                                                     #f
59760                                                     phase_0
59761                                                     hash2610
59762                                                     null
59763                                                     #f
59764                                                     ns_0
59765                                                     mpi_0
59766                                                     phase_0)
59767                                                    (let ((ex-mod-name_0
59768                                                           (1/module-path-index-resolve
59769                                                            (module-path-index-shift
59770                                                             (module-binding-module
59771                                                              binding_0)
59772                                                             (module-self m_0)
59773                                                             mpi_0))))
59774                                                      (let ((m-ns_0
59775                                                             (let ((temp31_0
59776                                                                    (phase-
59777                                                                     phase_0
59778                                                                     ex-phase_0)))
59779                                                               (namespace->module-namespace.1
59780                                                                #f
59781                                                                #t
59782                                                                void
59783                                                                ns_0
59784                                                                ex-mod-name_0
59785                                                                temp31_0))))
59786                                                        (let ((ex-m_0
59787                                                               (namespace->module
59788                                                                ns_0
59789                                                                ex-mod-name_0)))
59790                                                          (let ((access_0
59791                                                                 (let ((or-part_0
59792                                                                        (module-access
59793                                                                         ex-m_0)))
59794                                                                   (if or-part_0
59795                                                                     or-part_0
59796                                                                     (module-compute-access!
59797                                                                      ex-m_0)))))
59798                                                            (begin
59799                                                              (if (if (not
59800                                                                       (eq?
59801                                                                        'provided
59802                                                                        (hash-ref
59803                                                                         (hash-ref
59804                                                                          access_0
59805                                                                          ex-phase_0
59806                                                                          hash2610)
59807                                                                         ex-sym_0
59808                                                                         #f)))
59809                                                                    (if (not
59810                                                                         (let ((app_0
59811                                                                                (current-code-inspector)))
59812                                                                           (inspector-superior?
59813                                                                            app_0
59814                                                                            (namespace-inspector
59815                                                                             m-ns_0))))
59816                                                                      (not
59817                                                                       (if (module-binding-extra-inspector
59818                                                                            binding_0)
59819                                                                         (let ((app_0
59820                                                                                (module-binding-extra-inspector
59821                                                                                 binding_0)))
59822                                                                           (inspector-superior?
59823                                                                            app_0
59824                                                                            (namespace-inspector
59825                                                                             m-ns_0)))
59826                                                                         #f))
59827                                                                      #f)
59828                                                                    #f)
59829                                                                (raise-arguments-error
59830                                                                 'dynamic-require
59831                                                                 "name is protected"
59832                                                                 "name"
59833                                                                 sym4_0
59834                                                                 "module"
59835                                                                 mod-name_0)
59836                                                                (void))
59837                                                              (let ((fail_0
59838                                                                     (|#%name|
59839                                                                      fail
59840                                                                      (lambda ()
59841                                                                        (begin
59842                                                                          (if (eq?
59843                                                                               fail-k_0
59844                                                                               default-dynamic-require-fail-thunk)
59845                                                                            (raise-arguments-error
59846                                                                             'dynamic-require
59847                                                                             "name's binding is missing"
59848                                                                             "name"
59849                                                                             sym4_0
59850                                                                             "module"
59851                                                                             mod-name_0)
59852                                                                            (|#%app|
59853                                                                             fail-k_0)))))))
59854                                                                (if (not
59855                                                                     (provided-as-transformer?
59856                                                                      binding/p_0))
59857                                                                  (namespace-get-variable
59858                                                                   m-ns_0
59859                                                                   ex-phase_0
59860                                                                   ex-sym_0
59861                                                                   fail_0)
59862                                                                  (let ((missing_0
59863                                                                         (gensym
59864                                                                          'missing)))
59865                                                                    (begin
59866                                                                      (namespace-module-visit!.1
59867                                                                       phase_0
59868                                                                       ns_0
59869                                                                       mpi_0
59870                                                                       phase_0)
59871                                                                      (let ((t_0
59872                                                                             (namespace-get-transformer
59873                                                                              m-ns_0
59874                                                                              ex-phase_0
59875                                                                              ex-sym_0
59876                                                                              missing_0)))
59877                                                                        (if (eq?
59878                                                                             t_0
59879                                                                             missing_0)
59880                                                                          (fail_0)
59881                                                                          (let ((tmp-ns_0
59882                                                                                 (new-namespace.1
59883                                                                                  #t
59884                                                                                  unsafe-undefined
59885                                                                                  ns_0)))
59886                                                                            (let ((mod-path_0
59887                                                                                   (resolved-module-path->module-path
59888                                                                                    mod-name_0)))
59889                                                                              (begin
59890                                                                                (1/namespace-require
59891                                                                                 mod-path_0
59892                                                                                 tmp-ns_0)
59893                                                                                (with-continuation-mark*
59894                                                                                 authentic
59895                                                                                 parameterization-key
59896                                                                                 (extend-parameterization
59897                                                                                  (continuation-mark-set-first
59898                                                                                   #f
59899                                                                                   parameterization-key)
59900                                                                                  1/current-namespace
59901                                                                                  tmp-ns_0)
59902                                                                                 (1/eval
59903                                                                                  sym4_0
59904                                                                                  tmp-ns_0))))))))))))))))))))))))))))))))))))))))
59905    (case-lambda
59906     ((who_0 mod-path_0 sym_0)
59907      (do-dynamic-require_0 who_0 mod-path_0 sym_0 unsafe-undefined))
59908     ((who_0 mod-path_0 sym_0 fail-k1_0)
59909      (do-dynamic-require_0 who_0 mod-path_0 sym_0 fail-k1_0)))))
59910(define default-dynamic-require-fail-thunk (lambda () (error "failed")))
59911(define 1/dynamic-require
59912  (let ((dynamic-require_0
59913         (|#%name|
59914          dynamic-require
59915          (lambda (mod-path6_0 sym7_0 fail-k5_0)
59916            (begin
59917              (let ((fail-k_0
59918                     (if (eq? fail-k5_0 unsafe-undefined)
59919                       default-dynamic-require-fail-thunk
59920                       fail-k5_0)))
59921                (do-dynamic-require
59922                 'dynamic-require
59923                 mod-path6_0
59924                 sym7_0
59925                 fail-k_0)))))))
59926    (|#%name|
59927     dynamic-require
59928     (case-lambda
59929      ((mod-path_0 sym_0)
59930       (begin (dynamic-require_0 mod-path_0 sym_0 unsafe-undefined)))
59931      ((mod-path_0 sym_0 fail-k5_0)
59932       (dynamic-require_0 mod-path_0 sym_0 fail-k5_0))))))
59933(define 1/dynamic-require-for-syntax
59934  (let ((dynamic-require-for-syntax_0
59935         (|#%name|
59936          dynamic-require-for-syntax
59937          (lambda (mod-path9_0 sym10_0 fail-k8_0)
59938            (begin
59939              (let ((fail-k_0
59940                     (if (eq? fail-k8_0 unsafe-undefined)
59941                       default-dynamic-require-fail-thunk
59942                       fail-k8_0)))
59943                (with-continuation-mark*
59944                 authentic
59945                 parameterization-key
59946                 (let ((app_0
59947                        (continuation-mark-set-first #f parameterization-key)))
59948                   (extend-parameterization
59949                    app_0
59950                    1/current-namespace
59951                    (let ((ns_0 (1/current-namespace)))
59952                      (namespace->namespace-at-phase
59953                       ns_0
59954                       (add1 (namespace-phase ns_0))))))
59955                 (do-dynamic-require
59956                  'dynamic-require-for-syntax
59957                  mod-path9_0
59958                  sym10_0
59959                  fail-k_0))))))))
59960    (|#%name|
59961     dynamic-require-for-syntax
59962     (case-lambda
59963      ((mod-path_0 sym_0)
59964       (begin
59965         (dynamic-require-for-syntax_0 mod-path_0 sym_0 unsafe-undefined)))
59966      ((mod-path_0 sym_0 fail-k8_0)
59967       (dynamic-require-for-syntax_0 mod-path_0 sym_0 fail-k8_0))))))
59968(define 1/load
59969  (|#%name|
59970   load
59971   (lambda (s_0)
59972     (begin
59973       (begin
59974         (if (path-string? s_0)
59975           (void)
59976           (raise-argument-error 'load "path-string?" s_0))
59977         (let ((p_0 (->path s_0)))
59978           (call-with-current-load-relative-directory
59979            p_0
59980            (lambda () (|#%app| (1/current-load) p_0 #f)))))))))
59981(define 1/load-extension
59982  (|#%name|
59983   load-extension
59984   (lambda (s_0)
59985     (begin
59986       (begin
59987         (if (path-string? s_0)
59988           (void)
59989           (raise-argument-error 'load-extension "path-string?" s_0))
59990         (let ((p_0 (->path s_0)))
59991           (call-with-current-load-relative-directory
59992            p_0
59993            (lambda () (|#%app| (current-load-extension) p_0 #f)))))))))
59994(define call-with-current-load-relative-directory
59995  (lambda (p_0 thunk_0)
59996    (call-with-values
59997     (lambda () (split-path p_0))
59998     (case-lambda
59999      ((base_0 name_0 dir?_0)
60000       (with-continuation-mark*
60001        authentic
60002        parameterization-key
60003        (let ((app_0 (continuation-mark-set-first #f parameterization-key)))
60004          (extend-parameterization
60005           app_0
60006           current-load-relative-directory
60007           (if (eq? base_0 'relative)
60008             (current-directory)
60009             (path->complete-path base_0))))
60010        (|#%app| thunk_0)))
60011      (args (raise-binding-result-arity-error 3 args))))))
60012(define 1/load/use-compiled
60013  (|#%name|
60014   load/use-compiled
60015   (lambda (f_0)
60016     (begin
60017       (begin
60018         (if (path-string? f_0)
60019           (void)
60020           (raise-argument-error 'load/use-compiled "path-string?" f_0))
60021         (let ((p_0 (->path f_0)))
60022           (|#%app| (1/current-load/use-compiled) p_0 #f)))))))
60023(define embedded-load
60024  (let ((embedded-load_0
60025         (|#%name|
60026          embedded-load
60027          (lambda (start2_0 end3_0 bstr4_0 as-predefined?5_0 in-path1_0)
60028            (begin
60029              (let ((s_0
60030                     (if bstr4_0
60031                       bstr4_0
60032                       (let ((path_0
60033                              (if (bytes? in-path1_0)
60034                                (bytes->path in-path1_0)
60035                                (if (string? in-path1_0)
60036                                  in-path1_0
60037                                  (find-executable-path
60038                                   (find-system-path 'exec-file)
60039                                   #f)))))
60040                         (let ((start_0
60041                                (if (string? start2_0)
60042                                  (let ((or-part_0
60043                                         (|#%app| 1/string->number start2_0)))
60044                                    (if or-part_0 or-part_0 0))
60045                                  start2_0)))
60046                           (let ((end_0
60047                                  (if (string? end3_0)
60048                                    (let ((or-part_0
60049                                           (|#%app| 1/string->number end3_0)))
60050                                      (if or-part_0 or-part_0 0))
60051                                    (if end3_0 end3_0 (file-size path_0)))))
60052                             (let ((temp10_0
60053                                    (lambda ()
60054                                      (begin
60055                                        (file-position
60056                                         (current-input-port)
60057                                         start_0)
60058                                        (read-bytes
60059                                         (max 0 (- end_0 start_0)))))))
60060                               (with-input-from-file.1
60061                                'binary
60062                                path_0
60063                                temp10_0))))))))
60064                (let ((p_0 (open-input-bytes s_0)))
60065                  (letrec*
60066                   ((loop_0
60067                     (|#%name|
60068                      loop
60069                      (lambda ()
60070                        (begin
60071                          (let ((e_0
60072                                 (with-continuation-mark*
60073                                  push-authentic
60074                                  parameterization-key
60075                                  (extend-parameterization
60076                                   (continuation-mark-set-first
60077                                    #f
60078                                    parameterization-key)
60079                                   1/read-accept-compiled
60080                                   #t
60081                                   1/read-accept-reader
60082                                   #t
60083                                   1/read-accept-lang
60084                                   #t
60085                                   read-on-demand-source
60086                                   #t)
60087                                  (1/read p_0))))
60088                            (if (eof-object? e_0)
60089                              (void)
60090                              (begin
60091                                (with-continuation-mark*
60092                                 push-authentic
60093                                 parameterization-key
60094                                 (extend-parameterization
60095                                  (continuation-mark-set-first
60096                                   #f
60097                                   parameterization-key)
60098                                  current-module-declare-as-predefined
60099                                  as-predefined?5_0)
60100                                 (|#%app| (1/current-eval) e_0))
60101                                (loop_0)))))))))
60102                   (loop_0)))))))))
60103    (case-lambda
60104     ((start_0 end_0 bstr_0 as-predefined?_0)
60105      (embedded-load_0 start_0 end_0 bstr_0 as-predefined?_0 #f))
60106     ((start_0 end_0 bstr_0 as-predefined?_0 in-path1_0)
60107      (embedded-load_0 start_0 end_0 bstr_0 as-predefined?_0 in-path1_0)))))
60108(define ->path (lambda (s_0) (if (string? s_0) (string->path s_0) s_0)))
60109(define find-main-collects
60110  (lambda ()
60111    (cache-configuration
60112     0
60113     (lambda ()
60114       (exe-relative-path->complete-path (find-system-path 'collects-dir))))))
60115(define find-main-config
60116  (lambda ()
60117    (cache-configuration
60118     1
60119     (lambda ()
60120       (exe-relative-path->complete-path (find-system-path 'config-dir))))))
60121(define exe-relative-path->complete-path
60122  (lambda (collects-path_0)
60123    (if (complete-path? collects-path_0)
60124      (simplify-path collects-path_0)
60125      (if (absolute-path? collects-path_0)
60126        (let ((exec_0
60127               (call-in-original-directory
60128                (lambda ()
60129                  (let ((app_0
60130                         (find-executable-path (find-system-path 'exec-file))))
60131                    (path->complete-path
60132                     app_0
60133                     (find-system-path 'orig-dir)))))))
60134          (call-with-values
60135           (lambda () (split-path exec_0))
60136           (case-lambda
60137            ((base_0 name_0 dir?_0)
60138             (simplify-path (path->complete-path collects-path_0 base_0)))
60139            (args (raise-binding-result-arity-error 3 args)))))
60140        (let ((p_0
60141               (call-in-original-directory
60142                (lambda ()
60143                  (find-executable-path
60144                   (find-system-path 'exec-file)
60145                   collects-path_0
60146                   #t)))))
60147          (if p_0 (simplify-path p_0) #f))))))
60148(define call-in-original-directory
60149  (lambda (thunk_0)
60150    (with-continuation-mark*
60151     authentic
60152     parameterization-key
60153     (let ((app_0 (continuation-mark-set-first #f parameterization-key)))
60154       (extend-parameterization
60155        app_0
60156        current-directory
60157        (find-system-path 'orig-dir)))
60158     (|#%app| thunk_0))))
60159(define encoded-link-path?
60160  (lambda (p_0)
60161    (let ((or-part_0 (path-string? p_0)))
60162      (if or-part_0
60163        or-part_0
60164        (let ((or-part_1 (path-bytes? p_0)))
60165          (if or-part_1
60166            or-part_1
60167            (if (pair? p_0)
60168              (if (list? p_0) (andmap_2344 path-element-bytes/same/up? p_0) #f)
60169              #f)))))))
60170(define path-bytes?
60171  (lambda (p_0)
60172    (if (bytes? p_0)
60173      (if (positive? (unsafe-bytes-length p_0))
60174        (call-with-values
60175         (lambda ()
60176           (begin (check-bytes p_0) (values p_0 (unsafe-bytes-length p_0))))
60177         (case-lambda
60178          ((vec_0 len_0)
60179           (begin
60180             #f
60181             (letrec*
60182              ((for-loop_0
60183                (|#%name|
60184                 for-loop
60185                 (lambda (result_0 pos_0)
60186                   (begin
60187                     (if (unsafe-fx< pos_0 len_0)
60188                       (let ((c_0 (unsafe-bytes-ref vec_0 pos_0)))
60189                         (let ((result_1 (not (eqv? c_0 0))))
60190                           (let ((result_2 (values result_1)))
60191                             (if (if (not
60192                                      (let ((x_0 (list c_0))) (not result_2)))
60193                                   #t
60194                                   #f)
60195                               (for-loop_0 result_2 (unsafe-fx+ 1 pos_0))
60196                               result_2))))
60197                       result_0))))))
60198              (for-loop_0 #t 0))))
60199          (args (raise-binding-result-arity-error 2 args))))
60200        #f)
60201      #f)))
60202(define path-element-bytes/same/up?
60203  (lambda (p_0)
60204    (let ((or-part_0 (eq? p_0 'up)))
60205      (if or-part_0
60206        or-part_0
60207        (let ((or-part_1 (eq? p_0 'same)))
60208          (if or-part_1
60209            or-part_1
60210            (if (path-bytes? p_0)
60211              (let ((p_1
60212                     (bytes->path-element
60213                      p_0
60214                      (system-path-convention-type)
60215                      #t)))
60216                (if p_1 (relative-path? p_1) #f))
60217              #f)))))))
60218(define decode-link-path
60219  (lambda (p_0)
60220    (if (path-string? p_0)
60221      p_0
60222      (if (bytes? p_0)
60223        (bytes->path p_0)
60224        (letrec*
60225         ((loop_0
60226           (|#%name|
60227            loop
60228            (lambda (path_0 p_1)
60229              (begin
60230                (if (null? p_1)
60231                  path_0
60232                  (let ((elem_0
60233                         (if (bytes? (car p_1))
60234                           (bytes->path-element (car p_1))
60235                           (car p_1))))
60236                    (let ((app_0
60237                           (if path_0 (build-path path_0 elem_0) elem_0)))
60238                      (loop_0 app_0 (cdr p_1))))))))))
60239         (loop_0 #f p_0))))))
60240(define finish_3090
60241  (make-struct-type-install-properties
60242   '(shadow-directory)
60243   2
60244   0
60245   #f
60246   (list (cons prop:authentic #t))
60247   (current-inspector)
60248   #f
60249   '(0 1)
60250   #f
60251   'shadow-directory))
60252(define struct:shadow-directory
60253  (make-record-type-descriptor*
60254   'shadow-directory
60255   #f
60256   (|#%nongenerative-uid| shadow-directory)
60257   #f
60258   #f
60259   2
60260   0))
60261(define effect_2776 (finish_3090 struct:shadow-directory))
60262(define shadow-directory1.1
60263  (|#%name|
60264   shadow-directory
60265   (record-constructor
60266    (make-record-constructor-descriptor struct:shadow-directory #f #f))))
60267(define shadow-directory?
60268  (|#%name| shadow-directory? (record-predicate struct:shadow-directory)))
60269(define shadow-directory-evt
60270  (|#%name| shadow-directory-evt (record-accessor struct:shadow-directory 0)))
60271(define shadow-directory-table
60272  (|#%name|
60273   shadow-directory-table
60274   (record-accessor struct:shadow-directory 1)))
60275(define use-shadow-directory?
60276  (let ((v_0 (system-type 'fs-change)))
60277    (if (eq? 'scalable (vector-ref v_0 1))
60278      (eq? 'low-latency (vector-ref v_0 2))
60279      #f)))
60280(define make-cache (lambda () (if use-shadow-directory? (make-weak-hash) #f)))
60281(define cell.1$2 (unsafe-make-place-local (make-cache)))
60282(define shadow-directory-place-init!
60283  (lambda () (unsafe-place-local-set! cell.1$2 (make-cache))))
60284(define lookup-shadow-directory
60285  (lambda (orig_0)
60286    (let ((sd_0
60287           (call-as-atomic
60288            (lambda ()
60289              (hash-ref (unsafe-place-local-ref cell.1$2) orig_0 #f)))))
60290      (if sd_0
60291        (if (sync/timeout 0 (shadow-directory-evt sd_0))
60292          (begin
60293            (call-as-atomic
60294             (lambda ()
60295               (hash-remove! (unsafe-place-local-ref cell.1$2) orig_0)))
60296            (lookup-shadow-directory orig_0))
60297          sd_0)
60298        (let ((evt_0 (filesystem-change-evt orig_0 (lambda () #f))))
60299          (if evt_0
60300            (let ((table_0
60301                   (let ((lst_0 (directory-list orig_0)))
60302                     (begin
60303                       (letrec*
60304                        ((for-loop_0
60305                          (|#%name|
60306                           for-loop
60307                           (lambda (table_0 lst_1)
60308                             (begin
60309                               (if (pair? lst_1)
60310                                 (let ((p_0 (unsafe-car lst_1)))
60311                                   (let ((rest_0 (unsafe-cdr lst_1)))
60312                                     (let ((table_1
60313                                            (if (directory-exists?
60314                                                 (build-path orig_0 p_0))
60315                                              (let ((table_1
60316                                                     (call-with-values
60317                                                      (lambda ()
60318                                                        (values
60319                                                         (normal-case-path p_0)
60320                                                         #t))
60321                                                      (case-lambda
60322                                                       ((key_0 val_0)
60323                                                        (hash-set
60324                                                         table_0
60325                                                         key_0
60326                                                         val_0))
60327                                                       (args
60328                                                        (raise-binding-result-arity-error
60329                                                         2
60330                                                         args))))))
60331                                                (values table_1))
60332                                              table_0)))
60333                                       (for-loop_0 table_1 rest_0))))
60334                                 table_0))))))
60335                        (for-loop_0 hash2725 lst_0))))))
60336              (let ((sd_1 (shadow-directory1.1 evt_0 table_0)))
60337                (begin
60338                  (call-as-atomic
60339                   (lambda ()
60340                     (hash-set!
60341                      (unsafe-place-local-ref cell.1$2)
60342                      orig_0
60343                      sd_1)))
60344                  sd_1)))
60345            #f))))))
60346(define directory-exists?/shadow-filesystem
60347  (lambda (p_0 orig_0 subpath_0)
60348    (if (not (unsafe-place-local-ref cell.1$2))
60349      (directory-exists? p_0)
60350      (let ((sd_0 (lookup-shadow-directory orig_0)))
60351        (if (not sd_0)
60352          (directory-exists? p_0)
60353          (if sd_0
60354            (let ((ht_0 (shadow-directory-table sd_0)))
60355              (hash-ref ht_0 (normal-case-path subpath_0) #f))
60356            (void)))))))
60357(define relative-path-string?
60358  (lambda (s_0) (if (path-string? s_0) (relative-path? s_0) #f)))
60359(define check-collection
60360  (lambda (who_0 s_0 l_0)
60361    (begin
60362      (if (relative-path-string? s_0)
60363        (void)
60364        (raise-argument-error who_0 "(and/c path-string? relative-path?)" s_0))
60365      (if (if (list? l_0) (andmap_2344 relative-path-string? l_0) #f)
60366        (void)
60367        (raise-argument-error
60368         who_0
60369         "(listof (and/c path-string? relative-path?))"
60370         l_0)))))
60371(define check-fail
60372  (lambda (who_0 fail_0)
60373    (if (if (procedure? fail_0) (procedure-arity-includes? fail_0 1) #f)
60374      (void)
60375      (raise-argument-error who_0 "(procedure-arity-includes/c 1)" fail_0))))
60376(define 1/collection-path
60377  (|#%name|
60378   collection-path
60379   (lambda (fail_0 collection_0 collection-path_0)
60380     (begin
60381       (begin
60382         (check-collection 'collection-path collection_0 collection-path_0)
60383         (check-fail 'collection-path fail_0)
60384         (find-col-file fail_0 collection_0 collection-path_0 #f #f))))))
60385(define 1/collection-file-path
60386  (|#%name|
60387   collection-file-path
60388   (lambda (fail_0
60389            check-compiled?_0
60390            file-name_0
60391            collection_0
60392            collection-path_0)
60393     (begin
60394       (begin
60395         (if (relative-path-string? file-name_0)
60396           (void)
60397           (raise-argument-error
60398            'collection-file-path
60399            "(and/c path-string? relative-path?)"
60400            file-name_0))
60401         (check-collection
60402          'collection-file-path
60403          collection_0
60404          collection-path_0)
60405         (check-fail 'collection-file-path fail_0)
60406         (find-col-file
60407          fail_0
60408          collection_0
60409          collection-path_0
60410          file-name_0
60411          check-compiled?_0))))))
60412(define get-config-table
60413  (lambda (d_0)
60414    (let ((p_0 (if d_0 (build-path d_0 "config.rktd") #f)))
60415      (let ((or-part_0
60416             (if p_0
60417               (if (file-exists? p_0)
60418                 (let ((temp6_0
60419                        (lambda ()
60420                          (let ((v_0
60421                                 (call-with-default-reading-parameterization
60422                                  1/read)))
60423                            (if (hash? v_0) v_0 #f)))))
60424                   (with-input-from-file.1 'binary p_0 temp6_0))
60425                 #f)
60426               #f)))
60427        (if or-part_0 or-part_0 hash2725)))))
60428(define get-installation-name
60429  (lambda (config-table_0)
60430    (hash-ref config-table_0 'installation-name (version))))
60431(define coerce-to-relative-path
60432  (lambda (p_0)
60433    (if (string? p_0)
60434      (string->path p_0)
60435      (if (bytes? p_0) (bytes->path p_0) p_0))))
60436(define coerce-to-path
60437  (lambda (p_0)
60438    (if (string? p_0)
60439      (collects-relative-path->complete-path (string->path p_0))
60440      (if (bytes? p_0)
60441        (collects-relative-path->complete-path (bytes->path p_0))
60442        (if (path? p_0) (collects-relative-path->complete-path p_0) p_0)))))
60443(define collects-relative-path->complete-path
60444  (lambda (p_0)
60445    (if (complete-path? p_0)
60446      p_0
60447      (path->complete-path
60448       p_0
60449       (let ((or-part_0 (find-main-collects)))
60450         (if or-part_0 or-part_0 (current-directory)))))))
60451(define add-config-search
60452  (lambda (ht_0 key_0 orig-l_0)
60453    (let ((l_0 (hash-ref ht_0 key_0 #f)))
60454      (if l_0
60455        (letrec*
60456         ((loop_0
60457           (|#%name|
60458            loop
60459            (lambda (l_1)
60460              (begin
60461                (if (null? l_1)
60462                  null
60463                  (if (not (car l_1))
60464                    (append orig-l_0 (loop_0 (cdr l_1)))
60465                    (let ((app_0 (coerce-to-path (car l_1))))
60466                      (cons app_0 (loop_0 (cdr l_1)))))))))))
60467         (loop_0 l_0))
60468        orig-l_0))))
60469(define 1/find-library-collection-links
60470  (|#%name|
60471   find-library-collection-links
60472   (lambda ()
60473     (begin
60474       (let ((ht_0 (get-config-table (find-main-config))))
60475         (let ((lf_0
60476                (coerce-to-path
60477                 (let ((or-part_0 (hash-ref ht_0 'links-file #f)))
60478                   (if or-part_0
60479                     or-part_0
60480                     (build-path
60481                      (let ((or-part_1 (hash-ref ht_0 'share-dir #f)))
60482                        (if or-part_1 or-part_1 (build-path 'up "share")))
60483                      "links.rktd"))))))
60484           (let ((app_0 (list #f)))
60485             (let ((app_1
60486                    (if (if (1/use-user-specific-search-paths)
60487                          (1/use-collection-link-paths)
60488                          #f)
60489                      (list
60490                       (let ((app_1 (find-system-path 'addon-dir)))
60491                         (build-path
60492                          app_1
60493                          (get-installation-name ht_0)
60494                          "links.rktd")))
60495                      null)))
60496               (append
60497                app_0
60498                app_1
60499                (if (1/use-collection-link-paths)
60500                  (add-config-search ht_0 'links-search-files (list lf_0))
60501                  null))))))))))
60502(define cell.1$1 (unsafe-make-place-local (make-weak-hash)))
60503(define collection-place-init!
60504  (lambda () (unsafe-place-local-set! cell.1$1 (make-weak-hash))))
60505(define stamp-prompt-tag (make-continuation-prompt-tag 'stamp))
60506(define file->stamp
60507  (lambda (path_0 old-stamp_0)
60508    (if (if old-stamp_0
60509          (if (cdr old-stamp_0) (not (sync/timeout 0 (cdr old-stamp_0))) #f)
60510          #f)
60511      old-stamp_0
60512      (call-with-continuation-prompt
60513       (lambda ()
60514         (call-with-exception-handler
60515          (lambda (exn_0)
60516            (abort-current-continuation
60517             stamp-prompt-tag
60518             (if (exn:fail:filesystem? exn_0)
60519               (lambda () #f)
60520               (lambda () (raise exn_0)))))
60521          (lambda ()
60522            (let ((dir-evt_0
60523                   (if (vector-ref (system-type 'fs-change) 2)
60524                     (letrec*
60525                      ((loop_0
60526                        (|#%name|
60527                         loop
60528                         (lambda (path_1)
60529                           (begin
60530                             (call-with-values
60531                              (lambda () (split-path path_1))
60532                              (case-lambda
60533                               ((base_0 name_0 dir?_0)
60534                                (if (path? base_0)
60535                                  (if (directory-exists? base_0)
60536                                    (filesystem-change-evt
60537                                     base_0
60538                                     (lambda () #f))
60539                                    (loop_0 base_0))
60540                                  #f))
60541                               (args
60542                                (raise-binding-result-arity-error
60543                                 3
60544                                 args)))))))))
60545                      (loop_0 path_0))
60546                     #f)))
60547              (if (not (file-exists? path_0))
60548                (cons #f dir-evt_0)
60549                (let ((evt_0
60550                       (if (vector-ref (system-type 'fs-change) 2)
60551                         (filesystem-change-evt path_0 (lambda () #f))
60552                         #f)))
60553                  (begin
60554                    (if dir-evt_0
60555                      (filesystem-change-evt-cancel dir-evt_0)
60556                      (void))
60557                    (cons (file->bytes path_0) evt_0))))))))
60558       stamp-prompt-tag))))
60559(define file->bytes
60560  (lambda (path_0)
60561    (let ((temp8_0
60562           (lambda (p_0)
60563             (let ((bstr_0 (read-bytes 8192 p_0)))
60564               (if (if (bytes? bstr_0)
60565                     (>= (unsafe-bytes-length bstr_0) 8192)
60566                     #f)
60567                 (apply
60568                  bytes-append
60569                  (cons
60570                   bstr_0
60571                   (letrec*
60572                    ((loop_0
60573                      (|#%name|
60574                       loop
60575                       (lambda ()
60576                         (begin
60577                           (let ((bstr_1 (read-bytes 8192 p_0)))
60578                             (if (eof-object? bstr_1)
60579                               null
60580                               (cons bstr_1 (loop_0)))))))))
60581                    (loop_0))))
60582                 bstr_0)))))
60583      (call-with-input-file*.1 'binary path_0 temp8_0))))
60584(define no-file-stamp?
60585  (lambda (a_0)
60586    (let ((or-part_0 (not a_0))) (if or-part_0 or-part_0 (not (car a_0))))))
60587(define get-linked-collections
60588  (lambda (links-path_0)
60589    (call-with-escape-continuation
60590     (lambda (esc_0)
60591       (let ((make-handler_0
60592              (|#%name|
60593               make-handler
60594               (lambda (ts_0)
60595                 (begin
60596                   (lambda (exn_0)
60597                     (begin
60598                       (if (exn:fail? exn_0)
60599                         (let ((l_0 (current-logger)))
60600                           (if (log-level? l_0 'error)
60601                             (let ((app_0
60602                                    (format
60603                                     "error reading collection links file ~s: ~a"
60604                                     links-path_0
60605                                     (exn-message exn_0))))
60606                               (log-message
60607                                l_0
60608                                'error
60609                                app_0
60610                                (current-continuation-marks)))
60611                             (void)))
60612                         (void))
60613                       (if ts_0
60614                         (call-as-atomic
60615                          (lambda ()
60616                            (hash-set!
60617                             (unsafe-place-local-ref cell.1$1)
60618                             links-path_0
60619                             (cons ts_0 hash2610))))
60620                         (void))
60621                       (if (exn:fail? exn_0)
60622                         (|#%app| esc_0 (make-hasheq))
60623                         exn_0))))))))
60624         (call-with-exception-handler
60625          (make-handler_0 #f)
60626          (lambda ()
60627            (let ((links-stamp+cache_0
60628                   (call-as-atomic
60629                    (lambda ()
60630                      (hash-ref
60631                       (unsafe-place-local-ref cell.1$1)
60632                       links-path_0
60633                       nhash2607)))))
60634              (let ((a-links-stamp_0 (car links-stamp+cache_0)))
60635                (let ((ts_0 (file->stamp links-path_0 a-links-stamp_0)))
60636                  (if (equal? ts_0 a-links-stamp_0)
60637                    (cdr links-stamp+cache_0)
60638                    (call-with-exception-handler
60639                     (make-handler_0 ts_0)
60640                     (lambda ()
60641                       (call-with-default-reading-parameterization
60642                        (lambda ()
60643                          (let ((v_0
60644                                 (if (no-file-stamp? ts_0)
60645                                   null
60646                                   (let ((temp10_0
60647                                          (lambda (p_0)
60648                                            (begin0
60649                                              (1/read p_0)
60650                                              (if (eof-object? (1/read p_0))
60651                                                (void)
60652                                                (error
60653                                                 "expected a single S-expression"))))))
60654                                     (call-with-input-file*.1
60655                                      'binary
60656                                      links-path_0
60657                                      temp10_0)))))
60658                            (begin
60659                              (if (if (list? v_0)
60660                                    (andmap_2344
60661                                     (lambda (p_0)
60662                                       (if (list? p_0)
60663                                         (if (let ((or-part_0
60664                                                    (= 2 (length p_0))))
60665                                               (if or-part_0
60666                                                 or-part_0
60667                                                 (= 3 (length p_0))))
60668                                           (if (let ((or-part_0
60669                                                      (string? (car p_0))))
60670                                                 (if or-part_0
60671                                                   or-part_0
60672                                                   (let ((or-part_1
60673                                                          (eq?
60674                                                           'root
60675                                                           (car p_0))))
60676                                                     (if or-part_1
60677                                                       or-part_1
60678                                                       (eq?
60679                                                        'static-root
60680                                                        (car p_0))))))
60681                                             (if (encoded-link-path?
60682                                                  (cadr p_0))
60683                                               (let ((or-part_0
60684                                                      (null? (cddr p_0))))
60685                                                 (if or-part_0
60686                                                   or-part_0
60687                                                   (regexp? (caddr p_0))))
60688                                               #f)
60689                                             #f)
60690                                           #f)
60691                                         #f))
60692                                     v_0)
60693                                    #f)
60694                                (void)
60695                                (error "ill-formed content"))
60696                              (let ((ht_0 (make-hasheq)))
60697                                (let ((dir_0
60698                                       (call-with-values
60699                                        (lambda () (split-path links-path_0))
60700                                        (case-lambda
60701                                         ((base_0 name_0 dir?_0) base_0)
60702                                         (args
60703                                          (raise-binding-result-arity-error
60704                                           3
60705                                           args))))))
60706                                  (begin
60707                                    (for-each_2380
60708                                     (lambda (p_0)
60709                                       (if (let ((or-part_0
60710                                                  (null? (cddr p_0))))
60711                                             (if or-part_0
60712                                               or-part_0
60713                                               (regexp-match?
60714                                                (caddr p_0)
60715                                                (version))))
60716                                         (let ((dir_1
60717                                                (simplify-path
60718                                                 (path->complete-path
60719                                                  (decode-link-path (cadr p_0))
60720                                                  dir_0))))
60721                                           (if (eq? (car p_0) 'static-root)
60722                                             (for-each_2380
60723                                              (lambda (sub_0)
60724                                                (if (directory-exists?
60725                                                     (build-path dir_1 sub_0))
60726                                                  (let ((k_0
60727                                                         (string->symbol
60728                                                          (path->string
60729                                                           sub_0))))
60730                                                    (hash-set!
60731                                                     ht_0
60732                                                     k_0
60733                                                     (cons
60734                                                      dir_1
60735                                                      (hash-ref
60736                                                       ht_0
60737                                                       k_0
60738                                                       null))))
60739                                                  (void)))
60740                                              (directory-list dir_1))
60741                                             (if (eq? (car p_0) 'root)
60742                                               (begin
60743                                                 (if (hash-ref ht_0 #f #f)
60744                                                   (void)
60745                                                   (hash-set! ht_0 #f null))
60746                                                 (hash-for-each
60747                                                  ht_0
60748                                                  (lambda (k_0 v_1)
60749                                                    (hash-set!
60750                                                     ht_0
60751                                                     k_0
60752                                                     (cons dir_1 v_1)))))
60753                                               (let ((s_0
60754                                                      (string->symbol
60755                                                       (car p_0))))
60756                                                 (hash-set!
60757                                                  ht_0
60758                                                  s_0
60759                                                  (let ((app_0 (box dir_1)))
60760                                                    (cons
60761                                                     app_0
60762                                                     (hash-ref
60763                                                      ht_0
60764                                                      s_0
60765                                                      null))))))))
60766                                         (void)))
60767                                     v_0)
60768                                    (hash-for-each
60769                                     ht_0
60770                                     (lambda (k_0 v_1)
60771                                       (hash-set! ht_0 k_0 (reverse$1 v_1))))
60772                                    (call-as-atomic
60773                                     (lambda ()
60774                                       (hash-set!
60775                                        (unsafe-place-local-ref cell.1$1)
60776                                        links-path_0
60777                                        (cons ts_0 ht_0))))
60778                                    ht_0))))))))))))))))))))
60779(define normalize-collection-reference
60780  (lambda (collection_0 collection-path_0)
60781    (if (string? collection_0)
60782      (let ((m_0 (regexp-match-positions rx2897 collection_0)))
60783        (if m_0
60784          (if (let ((app_0 (caar m_0)))
60785                (= app_0 (sub1 (string-length collection_0))))
60786            (values (substring collection_0 0 (caar m_0)) collection-path_0)
60787            (let ((app_0 (substring collection_0 0 (caar m_0))))
60788              (values
60789               app_0
60790               (cons (substring collection_0 (cdar m_0)) collection-path_0))))
60791          (values collection_0 collection-path_0)))
60792      (call-with-values
60793       (lambda () (split-path collection_0))
60794       (case-lambda
60795        ((base_0 name_0 dir?_0)
60796         (if (eq? base_0 'relative)
60797           (values name_0 collection-path_0)
60798           (normalize-collection-reference
60799            base_0
60800            (cons name_0 collection-path_0))))
60801        (args (raise-binding-result-arity-error 3 args)))))))
60802(define find-col-file
60803  (lambda (fail_0
60804           collection-in_0
60805           collection-path-in_0
60806           file-name_0
60807           check-compiled?_0)
60808    (call-with-values
60809     (lambda ()
60810       (normalize-collection-reference collection-in_0 collection-path-in_0))
60811     (case-lambda
60812      ((collection_0 collection-path_0)
60813       (let ((all-paths_0
60814              (let ((sym_0
60815                     (string->symbol
60816                      (if (path? collection_0)
60817                        (path->string collection_0)
60818                        collection_0))))
60819                (letrec*
60820                 ((loop_0
60821                   (|#%name|
60822                    loop
60823                    (lambda (l_0)
60824                      (begin
60825                        (if (null? l_0)
60826                          null
60827                          (if (not (car l_0))
60828                            (let ((app_0 (1/current-library-collection-paths)))
60829                              (append app_0 (loop_0 (cdr l_0))))
60830                            (if (hash? (car l_0))
60831                              (let ((app_0
60832                                     (map_1346
60833                                      box
60834                                      (hash-ref (car l_0) sym_0 null))))
60835                                (let ((app_1 (hash-ref (car l_0) #f null)))
60836                                  (append app_0 app_1 (loop_0 (cdr l_0)))))
60837                              (let ((ht_0 (get-linked-collections (car l_0))))
60838                                (let ((app_0 (hash-ref ht_0 sym_0 null)))
60839                                  (let ((app_1 (hash-ref ht_0 #f null)))
60840                                    (append
60841                                     app_0
60842                                     app_1
60843                                     (loop_0 (cdr l_0))))))))))))))
60844                 (loop_0 (1/current-library-collection-links))))))
60845         (let ((done_0
60846                (|#%name|
60847                 done
60848                 (lambda (p_0)
60849                   (begin
60850                     (if file-name_0 (build-path p_0 file-name_0) p_0))))))
60851           (let ((*build-path-rep_0
60852                  (|#%name|
60853                   *build-path-rep
60854                   (lambda (p_0 c_0)
60855                     (begin
60856                       (if (path? p_0) (build-path p_0 c_0) (unbox p_0)))))))
60857             (let ((*directory-exists?_0
60858                    (|#%name|
60859                     *directory-exists?
60860                     (lambda (orig_0 collection_1 p_0)
60861                       (begin
60862                         (if (path? orig_0)
60863                           (directory-exists?/shadow-filesystem
60864                            p_0
60865                            orig_0
60866                            collection_1)
60867                           #t))))))
60868               (let ((to-string_0
60869                      (|#%name|
60870                       to-string
60871                       (lambda (p_0)
60872                         (begin (if (path? p_0) (path->string p_0) p_0))))))
60873                 (letrec*
60874                  ((cloop_0
60875                    (|#%name|
60876                     cloop
60877                     (lambda (paths_0 found-col_0)
60878                       (begin
60879                         (if (null? paths_0)
60880                           (if found-col_0
60881                             (done_0 found-col_0)
60882                             (let ((rest-coll_0
60883                                    (if (null? collection-path_0)
60884                                      ""
60885                                      (apply
60886                                       string-append
60887                                       (letrec*
60888                                        ((loop_0
60889                                          (|#%name|
60890                                           loop
60891                                           (lambda (cp_0)
60892                                             (begin
60893                                               (if (null? (cdr cp_0))
60894                                                 (list
60895                                                  (to-string_0 (car cp_0)))
60896                                                 (let ((app_0
60897                                                        (to-string_0
60898                                                         (car cp_0))))
60899                                                   (list*
60900                                                    app_0
60901                                                    "/"
60902                                                    (loop_0 (cdr cp_0))))))))))
60903                                        (loop_0 collection-path_0))))))
60904                               (letrec*
60905                                ((filter_0
60906                                  (|#%name|
60907                                   filter
60908                                   (lambda (f_0 l_0)
60909                                     (begin
60910                                       (if (null? l_0)
60911                                         null
60912                                         (if (|#%app| f_0 (car l_0))
60913                                           (let ((app_0 (car l_0)))
60914                                             (cons
60915                                              app_0
60916                                              (filter_0 f_0 (cdr l_0))))
60917                                           (filter_0 f_0 (cdr l_0)))))))))
60918                                (|#%app|
60919                                 fail_0
60920                                 (let ((app_0
60921                                        (if (null? collection-path_0)
60922                                          (to-string_0 collection_0)
60923                                          (string-append
60924                                           (to-string_0 collection_0)
60925                                           "/"
60926                                           rest-coll_0))))
60927                                   (let ((app_1
60928                                          (apply
60929                                           string-append
60930                                           (map_1346
60931                                            (lambda (p_0)
60932                                              (format "\n ~a ~a" " " p_0))
60933                                            (let ((len_0 (length all-paths_0)))
60934                                              (let ((clen_0
60935                                                     (length
60936                                                      (1/current-library-collection-paths))))
60937                                                (let ((len_1 len_0))
60938                                                  (if (< (- len_1 clen_0) 5)
60939                                                    all-paths_0
60940                                                    (let ((app_1
60941                                                           (1/current-library-collection-paths)))
60942                                                      (append
60943                                                       app_1
60944                                                       (list
60945                                                        (format
60946                                                         "... [~a additional linked and package directories]"
60947                                                         (-
60948                                                          len_1
60949                                                          clen_0)))))))))))))
60950                                     (format
60951                                      "collection not found\n  collection: ~s\n  in collection directories:~a~a"
60952                                      app_0
60953                                      app_1
60954                                      (if (ormap_2765 box? all-paths_0)
60955                                        (format
60956                                         "\n   sub-collection: ~s\n  in parent directories:~a"
60957                                         rest-coll_0
60958                                         (apply
60959                                          string-append
60960                                          (map_1346
60961                                           (lambda (p_0)
60962                                             (format "\n   ~a" (unbox p_0)))
60963                                           (filter_0 box? all-paths_0))))
60964                                        ""))))))))
60965                           (let ((dir_0
60966                                  (*build-path-rep_0
60967                                   (car paths_0)
60968                                   collection_0)))
60969                             (if (*directory-exists?_0
60970                                  (car paths_0)
60971                                  collection_0
60972                                  dir_0)
60973                               (let ((cpath_0
60974                                      (apply
60975                                       build-path
60976                                       dir_0
60977                                       collection-path_0)))
60978                                 (if (if (null? collection-path_0)
60979                                       #t
60980                                       (directory-exists? cpath_0))
60981                                   (if file-name_0
60982                                     (if (let ((or-part_0
60983                                                (file-exists?/maybe-compiled
60984                                                 cpath_0
60985                                                 file-name_0
60986                                                 check-compiled?_0)))
60987                                           (if or-part_0
60988                                             or-part_0
60989                                             (let ((alt-file-name_0
60990                                                    (let ((file-name_1
60991                                                           (if (path?
60992                                                                file-name_0)
60993                                                             (path->string
60994                                                              file-name_0)
60995                                                             file-name_0)))
60996                                                      (let ((len_0
60997                                                             (string-length
60998                                                              file-name_1)))
60999                                                        (if (>= len_0 4)
61000                                                          (if (string=?
61001                                                               ".rkt"
61002                                                               (substring
61003                                                                file-name_1
61004                                                                (- len_0 4)))
61005                                                            (string-append
61006                                                             (substring
61007                                                              file-name_1
61008                                                              0
61009                                                              (- len_0 4))
61010                                                             ".ss")
61011                                                            #f)
61012                                                          #f)))))
61013                                               (if alt-file-name_0
61014                                                 (file-exists?/maybe-compiled
61015                                                  cpath_0
61016                                                  alt-file-name_0
61017                                                  check-compiled?_0)
61018                                                 #f))))
61019                                       (done_0 cpath_0)
61020                                       (let ((app_0 (cdr paths_0)))
61021                                         (cloop_0
61022                                          app_0
61023                                          (if found-col_0
61024                                            found-col_0
61025                                            cpath_0))))
61026                                     (done_0 cpath_0))
61027                                   (cloop_0 (cdr paths_0) found-col_0)))
61028                               (cloop_0 (cdr paths_0) found-col_0)))))))))
61029                  (cloop_0 all-paths_0 #f))))))))
61030      (args (raise-binding-result-arity-error 2 args))))))
61031(define file-exists?/maybe-compiled
61032  (lambda (dir_0 path_0 check-compiled?_0)
61033    (let ((or-part_0 (file-exists? (build-path dir_0 path_0))))
61034      (if or-part_0
61035        or-part_0
61036        (if check-compiled?_0
61037          (let ((sfx_0 #vu8(46 122 111)))
61038            (let ((try-path_0
61039                   (begin-unsafe
61040                    (path-adjust-extension
61041                     'path-add-extension
61042                     #vu8(95)
61043                     subbytes
61044                     path_0
61045                     sfx_0
61046                     #t))))
61047              (let ((modes_0 (1/use-compiled-file-paths)))
61048                (let ((roots_0 (1/current-compiled-file-roots)))
61049                  (let ((modes_1 modes_0) (try-path_1 try-path_0))
61050                    (ormap_2765
61051                     (lambda (d_0)
61052                       (ormap_2765
61053                        (lambda (mode_0)
61054                          (file-exists?
61055                           (let ((dir_1
61056                                  (if (eq? d_0 'same)
61057                                    dir_0
61058                                    (if (relative-path? d_0)
61059                                      (build-path dir_0 d_0)
61060                                      (reroot-path dir_0 d_0)))))
61061                             (build-path dir_1 mode_0 try-path_1))))
61062                        modes_1))
61063                     roots_0))))))
61064          #f)))))
61065(define 1/find-library-collection-paths
61066  (let ((find-library-collection-paths_0
61067         (|#%name|
61068          find-library-collection-paths
61069          (lambda (extra-collects-dirs1_0 post-collects-dirs2_0)
61070            (begin
61071              (let ((user-too?_0 (1/use-user-specific-search-paths)))
61072                (let ((cons-if_0
61073                       (|#%name|
61074                        cons-if
61075                        (lambda (f_0 r_0)
61076                          (begin (if f_0 (cons f_0 r_0) r_0))))))
61077                  (let ((config-table_0 (get-config-table (find-main-config))))
61078                    (let ((cons-if_1 cons-if_0) (user-too?_1 user-too?_0))
61079                      (let ((app_0
61080                             (if user-too?_1
61081                               (let ((c_0
61082                                      (environment-variables-ref
61083                                       (current-environment-variables)
61084                                       #vu8(80 76 84 67 79 76 76 69 67 84 83))))
61085                                 (if c_0 (bytes->string/locale c_0 '#\x3f) ""))
61086                               "")))
61087                        (path-list-string->path-list
61088                         app_0
61089                         (add-config-search
61090                          config-table_0
61091                          'collects-search-dirs
61092                          (let ((app_1
61093                                 (if user-too?_1
61094                                   (let ((app_1 (find-system-path 'addon-dir)))
61095                                     (build-path
61096                                      app_1
61097                                      (get-installation-name config-table_0)
61098                                      "collects"))
61099                                   #f)))
61100                            (cons-if_1
61101                             app_1
61102                             (letrec*
61103                              ((loop_0
61104                                (|#%name|
61105                                 loop
61106                                 (lambda (l_0)
61107                                   (begin
61108                                     (if (null? l_0)
61109                                       null
61110                                       (let ((collects-path_0 (car l_0)))
61111                                         (let ((v_0
61112                                                (exe-relative-path->complete-path
61113                                                 collects-path_0)))
61114                                           (if v_0
61115                                             (let ((app_2
61116                                                    (simplify-path
61117                                                     (path->complete-path
61118                                                      v_0
61119                                                      (current-directory)))))
61120                                               (cons app_2 (loop_0 (cdr l_0))))
61121                                             (loop_0 (cdr l_0)))))))))))
61122                              (loop_0
61123                               (append
61124                                extra-collects-dirs1_0
61125                                (list (find-system-path 'collects-dir))
61126                                post-collects-dirs2_0)))))))))))))))))
61127    (|#%name|
61128     find-library-collection-paths
61129     (case-lambda
61130      (() (begin (find-library-collection-paths_0 null null)))
61131      ((extra-collects-dirs_0 post-collects-dirs2_0)
61132       (find-library-collection-paths_0
61133        extra-collects-dirs_0
61134        post-collects-dirs2_0))
61135      ((extra-collects-dirs1_0)
61136       (find-library-collection-paths_0 extra-collects-dirs1_0 null))))))
61137(define 1/find-compiled-file-roots
61138  (|#%name|
61139   find-compiled-file-roots
61140   (lambda ()
61141     (begin
61142       (let ((ht_0 (get-config-table (find-main-config))))
61143         (let ((paths_0 (hash-ref ht_0 'compiled-file-roots #f)))
61144           (let ((or-part_0
61145                  (if (list? paths_0)
61146                    (map_1346 coerce-to-relative-path paths_0)
61147                    #f)))
61148             (if or-part_0 or-part_0 (list 'same)))))))))
61149(define-values
61150 (prop:readtable prop:readtable? prop:readtable-ref)
61151 (make-struct-type-property 'readtable))
61152(define 1/current-readtable
61153  (make-parameter
61154   #f
61155   (lambda (v_0)
61156     (begin
61157       (if (let ((or-part_0 (not v_0)))
61158             (if or-part_0 or-part_0 (prop:readtable? v_0)))
61159         (void)
61160         (raise-argument-error
61161          'current-readtable
61162          "(or/c prop:readtable? #f)"
61163          v_0))
61164       v_0))
61165   'current-readtable))
61166(define finish_2405
61167  (make-struct-type-install-properties
61168   '(read-config)
61169   7
61170   0
61171   #f
61172   (list (cons prop:authentic #t))
61173   (current-inspector)
61174   #f
61175   '(0 1 2 3 4 5 6)
61176   #f
61177   'read-config/outer))
61178(define struct:read-config/outer
61179  (make-record-type-descriptor*
61180   'read-config
61181   #f
61182   (|#%nongenerative-uid| read-config)
61183   #f
61184   #f
61185   7
61186   0))
61187(define effect_2490 (finish_2405 struct:read-config/outer))
61188(define read-config/outer1.1
61189  (|#%name|
61190   read-config/outer
61191   (record-constructor
61192    (make-record-constructor-descriptor struct:read-config/outer #f #f))))
61193(define read-config/outer?
61194  (|#%name| read-config? (record-predicate struct:read-config/outer)))
61195(define read-config/outer-inner
61196  (|#%name| read-config-inner (record-accessor struct:read-config/outer 0)))
61197(define read-config/outer-wrap
61198  (|#%name| read-config-wrap (record-accessor struct:read-config/outer 1)))
61199(define read-config/outer-line
61200  (|#%name| read-config-line (record-accessor struct:read-config/outer 2)))
61201(define read-config/outer-col
61202  (|#%name| read-config-col (record-accessor struct:read-config/outer 3)))
61203(define read-config/outer-pos
61204  (|#%name| read-config-pos (record-accessor struct:read-config/outer 4)))
61205(define read-config/outer-indentations
61206  (|#%name|
61207   read-config-indentations
61208   (record-accessor struct:read-config/outer 5)))
61209(define read-config/outer-keep-comment?
61210  (|#%name|
61211   read-config-keep-comment?
61212   (record-accessor struct:read-config/outer 6)))
61213(define finish_2733
61214  (make-struct-type-install-properties
61215   '(read-config/inner)
61216   13
61217   0
61218   #f
61219   (list (cons prop:authentic #t))
61220   (current-inspector)
61221   #f
61222   '(0 1 2 3 4 5 6 7 8 9 10 11 12)
61223   #f
61224   'read-config/inner))
61225(define struct:read-config/inner
61226  (make-record-type-descriptor*
61227   'read-config/inner
61228   #f
61229   (|#%nongenerative-uid| read-config/inner)
61230   #f
61231   #f
61232   13
61233   0))
61234(define effect_2436 (finish_2733 struct:read-config/inner))
61235(define read-config/inner2.1
61236  (|#%name|
61237   read-config/inner
61238   (record-constructor
61239    (make-record-constructor-descriptor struct:read-config/inner #f #f))))
61240(define read-config/inner?
61241  (|#%name| read-config/inner? (record-predicate struct:read-config/inner)))
61242(define read-config/inner-readtable
61243  (|#%name|
61244   read-config/inner-readtable
61245   (record-accessor struct:read-config/inner 0)))
61246(define read-config/inner-next-readtable
61247  (|#%name|
61248   read-config/inner-next-readtable
61249   (record-accessor struct:read-config/inner 1)))
61250(define read-config/inner-for-syntax?
61251  (|#%name|
61252   read-config/inner-for-syntax?
61253   (record-accessor struct:read-config/inner 2)))
61254(define read-config/inner-source
61255  (|#%name|
61256   read-config/inner-source
61257   (record-accessor struct:read-config/inner 3)))
61258(define read-config/inner-read-compiled
61259  (|#%name|
61260   read-config/inner-read-compiled
61261   (record-accessor struct:read-config/inner 4)))
61262(define read-config/inner-call-with-root-namespace
61263  (|#%name|
61264   read-config/inner-call-with-root-namespace
61265   (record-accessor struct:read-config/inner 5)))
61266(define read-config/inner-dynamic-require
61267  (|#%name|
61268   read-config/inner-dynamic-require
61269   (record-accessor struct:read-config/inner 6)))
61270(define read-config/inner-module-declared?
61271  (|#%name|
61272   read-config/inner-module-declared?
61273   (record-accessor struct:read-config/inner 7)))
61274(define read-config/inner-coerce
61275  (|#%name|
61276   read-config/inner-coerce
61277   (record-accessor struct:read-config/inner 8)))
61278(define read-config/inner-coerce-key
61279  (|#%name|
61280   read-config/inner-coerce-key
61281   (record-accessor struct:read-config/inner 9)))
61282(define read-config/inner-parameter-override
61283  (|#%name|
61284   read-config/inner-parameter-override
61285   (record-accessor struct:read-config/inner 10)))
61286(define read-config/inner-parameter-cache
61287  (|#%name|
61288   read-config/inner-parameter-cache
61289   (record-accessor struct:read-config/inner 11)))
61290(define read-config/inner-st
61291  (|#%name|
61292   read-config/inner-st
61293   (record-accessor struct:read-config/inner 12)))
61294(define read-config/make
61295  (lambda (readtable_0
61296           next-readtable_0
61297           for-syntax?_0
61298           source_0
61299           wrap_0
61300           read-compiled_0
61301           call-with-root-namespace_0
61302           dynamic-require_0
61303           module-declared?_0
61304           coerce_0
61305           coerce-key_0
61306           line_0
61307           col_0
61308           pos_0
61309           indentations_0
61310           keep-comment?_0
61311           parameter-override_0
61312           parameter-cache_0
61313           st_0)
61314    (read-config/outer1.1
61315     (read-config/inner2.1
61316      readtable_0
61317      next-readtable_0
61318      for-syntax?_0
61319      source_0
61320      read-compiled_0
61321      call-with-root-namespace_0
61322      dynamic-require_0
61323      module-declared?_0
61324      coerce_0
61325      coerce-key_0
61326      parameter-override_0
61327      parameter-cache_0
61328      st_0)
61329     wrap_0
61330     line_0
61331     col_0
61332     pos_0
61333     indentations_0
61334     keep-comment?_0)))
61335(define read-config-wrap (lambda (v_0) (read-config/outer-wrap v_0)))
61336(define read-config-line (lambda (v_0) (read-config/outer-line v_0)))
61337(define read-config-col (lambda (v_0) (read-config/outer-col v_0)))
61338(define read-config-pos (lambda (v_0) (read-config/outer-pos v_0)))
61339(define read-config-indentations
61340  (lambda (v_0) (read-config/outer-indentations v_0)))
61341(define read-config-keep-comment?
61342  (lambda (v_0) (read-config/outer-keep-comment? v_0)))
61343(define read-config-readtable
61344  (lambda (v_0) (read-config/inner-readtable (read-config/outer-inner v_0))))
61345(define read-config-next-readtable
61346  (lambda (v_0)
61347    (read-config/inner-next-readtable (read-config/outer-inner v_0))))
61348(define read-config-for-syntax?
61349  (lambda (v_0) (read-config/inner-for-syntax? (read-config/outer-inner v_0))))
61350(define read-config-source
61351  (lambda (v_0) (read-config/inner-source (read-config/outer-inner v_0))))
61352(define read-config-read-compiled
61353  (lambda (v_0)
61354    (read-config/inner-read-compiled (read-config/outer-inner v_0))))
61355(define read-config-call-with-root-namespace
61356  (lambda (v_0)
61357    (read-config/inner-call-with-root-namespace
61358     (read-config/outer-inner v_0))))
61359(define read-config-dynamic-require
61360  (lambda (v_0)
61361    (read-config/inner-dynamic-require (read-config/outer-inner v_0))))
61362(define read-config-module-declared?
61363  (lambda (v_0)
61364    (read-config/inner-module-declared? (read-config/outer-inner v_0))))
61365(define read-config-coerce
61366  (lambda (v_0) (read-config/inner-coerce (read-config/outer-inner v_0))))
61367(define read-config-coerce-key
61368  (lambda (v_0) (read-config/inner-coerce-key (read-config/outer-inner v_0))))
61369(define read-config-parameter-override
61370  (lambda (v_0)
61371    (read-config/inner-parameter-override (read-config/outer-inner v_0))))
61372(define read-config-parameter-cache
61373  (lambda (v_0)
61374    (read-config/inner-parameter-cache (read-config/outer-inner v_0))))
61375(define read-config-st
61376  (lambda (v_0) (read-config/inner-st (read-config/outer-inner v_0))))
61377(define finish_2658
61378  (make-struct-type-install-properties
61379   '(read-config-state)
61380   2
61381   0
61382   #f
61383   null
61384   (current-inspector)
61385   #f
61386   '()
61387   #f
61388   'read-config-state))
61389(define struct:read-config-state
61390  (make-record-type-descriptor*
61391   'read-config-state
61392   #f
61393   (|#%nongenerative-uid| read-config-state)
61394   #f
61395   #f
61396   2
61397   3))
61398(define effect_2073 (finish_2658 struct:read-config-state))
61399(define read-config-state3.1
61400  (|#%name|
61401   read-config-state
61402   (record-constructor
61403    (make-record-constructor-descriptor struct:read-config-state #f #f))))
61404(define read-config-state?_2637
61405  (|#%name| read-config-state? (record-predicate struct:read-config-state)))
61406(define read-config-state?
61407  (|#%name|
61408   read-config-state?
61409   (lambda (v)
61410     (if (read-config-state?_2637 v)
61411       #t
61412       ($value
61413        (if (impersonator? v)
61414          (read-config-state?_2637 (impersonator-val v))
61415          #f))))))
61416(define read-config-state-accum-str_2333
61417  (|#%name|
61418   read-config-state-accum-str
61419   (record-accessor struct:read-config-state 0)))
61420(define read-config-state-accum-str
61421  (|#%name|
61422   read-config-state-accum-str
61423   (lambda (s)
61424     (if (read-config-state?_2637 s)
61425       (read-config-state-accum-str_2333 s)
61426       ($value
61427        (impersonate-ref
61428         read-config-state-accum-str_2333
61429         struct:read-config-state
61430         0
61431         s
61432         'read-config-state
61433         'accum-str))))))
61434(define read-config-state-graph_2751
61435  (|#%name|
61436   read-config-state-graph
61437   (record-accessor struct:read-config-state 1)))
61438(define read-config-state-graph
61439  (|#%name|
61440   read-config-state-graph
61441   (lambda (s)
61442     (if (read-config-state?_2637 s)
61443       (read-config-state-graph_2751 s)
61444       ($value
61445        (impersonate-ref
61446         read-config-state-graph_2751
61447         struct:read-config-state
61448         1
61449         s
61450         'read-config-state
61451         'graph))))))
61452(define set-read-config-state-accum-str!_2145
61453  (|#%name|
61454   set-read-config-state-accum-str!
61455   (record-mutator struct:read-config-state 0)))
61456(define set-read-config-state-accum-str!
61457  (|#%name|
61458   set-read-config-state-accum-str!
61459   (lambda (s v)
61460     (if (read-config-state?_2637 s)
61461       (set-read-config-state-accum-str!_2145 s v)
61462       ($value
61463        (impersonate-set!
61464         set-read-config-state-accum-str!_2145
61465         struct:read-config-state
61466         0
61467         0
61468         s
61469         v
61470         'read-config-state
61471         'accum-str))))))
61472(define set-read-config-state-graph!_3119
61473  (|#%name|
61474   set-read-config-state-graph!
61475   (record-mutator struct:read-config-state 1)))
61476(define set-read-config-state-graph!
61477  (|#%name|
61478   set-read-config-state-graph!
61479   (lambda (s v)
61480     (if (read-config-state?_2637 s)
61481       (set-read-config-state-graph!_3119 s v)
61482       ($value
61483        (impersonate-set!
61484         set-read-config-state-graph!_3119
61485         struct:read-config-state
61486         1
61487         1
61488         s
61489         v
61490         'read-config-state
61491         'graph))))))
61492(define default-val.1 #f)
61493(define current-read-config
61494  (lambda () (continuation-mark-set-first #f current-read-config #f root-tag)))
61495(define make-read-config.1
61496  (|#%name|
61497   make-read-config
61498   (lambda (call-with-root-namespace10_0
61499            coerce13_0
61500            coerce-key14_0
61501            dynamic-require11_0
61502            for-syntax?5_0
61503            keep-comment?15_0
61504            module-declared?12_0
61505            next-readtable7_0
61506            read-compiled9_0
61507            readtable6_0
61508            source4_0
61509            wrap8_0)
61510     (begin
61511       (let ((readtable_0
61512              (if (eq? readtable6_0 unsafe-undefined)
61513                (1/current-readtable)
61514                readtable6_0)))
61515         (let ((next-readtable_0
61516                (if (eq? next-readtable7_0 unsafe-undefined)
61517                  readtable_0
61518                  next-readtable7_0)))
61519           (let ((read-compiled_0
61520                  (if read-compiled9_0
61521                    read-compiled9_0
61522                    (lambda (in_0)
61523                      (error 'read "no `read-compiled` provided")))))
61524             (let ((call-with-root-namespace_0
61525                    (if call-with-root-namespace10_0
61526                      call-with-root-namespace10_0
61527                      (lambda (thunk_0)
61528                        (error
61529                         'read
61530                         "no `call-with-root-namespace` provided")))))
61531               (let ((dynamic-require_0
61532                      (if dynamic-require11_0
61533                        dynamic-require11_0
61534                        (lambda (mod-path_0 sym_0 failure-k_0)
61535                          (error 'read "no `dynamic-require` provided")))))
61536                 (let ((module-declared?_0
61537                        (if module-declared?12_0
61538                          module-declared?12_0
61539                          (lambda (mod-path_0)
61540                            (error 'read "no `module-declare?` provided")))))
61541                   (let ((coerce_0
61542                          (if coerce13_0
61543                            coerce13_0
61544                            (lambda (for-syntax?_0 v_0 srcloc_0) v_0))))
61545                     (let ((coerce-key_0
61546                            (if coerce-key14_0
61547                              coerce-key14_0
61548                              (lambda (for-syntax?_0 v_0) v_0))))
61549                       (let ((parameter-override_0 hash2610))
61550                         (let ((parameter-cache_0 (make-hasheq)))
61551                           (let ((st_0 (read-config-state3.1 #f #f)))
61552                             (let ((parameter-cache_1 parameter-cache_0)
61553                                   (parameter-override_1 parameter-override_0)
61554                                   (coerce-key_1 coerce-key_0)
61555                                   (coerce_1 coerce_0)
61556                                   (module-declared?_1 module-declared?_0)
61557                                   (dynamic-require_1 dynamic-require_0)
61558                                   (call-with-root-namespace_1
61559                                    call-with-root-namespace_0)
61560                                   (read-compiled_1 read-compiled_0))
61561                               (begin-unsafe
61562                                (read-config/outer1.1
61563                                 (read-config/inner2.1
61564                                  readtable_0
61565                                  next-readtable_0
61566                                  for-syntax?5_0
61567                                  source4_0
61568                                  read-compiled_1
61569                                  call-with-root-namespace_1
61570                                  dynamic-require_1
61571                                  module-declared?_1
61572                                  coerce_1
61573                                  coerce-key_1
61574                                  parameter-override_1
61575                                  parameter-cache_1
61576                                  st_0)
61577                                 wrap8_0
61578                                 #f
61579                                 #f
61580                                 #f
61581                                 null
61582                                 keep-comment?15_0))))))))))))))))))
61583(define read-config-update.1
61584  (|#%name|
61585   read-config-update
61586   (lambda (for-syntax?29_0
61587            keep-comment?34_0
61588            next-readtable32_0
61589            readtable31_0
61590            reset-graph?33_0
61591            wrap30_0
61592            config41_0)
61593     (begin
61594       (let ((next-readtable_0
61595              (if (eq? next-readtable32_0 unsafe-undefined)
61596                (begin-unsafe
61597                 (read-config/inner-readtable
61598                  (read-config/outer-inner config41_0)))
61599                next-readtable32_0)))
61600         (if (read-config/outer? config41_0)
61601           (let ((the-struct_0 (read-config/outer-inner config41_0)))
61602             (let ((inner53_0
61603                    (if (read-config/inner? the-struct_0)
61604                      (let ((st57_0
61605                             (if reset-graph?33_0
61606                               (read-config-state3.1 #f #f)
61607                               (begin-unsafe
61608                                (read-config/inner-st
61609                                 (read-config/outer-inner config41_0))))))
61610                        (let ((parameter-override58_0 hash2610))
61611                          (let ((parameter-cache59_0 (make-hasheq)))
61612                            (let ((parameter-override58_1
61613                                   parameter-override58_0)
61614                                  (st57_1 st57_0))
61615                              (read-config/inner2.1
61616                               readtable31_0
61617                               next-readtable_0
61618                               for-syntax?29_0
61619                               (read-config/inner-source the-struct_0)
61620                               (read-config/inner-read-compiled the-struct_0)
61621                               (read-config/inner-call-with-root-namespace
61622                                the-struct_0)
61623                               (read-config/inner-dynamic-require the-struct_0)
61624                               (read-config/inner-module-declared?
61625                                the-struct_0)
61626                               (read-config/inner-coerce the-struct_0)
61627                               (read-config/inner-coerce-key the-struct_0)
61628                               parameter-override58_1
61629                               parameter-cache59_0
61630                               st57_1)))))
61631                      (raise-argument-error
61632                       'struct-copy
61633                       "read-config/inner?"
61634                       the-struct_0))))
61635               (read-config/outer1.1
61636                inner53_0
61637                wrap30_0
61638                (read-config/outer-line config41_0)
61639                (read-config/outer-col config41_0)
61640                (read-config/outer-pos config41_0)
61641                (read-config/outer-indentations config41_0)
61642                keep-comment?34_0)))
61643           (raise-argument-error
61644            'struct-copy
61645            "read-config/outer?"
61646            config41_0)))))))
61647(define port+config->srcloc.1
61648  (|#%name|
61649   port+config->srcloc
61650   (lambda (end-pos43_0 in45_0 config46_0)
61651     (begin
61652       (let ((end-pos_0
61653              (if end-pos43_0
61654                end-pos43_0
61655                (call-with-values
61656                 (lambda () (port-next-location in45_0))
61657                 (case-lambda
61658                  ((end-line_0 end-col_0 end-pos_0) end-pos_0)
61659                  (args (raise-binding-result-arity-error 3 args)))))))
61660         (let ((app_0
61661                (let ((or-part_0
61662                       (begin-unsafe
61663                        (read-config/inner-source
61664                         (read-config/outer-inner config46_0)))))
61665                  (if or-part_0
61666                    or-part_0
61667                    (let ((or-part_1 (object-name in45_0)))
61668                      (if or-part_1 or-part_1 "UNKNOWN"))))))
61669           (unsafe-make-srcloc
61670            app_0
61671            (begin-unsafe (read-config/outer-line config46_0))
61672            (begin-unsafe (read-config/outer-col config46_0))
61673            (begin-unsafe (read-config/outer-pos config46_0))
61674            (if (begin-unsafe (read-config/outer-pos config46_0))
61675              (if end-pos_0
61676                (max
61677                 0
61678                 (-
61679                  end-pos_0
61680                  (begin-unsafe (read-config/outer-pos config46_0))))
61681                #f)
61682              #f))))))))
61683(define reading-at
61684  (lambda (config_0 line_0 col_0 pos_0)
61685    (if (read-config/outer? config_0)
61686      (let ((inner63_0 (read-config/outer-inner config_0)))
61687        (read-config/outer1.1
61688         inner63_0
61689         (read-config/outer-wrap config_0)
61690         line_0
61691         col_0
61692         pos_0
61693         (read-config/outer-indentations config_0)
61694         (read-config/outer-keep-comment? config_0)))
61695      (raise-argument-error 'struct-copy "read-config/outer?" config_0))))
61696(define disable-wrapping
61697  (lambda (config_0)
61698    (if (read-config/outer? config_0)
61699      (let ((inner65_0 (read-config/outer-inner config_0)))
61700        (read-config/outer1.1
61701         inner65_0
61702         #f
61703         (read-config/outer-line config_0)
61704         (read-config/outer-col config_0)
61705         (read-config/outer-pos config_0)
61706         (read-config/outer-indentations config_0)
61707         (read-config/outer-keep-comment? config_0)))
61708      (raise-argument-error 'struct-copy "read-config/outer?" config_0))))
61709(define keep-comment
61710  (lambda (config_0)
61711    (if (read-config/outer? config_0)
61712      (let ((inner67_0 (read-config/outer-inner config_0)))
61713        (read-config/outer1.1
61714         inner67_0
61715         (read-config/outer-wrap config_0)
61716         (read-config/outer-line config_0)
61717         (read-config/outer-col config_0)
61718         (read-config/outer-pos config_0)
61719         (read-config/outer-indentations config_0)
61720         #t))
61721      (raise-argument-error 'struct-copy "read-config/outer?" config_0))))
61722(define discard-comment
61723  (lambda (config_0)
61724    (if (not (begin-unsafe (read-config/outer-keep-comment? config_0)))
61725      config_0
61726      (if (read-config/outer? config_0)
61727        (let ((inner69_0 (read-config/outer-inner config_0)))
61728          (read-config/outer1.1
61729           inner69_0
61730           (read-config/outer-wrap config_0)
61731           (read-config/outer-line config_0)
61732           (read-config/outer-col config_0)
61733           (read-config/outer-pos config_0)
61734           (read-config/outer-indentations config_0)
61735           #f))
61736        (raise-argument-error 'struct-copy "read-config/outer?" config_0)))))
61737(define next-readtable
61738  (lambda (config_0)
61739    (if (eq?
61740         (begin-unsafe
61741          (read-config/inner-readtable (read-config/outer-inner config_0)))
61742         (begin-unsafe
61743          (read-config/inner-next-readtable
61744           (read-config/outer-inner config_0))))
61745      config_0
61746      (if (read-config/outer? config_0)
61747        (let ((the-struct_0 (read-config/outer-inner config_0)))
61748          (let ((inner70_0
61749                 (if (read-config/inner? the-struct_0)
61750                   (let ((readtable71_0
61751                          (begin-unsafe
61752                           (read-config/inner-next-readtable
61753                            (read-config/outer-inner config_0)))))
61754                     (read-config/inner2.1
61755                      readtable71_0
61756                      (read-config/inner-next-readtable the-struct_0)
61757                      (read-config/inner-for-syntax? the-struct_0)
61758                      (read-config/inner-source the-struct_0)
61759                      (read-config/inner-read-compiled the-struct_0)
61760                      (read-config/inner-call-with-root-namespace the-struct_0)
61761                      (read-config/inner-dynamic-require the-struct_0)
61762                      (read-config/inner-module-declared? the-struct_0)
61763                      (read-config/inner-coerce the-struct_0)
61764                      (read-config/inner-coerce-key the-struct_0)
61765                      (read-config/inner-parameter-override the-struct_0)
61766                      (read-config/inner-parameter-cache the-struct_0)
61767                      (read-config/inner-st the-struct_0)))
61768                   (raise-argument-error
61769                    'struct-copy
61770                    "read-config/inner?"
61771                    the-struct_0))))
61772            (read-config/outer1.1
61773             inner70_0
61774             (read-config/outer-wrap config_0)
61775             (read-config/outer-line config_0)
61776             (read-config/outer-col config_0)
61777             (read-config/outer-pos config_0)
61778             (read-config/outer-indentations config_0)
61779             (read-config/outer-keep-comment? config_0))))
61780        (raise-argument-error 'struct-copy "read-config/outer?" config_0)))))
61781(define coerce
61782  (lambda (val_0 in_0 config_0)
61783    (let ((for-syntax?_0
61784           (begin-unsafe
61785            (read-config/inner-for-syntax?
61786             (read-config/outer-inner config_0)))))
61787      (|#%app|
61788       (begin-unsafe
61789        (read-config/inner-coerce (read-config/outer-inner config_0)))
61790       for-syntax?_0
61791       val_0
61792       (if for-syntax?_0 (port+config->srcloc.1 #f in_0 config_0) #f)))))
61793(define default-reader-guard$1
61794  (|#%name| default-reader-guard (lambda (v_0) (begin v_0))))
61795(define 1/current-reader-guard
61796  (make-parameter
61797   default-reader-guard$1
61798   (lambda (v_0)
61799     (begin
61800       (if (if (procedure? v_0) (procedure-arity-includes? v_0 1) #f)
61801         (void)
61802         (raise-argument-error
61803          'current-reader-guard
61804          "(procedure-arity-includes/c 1)"
61805          v_0))
61806       v_0))
61807   'current-reader-guard))
61808(define 1/read-square-bracket-as-paren
61809  (make-parameter
61810   #t
61811   (lambda (v_0) (if v_0 #t #f))
61812   'read-square-bracket-as-paren))
61813(define 1/read-curly-brace-as-paren
61814  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-curly-brace-as-paren))
61815(define 1/read-square-bracket-with-tag
61816  (make-parameter
61817   #f
61818   (lambda (v_0) (if v_0 #t #f))
61819   'read-square-bracket-with-tag))
61820(define 1/read-curly-brace-with-tag
61821  (make-parameter #f (lambda (v_0) (if v_0 #t #f)) 'read-curly-brace-with-tag))
61822(define 1/read-cdot
61823  (make-parameter #f (lambda (v_0) (if v_0 #t #f)) 'read-cdot))
61824(define 1/read-accept-graph
61825  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-graph))
61826(define 1/read-accept-compiled
61827  (make-parameter #f (lambda (v_0) (if v_0 #t #f)) 'read-accept-compiled))
61828(define 1/read-accept-box
61829  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-box))
61830(define 1/read-single-flonum
61831  (make-parameter #f (lambda (v_0) (if v_0 #t #f)) 'read-single-flonum))
61832(define 1/read-decimal-as-inexact
61833  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-decimal-as-inexact))
61834(define 1/read-accept-dot
61835  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-dot))
61836(define 1/read-accept-infix-dot
61837  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-infix-dot))
61838(define 1/read-accept-quasiquote
61839  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-quasiquote))
61840(define 1/read-accept-reader
61841  (make-parameter #f (lambda (v_0) (if v_0 #t #f)) 'read-accept-reader))
61842(define 1/read-accept-lang
61843  (make-parameter #t (lambda (v_0) (if v_0 #t #f)) 'read-accept-lang))
61844(define unknown (gensym 'unknown))
61845(define check-parameter
61846  (lambda (param_0 config_0)
61847    (let ((cache_0
61848           (begin-unsafe
61849            (read-config/inner-parameter-cache
61850             (read-config/outer-inner config_0)))))
61851      (let ((v_0
61852             (hash-ref
61853              (begin-unsafe
61854               (read-config/inner-parameter-override
61855                (read-config/outer-inner config_0)))
61856              param_0
61857              (hash-ref cache_0 param_0 unknown))))
61858        (if (eq? v_0 unknown)
61859          (let ((v_1 (|#%app| param_0)))
61860            (begin (hash-set! cache_0 param_0 v_1) v_1))
61861          v_0)))))
61862(define override-parameter
61863  (lambda (param_0 config_0 v_0)
61864    (if (read-config/outer? config_0)
61865      (let ((the-struct_0 (read-config/outer-inner config_0)))
61866        (let ((inner1_0
61867               (if (read-config/inner? the-struct_0)
61868                 (let ((parameter-override2_0
61869                        (hash-set
61870                         (begin-unsafe
61871                          (read-config/inner-parameter-override
61872                           (read-config/outer-inner config_0)))
61873                         param_0
61874                         v_0)))
61875                   (read-config/inner2.1
61876                    (read-config/inner-readtable the-struct_0)
61877                    (read-config/inner-next-readtable the-struct_0)
61878                    (read-config/inner-for-syntax? the-struct_0)
61879                    (read-config/inner-source the-struct_0)
61880                    (read-config/inner-read-compiled the-struct_0)
61881                    (read-config/inner-call-with-root-namespace the-struct_0)
61882                    (read-config/inner-dynamic-require the-struct_0)
61883                    (read-config/inner-module-declared? the-struct_0)
61884                    (read-config/inner-coerce the-struct_0)
61885                    (read-config/inner-coerce-key the-struct_0)
61886                    parameter-override2_0
61887                    (read-config/inner-parameter-cache the-struct_0)
61888                    (read-config/inner-st the-struct_0)))
61889                 (raise-argument-error
61890                  'struct-copy
61891                  "read-config/inner?"
61892                  the-struct_0))))
61893          (read-config/outer1.1
61894           inner1_0
61895           (read-config/outer-wrap config_0)
61896           (read-config/outer-line config_0)
61897           (read-config/outer-col config_0)
61898           (read-config/outer-pos config_0)
61899           (read-config/outer-indentations config_0)
61900           (read-config/outer-keep-comment? config_0))))
61901      (raise-argument-error 'struct-copy "read-config/outer?" config_0))))
61902(define force-parameters!
61903  (lambda (config_0)
61904    (let ((cache_0
61905           (begin-unsafe
61906            (read-config/inner-parameter-cache
61907             (read-config/outer-inner config_0)))))
61908      (if (hash-ref cache_0 'all-forced #f)
61909        (void)
61910        (begin
61911          (hash-set! cache_0 'all-forced #t)
61912          (check-parameter read-case-sensitive config_0)
61913          (check-parameter 1/read-square-bracket-as-paren config_0)
61914          (check-parameter 1/read-curly-brace-as-paren config_0)
61915          (check-parameter 1/read-square-bracket-with-tag config_0)
61916          (check-parameter 1/read-curly-brace-with-tag config_0)
61917          (check-parameter 1/read-cdot config_0)
61918          (check-parameter 1/read-accept-graph config_0)
61919          (check-parameter 1/read-accept-compiled config_0)
61920          (check-parameter 1/read-accept-box config_0)
61921          (check-parameter read-accept-bar-quote config_0)
61922          (check-parameter 1/read-decimal-as-inexact config_0)
61923          (check-parameter 1/read-single-flonum config_0)
61924          (check-parameter 1/read-accept-dot config_0)
61925          (check-parameter 1/read-accept-infix-dot config_0)
61926          (check-parameter 1/read-accept-quasiquote config_0)
61927          (check-parameter 1/read-accept-reader config_0)
61928          (check-parameter 1/read-accept-lang config_0))))))
61929(define finish_2605
61930  (make-struct-type-install-properties
61931   '(special-comment)
61932   1
61933   0
61934   #f
61935   (list (cons prop:authentic #t))
61936   (current-inspector)
61937   #f
61938   '(0)
61939   #f
61940   'make-special-comment))
61941(define struct:special-comment
61942  (make-record-type-descriptor*
61943   'special-comment
61944   #f
61945   (|#%nongenerative-uid| special-comment)
61946   #f
61947   #f
61948   1
61949   0))
61950(define effect_3106 (finish_2605 struct:special-comment))
61951(define 1/make-special-comment
61952  (|#%name|
61953   make-special-comment
61954   (record-constructor
61955    (make-record-constructor-descriptor struct:special-comment #f #f))))
61956(define 1/special-comment?
61957  (|#%name| special-comment? (record-predicate struct:special-comment)))
61958(define 1/special-comment-value
61959  (|#%name| special-comment-value (record-accessor struct:special-comment 0)))
61960(define finish_2508
61961  (make-struct-type-install-properties
61962   '(readtable)
61963   4
61964   0
61965   #f
61966   (list (cons prop:authentic #t) (cons prop:readtable #t))
61967   (current-inspector)
61968   #f
61969   '(0 1 2 3)
61970   #f
61971   'readtable))
61972(define struct:readtable
61973  (make-record-type-descriptor*
61974   'readtable
61975   #f
61976   (|#%nongenerative-uid| readtable)
61977   #f
61978   #f
61979   4
61980   0))
61981(define effect_2167 (finish_2508 struct:readtable))
61982(define readtable1.1
61983  (|#%name|
61984   readtable
61985   (record-constructor
61986    (make-record-constructor-descriptor struct:readtable #f #f))))
61987(define 1/readtable? (|#%name| readtable? (record-predicate struct:readtable)))
61988(define readtable-symbol-parser
61989  (|#%name| readtable-symbol-parser (record-accessor struct:readtable 0)))
61990(define readtable-char-ht
61991  (|#%name| readtable-char-ht (record-accessor struct:readtable 1)))
61992(define readtable-dispatch-ht
61993  (|#%name| readtable-dispatch-ht (record-accessor struct:readtable 2)))
61994(define readtable-delimiter-ht
61995  (|#%name| readtable-delimiter-ht (record-accessor struct:readtable 3)))
61996(define 1/make-readtable
61997  (|#%name|
61998   make-readtable
61999   (lambda (rt_0 . args_0)
62000     (begin
62001       (begin
62002         (if (let ((or-part_0 (not rt_0)))
62003               (if or-part_0 or-part_0 (1/readtable? rt_0)))
62004           (void)
62005           (raise-argument-error 'make-readtable "(or/c readtable? #f)" rt_0))
62006         (letrec*
62007          ((loop_0
62008            (|#%name|
62009             loop
62010             (lambda (args_1
62011                      symbol-parser_0
62012                      char-ht_0
62013                      dispatch-ht_0
62014                      delimiter-ht_0)
62015               (begin
62016                 (if (null? args_1)
62017                   (readtable1.1
62018                    symbol-parser_0
62019                    char-ht_0
62020                    dispatch-ht_0
62021                    delimiter-ht_0)
62022                   (let ((key_0 (car args_1)))
62023                     (begin
62024                       (if (let ((or-part_0 (not key_0)))
62025                             (if or-part_0 or-part_0 (char? key_0)))
62026                         (void)
62027                         (raise-argument-error
62028                          'make-readtable
62029                          "(or/c char? #f)"
62030                          key_0))
62031                       (begin
62032                         (if (null? (cdr args_1))
62033                           (if key_0
62034                             (raise-arguments-error
62035                              'make-readtable
62036                              (string-append
62037                               "expected 'terminating-macro, 'non-terminating-macro, 'dispatch-macro,"
62038                               " or character argument after character argument")
62039                              "character"
62040                              key_0)
62041                             (raise-arguments-error
62042                              'make-readtable
62043                              "expected 'non-terminating-macro after #f"))
62044                           (void))
62045                         (let ((mode_0 (cadr args_1)))
62046                           (begin
62047                             (if key_0
62048                               (if (let ((or-part_0
62049                                          (eq? mode_0 'terminating-macro)))
62050                                     (if or-part_0
62051                                       or-part_0
62052                                       (let ((or-part_1
62053                                              (eq?
62054                                               mode_0
62055                                               'non-terminating-macro)))
62056                                         (if or-part_1
62057                                           or-part_1
62058                                           (let ((or-part_2
62059                                                  (eq?
62060                                                   mode_0
62061                                                   'dispatch-macro)))
62062                                             (if or-part_2
62063                                               or-part_2
62064                                               (char? mode_0)))))))
62065                                 (void)
62066                                 (raise-argument-error
62067                                  'make-readtable
62068                                  "(or/c 'terminating-macro 'non-terminating-macro 'dispatch-macro char?)"
62069                                  mode_0))
62070                               (if (eq? mode_0 'non-terminating-macro)
62071                                 (void)
62072                                 (raise-arguments-error
62073                                  'make-readtable
62074                                  "expected 'non-terminating-macro after #f")))
62075                             (begin
62076                               (if (null? (cddr args_1))
62077                                 (let ((app_0
62078                                        (if (char? mode_0)
62079                                          "expected readtable or #f argument after character argument"
62080                                          "expected procedure argument after symbol argument")))
62081                                   (raise-arguments-error
62082                                    'make-readtable
62083                                    app_0
62084                                    (if (char? mode_0) "character" "symbol")
62085                                    mode_0))
62086                                 (void))
62087                               (let ((target_0 (caddr args_1)))
62088                                 (let ((rest-args_0 (cdddr args_1)))
62089                                   (if (not key_0)
62090                                     (begin
62091                                       (if (if (procedure? target_0)
62092                                             (procedure-arity-includes?
62093                                              target_0
62094                                              6)
62095                                             #f)
62096                                         (void)
62097                                         (raise-argument-error
62098                                          'make-readtable
62099                                          "(procedure-arity-includes/c 6)"
62100                                          target_0))
62101                                       (loop_0
62102                                        rest-args_0
62103                                        target_0
62104                                        char-ht_0
62105                                        dispatch-ht_0
62106                                        delimiter-ht_0))
62107                                     (if (eq? mode_0 'dispatch-macro)
62108                                       (begin
62109                                         (if (if (procedure? target_0)
62110                                               (procedure-arity-includes?
62111                                                target_0
62112                                                6)
62113                                               #f)
62114                                           (void)
62115                                           (raise-argument-error
62116                                            'make-readtable
62117                                            "(procedure-arity-includes/c 6)"
62118                                            target_0))
62119                                         (loop_0
62120                                          rest-args_0
62121                                          symbol-parser_0
62122                                          char-ht_0
62123                                          (hash-set
62124                                           dispatch-ht_0
62125                                           key_0
62126                                           target_0)
62127                                          delimiter-ht_0))
62128                                       (if (char? mode_0)
62129                                         (begin
62130                                           (if (let ((or-part_0
62131                                                      (not target_0)))
62132                                                 (if or-part_0
62133                                                   or-part_0
62134                                                   (1/readtable? target_0)))
62135                                             (void)
62136                                             (raise-argument-error
62137                                              'make-readtable
62138                                              "(or/c readtable? #f)"
62139                                              target_0))
62140                                           (let ((actual-target_0
62141                                                  (let ((or-part_0
62142                                                         (if target_0
62143                                                           (hash-ref
62144                                                            (readtable-char-ht
62145                                                             target_0)
62146                                                            mode_0
62147                                                            #f)
62148                                                           #f)))
62149                                                    (if or-part_0
62150                                                      or-part_0
62151                                                      mode_0))))
62152                                             (let ((new-char-ht_0
62153                                                    (if actual-target_0
62154                                                      (hash-set
62155                                                       char-ht_0
62156                                                       key_0
62157                                                       actual-target_0)
62158                                                      (hash-remove
62159                                                       char-ht_0
62160                                                       key_0))))
62161                                               (let ((new-delimiter-ht_0
62162                                                      (hash-set
62163                                                       delimiter-ht_0
62164                                                       key_0
62165                                                       (if target_0
62166                                                         (hash-ref
62167                                                          (readtable-delimiter-ht
62168                                                           target_0)
62169                                                          mode_0
62170                                                          mode_0)
62171                                                         mode_0))))
62172                                                 (loop_0
62173                                                  rest-args_0
62174                                                  symbol-parser_0
62175                                                  new-char-ht_0
62176                                                  dispatch-ht_0
62177                                                  new-delimiter-ht_0)))))
62178                                         (begin
62179                                           (if (if (procedure? target_0)
62180                                                 (procedure-arity-includes?
62181                                                  target_0
62182                                                  6)
62183                                                 #f)
62184                                             (void)
62185                                             (raise-argument-error
62186                                              'make-readtable
62187                                              "(procedure-arity-includes/c 6)"
62188                                              target_0))
62189                                           (let ((new-char-ht_0
62190                                                  (hash-set
62191                                                   char-ht_0
62192                                                   key_0
62193                                                   target_0)))
62194                                             (let ((new-delimiter-ht_0
62195                                                    (hash-set
62196                                                     delimiter-ht_0
62197                                                     key_0
62198                                                     (if (eq?
62199                                                          mode_0
62200                                                          'terminating-macro)
62201                                                       'delimit
62202                                                       'no-delimit))))
62203                                               (loop_0
62204                                                rest-args_0
62205                                                symbol-parser_0
62206                                                new-char-ht_0
62207                                                dispatch-ht_0
62208                                                new-delimiter-ht_0)))))))))))))))))))))
62209          (let ((app_0 (if rt_0 (readtable-symbol-parser rt_0) #f)))
62210            (let ((app_1 (if rt_0 (readtable-char-ht rt_0) hash2589)))
62211              (let ((app_2 (if rt_0 (readtable-dispatch-ht rt_0) hash2589)))
62212                (loop_0
62213                 args_0
62214                 app_0
62215                 app_1
62216                 app_2
62217                 (if rt_0 (readtable-delimiter-ht rt_0) hash2589)))))))))))
62218(define *readtable-effective-char
62219  (lambda (rt_0 c_0)
62220    (let ((target_0 (hash-ref (readtable-char-ht rt_0) c_0 #f)))
62221      (if (not target_0) c_0 (if (char? target_0) target_0 '#\x78)))))
62222(define |readtable-effective-char/#|
62223  (lambda (rt_0 c_0)
62224    (if (if rt_0 (hash-ref (readtable-dispatch-ht rt_0) c_0 #f) #f) #f c_0)))
62225(define effective-char
62226  (lambda (c_0 config_0)
62227    (let ((rt_0
62228           (begin-unsafe
62229            (read-config/inner-readtable (read-config/outer-inner config_0)))))
62230      (if (let ((or-part_0 (not rt_0)))
62231            (if or-part_0 or-part_0 (not (char? c_0))))
62232        c_0
62233        (*readtable-effective-char rt_0 c_0)))))
62234(define readtable-handler
62235  (lambda (config_0 c_0)
62236    (let ((rt_0
62237           (begin-unsafe
62238            (read-config/inner-readtable (read-config/outer-inner config_0)))))
62239      (if rt_0
62240        (let ((target_0 (hash-ref (readtable-char-ht rt_0) c_0 #f)))
62241          (if target_0 (if (not (char? target_0)) target_0 #f) #f))
62242        #f))))
62243(define readtable-dispatch-handler
62244  (lambda (config_0 c_0)
62245    (begin
62246      (force-parameters! config_0)
62247      (let ((rt_0
62248             (begin-unsafe
62249              (read-config/inner-readtable
62250               (read-config/outer-inner config_0)))))
62251        (if rt_0 (hash-ref (readtable-dispatch-ht rt_0) c_0 #f) #f)))))
62252(define readtable-apply
62253  (lambda (handler_0 c_0 in_0 config_0 line_0 col_0 pos_0)
62254    (let ((for-syntax?_0
62255           (begin-unsafe
62256            (read-config/inner-for-syntax?
62257             (read-config/outer-inner config_0)))))
62258      (let ((v_0
62259             (if (not for-syntax?_0)
62260               (with-continuation-mark*
62261                push-authentic
62262                current-read-config
62263                config_0
62264                (if (procedure-arity-includes? handler_0 2)
62265                  (|#%app| handler_0 c_0 in_0)
62266                  (|#%app| handler_0 c_0 in_0 #f line_0 col_0 pos_0)))
62267               (with-continuation-mark*
62268                push-authentic
62269                current-read-config
62270                config_0
62271                (|#%app|
62272                 handler_0
62273                 c_0
62274                 in_0
62275                 (begin-unsafe
62276                  (read-config/inner-source
62277                   (read-config/outer-inner config_0)))
62278                 line_0
62279                 col_0
62280                 pos_0)))))
62281        (if (1/special-comment? v_0) v_0 (coerce v_0 in_0 config_0))))))
62282(define 1/readtable-mapping
62283  (|#%name|
62284   readtable-mapping
62285   (lambda (rt_0 c_0)
62286     (begin
62287       (begin
62288         (if (1/readtable? rt_0)
62289           (void)
62290           (raise-argument-error 'readtable-mapping "readtable?" rt_0))
62291         (begin
62292           (if (char? c_0)
62293             (void)
62294             (raise-argument-error 'readtable-mapping "char?" c_0))
62295           (let ((handler_0 (hash-ref (readtable-char-ht rt_0) c_0 #f)))
62296             (let ((app_0
62297                    (let ((or-part_0
62298                           (if handler_0
62299                             (if (char? handler_0)
62300                               handler_0
62301                               (if (eq?
62302                                    'delimit
62303                                    (hash-ref
62304                                     (readtable-delimiter-ht rt_0)
62305                                     c_0
62306                                     #f))
62307                                 'terminating-macro
62308                                 'non-terminating-macro))
62309                             #f)))
62310                      (if or-part_0 or-part_0 c_0))))
62311               (let ((app_1 (if (char? handler_0) #f handler_0)))
62312                 (values
62313                  app_0
62314                  app_1
62315                  (hash-ref (readtable-dispatch-ht rt_0) c_0 #f)))))))))))
62316(define readtable-equivalent-chars
62317  (lambda (rt_0 c_0)
62318    (let ((ht_0 (readtable-char-ht rt_0)))
62319      (let ((app_0 (if (hash-ref ht_0 c_0 #f) null (list c_0))))
62320        (append
62321         app_0
62322         (reverse$1
62323          (begin
62324            (letrec*
62325             ((for-loop_0
62326               (|#%name|
62327                for-loop
62328                (lambda (fold-var_0 i_0)
62329                  (begin
62330                    (if i_0
62331                      (call-with-values
62332                       (lambda () (hash-iterate-key+value ht_0 i_0))
62333                       (case-lambda
62334                        ((k_0 v_0)
62335                         (let ((fold-var_1
62336                                (if (eqv? v_0 c_0)
62337                                  (let ((fold-var_1 (cons k_0 fold-var_0)))
62338                                    (values fold-var_1))
62339                                  fold-var_0)))
62340                           (for-loop_0
62341                            fold-var_1
62342                            (hash-iterate-next ht_0 i_0))))
62343                        (args (raise-binding-result-arity-error 2 args))))
62344                      fold-var_0))))))
62345             (for-loop_0 null (hash-iterate-first ht_0))))))))))
62346(define finish_2954
62347  (make-struct-type-install-properties
62348   '(special)
62349   1
62350   0
62351   #f
62352   null
62353   (current-inspector)
62354   #f
62355   '(0)
62356   #f
62357   'special))
62358(define struct:special
62359  (make-record-type-descriptor*
62360   'special
62361   #f
62362   (|#%nongenerative-uid| special)
62363   #f
62364   #f
62365   1
62366   0))
62367(define effect_2677 (finish_2954 struct:special))
62368(define special1.1
62369  (|#%name|
62370   special
62371   (record-constructor
62372    (make-record-constructor-descriptor struct:special #f #f))))
62373(define special?_3109 (|#%name| special? (record-predicate struct:special)))
62374(define special?
62375  (|#%name|
62376   special?
62377   (lambda (v)
62378     (if (special?_3109 v)
62379       #t
62380       ($value
62381        (if (impersonator? v) (special?_3109 (impersonator-val v)) #f))))))
62382(define special-value_2789
62383  (|#%name| special-value (record-accessor struct:special 0)))
62384(define special-value
62385  (|#%name|
62386   special-value
62387   (lambda (s)
62388     (if (special?_3109 s)
62389       (special-value_2789 s)
62390       ($value
62391        (impersonate-ref
62392         special-value_2789
62393         struct:special
62394         0
62395         s
62396         'special
62397         'value))))))
62398(define wrap
62399  (lambda (s-exp_0 in_0 config_0 rep_0)
62400    (let ((wrap_0 (begin-unsafe (read-config/outer-wrap config_0))))
62401      (if wrap_0
62402        (|#%app| wrap_0 s-exp_0 (port+config->srcloc.1 #f in_0 config_0) rep_0)
62403        s-exp_0))))
62404(define consume-char (lambda (in_0 c_0) (begin (read-char in_0) (void))))
62405(define consume-char/special
62406  (lambda (in_0 config_0 c_0)
62407    (begin
62408      (read-char-or-special
62409       in_0
62410       special1.1
62411       (begin-unsafe
62412        (read-config/inner-source (read-config/outer-inner config_0))))
62413      (void))))
62414(define reader-error.1
62415  (|#%name|
62416   reader-error
62417   (lambda (continuation-marks1_0
62418            due-to2_0
62419            end-pos4_0
62420            who3_0
62421            in9_0
62422            config10_0
62423            str11_0
62424            new-rest_0)
62425     (begin
62426       (let ((continuation-marks_0
62427              (if (eq? continuation-marks1_0 unsafe-undefined)
62428                (current-continuation-marks)
62429                continuation-marks1_0)))
62430         (let ((who_0
62431                (if (eq? who3_0 unsafe-undefined)
62432                  (if (begin-unsafe
62433                       (read-config/inner-for-syntax?
62434                        (read-config/outer-inner config10_0)))
62435                    'read-syntax
62436                    'read)
62437                  who3_0)))
62438           (let ((msg_0
62439                  (format "~a: ~a" who_0 (apply format str11_0 new-rest_0))))
62440             (let ((srcloc_0
62441                    (if in9_0
62442                      (port+config->srcloc.1 end-pos4_0 in9_0 config10_0)
62443                      #f)))
62444               (raise
62445                (let ((app_0
62446                       (if (eof-object? due-to2_0)
62447                         exn:fail:read:eof
62448                         (if (not (char? due-to2_0))
62449                           exn:fail:read:non-char
62450                           exn:fail:read))))
62451                  (let ((app_1
62452                         (let ((s_0
62453                                (if (error-print-source-location)
62454                                  (if srcloc_0 (srcloc->string srcloc_0) #f)
62455                                  #f)))
62456                           (if s_0 (string-append s_0 ": " msg_0) msg_0))))
62457                    (|#%app|
62458                     app_0
62459                     app_1
62460                     continuation-marks_0
62461                     (if srcloc_0 (list srcloc_0) null)))))))))))))
62462(define bad-syntax-error.1
62463  (|#%name|
62464   bad-syntax-error
62465   (lambda (due-to13_0 in15_0 config16_0 str17_0)
62466     (begin
62467       (let ((temp25_0 "bad syntax `~a`"))
62468         (reader-error.1
62469          unsafe-undefined
62470          due-to13_0
62471          #f
62472          unsafe-undefined
62473          in15_0
62474          config16_0
62475          temp25_0
62476          (list str17_0)))))))
62477(define catch-and-reraise-as-reader/proc
62478  (lambda (in_0 config_0 thunk_0)
62479    (let ((with-handlers-handler28_0
62480           (|#%name|
62481            with-handlers-handler28
62482            (lambda (exn_0)
62483              (begin
62484                (let ((temp31_0 "~a"))
62485                  (let ((temp32_0
62486                         (let ((s_0 (exn-message exn_0)))
62487                           (regexp-replace "^[a-z-]*: " s_0 ""))))
62488                    (let ((temp33_0 (exn-continuation-marks exn_0)))
62489                      (let ((temp32_1 temp32_0) (temp31_1 temp31_0))
62490                        (reader-error.1
62491                         temp33_0
62492                         '#\x78
62493                         #f
62494                         unsafe-undefined
62495                         in_0
62496                         config_0
62497                         temp31_1
62498                         (list temp32_1)))))))))))
62499      (let ((bpz_0 (continuation-mark-set-first #f break-enabled-key)))
62500        (call-handled-body
62501         bpz_0
62502         (lambda (e_0)
62503           (select-handler/no-breaks
62504            e_0
62505            bpz_0
62506            (list (cons exn:fail? with-handlers-handler28_0))))
62507         (lambda () (|#%app| thunk_0)))))))
62508(define port-next-location*
62509  (lambda (in_0 init-c_0)
62510    (if (not init-c_0)
62511      (port-next-location in_0)
62512      (call-with-values
62513       (lambda () (port-next-location in_0))
62514       (case-lambda
62515        ((line_0 col_0 pos_0)
62516         (let ((app_0 (if col_0 (max 0 (sub1 col_0)) #f)))
62517           (values line_0 app_0 (if pos_0 (max 1 (sub1 pos_0)) #f))))
62518        (args (raise-binding-result-arity-error 3 args)))))))
62519(define read-char/skip-whitespace-and-comments
62520  (lambda (init-c_0 read-one_0 in_0 config_0)
62521    (let ((rt_0
62522           (begin-unsafe
62523            (read-config/inner-readtable (read-config/outer-inner config_0)))))
62524      (let ((source_0
62525             (begin-unsafe
62526              (read-config/inner-source (read-config/outer-inner config_0)))))
62527        (letrec*
62528         ((skip-loop_0
62529           (|#%name|
62530            skip-loop
62531            (lambda (init-c_1)
62532              (begin
62533                (let ((c_0
62534                       (if init-c_1
62535                         init-c_1
62536                         (read-char-or-special in_0 special1.1 source_0))))
62537                  (let ((ec_0
62538                         (if (let ((or-part_0 (not rt_0)))
62539                               (if or-part_0 or-part_0 (not (char? c_0))))
62540                           c_0
62541                           (*readtable-effective-char rt_0 c_0))))
62542                    (if (eof-object? ec_0)
62543                      c_0
62544                      (if (not (char? ec_0))
62545                        (let ((v_0 (special-value c_0)))
62546                          (if (if (1/special-comment? v_0)
62547                                (not
62548                                 (begin-unsafe
62549                                  (read-config/outer-keep-comment? config_0)))
62550                                #f)
62551                            (skip-loop_0 #f)
62552                            c_0))
62553                        (if (let ((or-part_0 (char-whitespace? ec_0)))
62554                              (if or-part_0 or-part_0 (eqv? '#\xfeff ec_0)))
62555                          (skip-loop_0 #f)
62556                          (if (char=? '#\x3b ec_0)
62557                            (begin
62558                              (letrec*
62559                               ((loop_0
62560                                 (|#%name|
62561                                  loop
62562                                  (lambda ()
62563                                    (begin
62564                                      (let ((c_1
62565                                             (read-char-or-special
62566                                              in_0
62567                                              special1.1
62568                                              source_0)))
62569                                        (if (let ((or-part_0
62570                                                   (eof-object? c_1)))
62571                                              (if or-part_0
62572                                                or-part_0
62573                                                (eqv?
62574                                                 '#\xa
62575                                                 (effective-char
62576                                                  c_1
62577                                                  config_0))))
62578                                          (void)
62579                                          (loop_0))))))))
62580                               (loop_0))
62581                              (if (begin-unsafe
62582                                   (read-config/outer-keep-comment? config_0))
62583                                (result-special-comment)
62584                                (skip-loop_0 #f)))
62585                            (if (if (char=? '#\x23 ec_0)
62586                                  (eqv?
62587                                   '#\x7c
62588                                   (|readtable-effective-char/#|
62589                                    rt_0
62590                                    (let ((c_1
62591                                           (peek-char-or-special
62592                                            in_0
62593                                            0
62594                                            'special
62595                                            source_0)))
62596                                      (if (eq? c_1 'special)
62597                                        (special1.1 'special)
62598                                        c_1))))
62599                                  #f)
62600                              (begin
62601                                (skip-pipe-comment! c_0 in_0 config_0)
62602                                (if (begin-unsafe
62603                                     (read-config/outer-keep-comment?
62604                                      config_0))
62605                                  (result-special-comment)
62606                                  (skip-loop_0 #f)))
62607                              (if (if (char=? '#\x23 ec_0)
62608                                    (if (eqv?
62609                                         '#\x21
62610                                         (|readtable-effective-char/#|
62611                                          rt_0
62612                                          (let ((c_1
62613                                                 (peek-char-or-special
62614                                                  in_0
62615                                                  0
62616                                                  'special
62617                                                  source_0)))
62618                                            (if (eq? c_1 'special)
62619                                              (special1.1 'special)
62620                                              c_1))))
62621                                      (let ((c3_0
62622                                             (let ((c_1
62623                                                    (peek-char-or-special
62624                                                     in_0
62625                                                     1
62626                                                     'special
62627                                                     source_0)))
62628                                               (if (eq? c_1 'special)
62629                                                 (special1.1 'special)
62630                                                 c_1))))
62631                                        (let ((or-part_0 (eqv? '#\x20 c3_0)))
62632                                          (if or-part_0
62633                                            or-part_0
62634                                            (eqv? '#\x2f c3_0))))
62635                                      #f)
62636                                    #f)
62637                                (begin
62638                                  (skip-unix-line-comment! in_0 config_0)
62639                                  (if (begin-unsafe
62640                                       (read-config/outer-keep-comment?
62641                                        config_0))
62642                                    (result-special-comment)
62643                                    (skip-loop_0 #f)))
62644                                (if (if (char=? '#\x23 ec_0)
62645                                      (eqv?
62646                                       '#\x3b
62647                                       (|readtable-effective-char/#|
62648                                        rt_0
62649                                        (let ((c_1
62650                                               (peek-char-or-special
62651                                                in_0
62652                                                0
62653                                                'special
62654                                                source_0)))
62655                                          (if (eq? c_1 'special)
62656                                            (special1.1 'special)
62657                                            c_1))))
62658                                      #f)
62659                                  (begin
62660                                    (begin-unsafe
62661                                     (begin (read-char in_0) (void)))
62662                                    (let ((v_0
62663                                           (|#%app|
62664                                            read-one_0
62665                                            #f
62666                                            in_0
62667                                            config_0)))
62668                                      (begin
62669                                        (if (eof-object? v_0)
62670                                          (let ((temp4_0
62671                                                 "expected a commented-out element for `~a;`, but found end-of-file"))
62672                                            (reader-error.1
62673                                             unsafe-undefined
62674                                             v_0
62675                                             #f
62676                                             unsafe-undefined
62677                                             in_0
62678                                             config_0
62679                                             temp4_0
62680                                             (list ec_0)))
62681                                          (void))
62682                                        (if (begin-unsafe
62683                                             (read-config/outer-keep-comment?
62684                                              config_0))
62685                                          (result-special-comment)
62686                                          (skip-loop_0 #f)))))
62687                                  c_0))))))))))))))
62688         (skip-loop_0 init-c_0))))))
62689(define result-special-comment
62690  (lambda () (special1.1 (1/make-special-comment #f))))
62691(define skip-pipe-comment!
62692  (lambda (init-c_0 in_0 config_0)
62693    (let ((source_0
62694           (begin-unsafe
62695            (read-config/inner-source (read-config/outer-inner config_0)))))
62696      (call-with-values
62697       (lambda () (port-next-location in_0))
62698       (case-lambda
62699        ((line_0 col_0 pos_0)
62700         (begin
62701           (begin-unsafe (begin (read-char in_0) (void)))
62702           (letrec*
62703            ((loop_0
62704              (|#%name|
62705               loop
62706               (lambda (prev-c_0 depth_0)
62707                 (begin
62708                   (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
62709                     (if (eof-object? c_0)
62710                       (let ((temp7_0
62711                              (reading-at config_0 line_0 col_0 pos_0)))
62712                         (let ((temp9_0 "end of file in `#|` comment"))
62713                           (let ((temp7_1 temp7_0))
62714                             (reader-error.1
62715                              unsafe-undefined
62716                              c_0
62717                              #f
62718                              unsafe-undefined
62719                              in_0
62720                              temp7_1
62721                              temp9_0
62722                              (list)))))
62723                       (if (not (char? c_0))
62724                         (loop_0 #f depth_0)
62725                         (if (if (char=? '#\x7c c_0) (eqv? prev-c_0 '#\x23) #f)
62726                           (loop_0 #f (add1 depth_0))
62727                           (if (if (char=? '#\x23 c_0)
62728                                 (eqv? prev-c_0 '#\x7c)
62729                                 #f)
62730                             (if (positive? depth_0)
62731                               (loop_0 #f (sub1 depth_0))
62732                               (void))
62733                             (loop_0 c_0 depth_0)))))))))))
62734            (loop_0 #f 0))))
62735        (args (raise-binding-result-arity-error 3 args)))))))
62736(define skip-unix-line-comment!
62737  (lambda (in_0 config_0)
62738    (letrec*
62739     ((loop_0
62740       (|#%name|
62741        loop
62742        (lambda (backslash?_0)
62743          (begin
62744            (let ((source_0
62745                   (begin-unsafe
62746                    (read-config/inner-source
62747                     (read-config/outer-inner config_0)))))
62748              (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
62749                (if (eof-object? c_0)
62750                  (void)
62751                  (if (not (char? c_0))
62752                    (loop_0 #f)
62753                    (if (char=? c_0 '#\xa)
62754                      (if backslash?_0 (loop_0 #f) (void))
62755                      (if (char=? c_0 '#\x5c)
62756                        (loop_0 #t)
62757                        (loop_0 #f))))))))))))
62758     (loop_0 #f))))
62759(define readtable-char-delimiter?
62760  (lambda (rt_0 c_0 config_0)
62761    (let ((dc_0
62762           (let ((or-part_0
62763                  (if rt_0
62764                    (hash-ref (readtable-delimiter-ht rt_0) c_0 #f)
62765                    #f)))
62766             (if or-part_0 or-part_0 c_0))))
62767      (if (eq? dc_0 'no-delimit)
62768        #f
62769        (if (not (char? dc_0))
62770          #t
62771          (let ((or-part_0 (char-whitespace? dc_0)))
62772            (if or-part_0
62773              or-part_0
62774              (let ((or-part_1 (char=? dc_0 '#\x28)))
62775                (if or-part_1
62776                  or-part_1
62777                  (let ((or-part_2 (char=? dc_0 '#\x29)))
62778                    (if or-part_2
62779                      or-part_2
62780                      (let ((or-part_3 (char=? dc_0 '#\x5b)))
62781                        (if or-part_3
62782                          or-part_3
62783                          (let ((or-part_4 (char=? dc_0 '#\x5d)))
62784                            (if or-part_4
62785                              or-part_4
62786                              (let ((or-part_5 (char=? dc_0 '#\x7b)))
62787                                (if or-part_5
62788                                  or-part_5
62789                                  (let ((or-part_6 (char=? dc_0 '#\x7d)))
62790                                    (if or-part_6
62791                                      or-part_6
62792                                      (let ((or-part_7 (char=? dc_0 '#\x27)))
62793                                        (if or-part_7
62794                                          or-part_7
62795                                          (let ((or-part_8
62796                                                 (char=? dc_0 '#\x60)))
62797                                            (if or-part_8
62798                                              or-part_8
62799                                              (let ((or-part_9
62800                                                     (char=? dc_0 '#\x2c)))
62801                                                (if or-part_9
62802                                                  or-part_9
62803                                                  (let ((or-part_10
62804                                                         (char=? dc_0 '#\x3b)))
62805                                                    (if or-part_10
62806                                                      or-part_10
62807                                                      (let ((or-part_11
62808                                                             (char=?
62809                                                              dc_0
62810                                                              '#\x22)))
62811                                                        (if or-part_11
62812                                                          or-part_11
62813                                                          (let ((or-part_12
62814                                                                 (char=?
62815                                                                  dc_0
62816                                                                  '#\xfeff)))
62817                                                            (if or-part_12
62818                                                              or-part_12
62819                                                              (if (char=?
62820                                                                   dc_0
62821                                                                   '#\x2e)
62822                                                                (check-parameter
62823                                                                 1/read-cdot
62824                                                                 config_0)
62825                                                                #f))))))))))))))))))))))))))))))))
62826(define char-delimiter?
62827  (lambda (c_0 config_0)
62828    (readtable-char-delimiter?
62829     (begin-unsafe
62830      (read-config/inner-readtable (read-config/outer-inner config_0)))
62831     c_0
62832     config_0)))
62833(define char-closer?
62834  (lambda (ec_0 config_0)
62835    (if (not (eof-object? ec_0))
62836      (let ((or-part_0 (char=? ec_0 '#\x29)))
62837        (if or-part_0
62838          or-part_0
62839          (let ((or-part_1 (char=? ec_0 '#\x5d)))
62840            (if or-part_1 or-part_1 (char=? ec_0 '#\x7d)))))
62841      #f)))
62842(define closer-name
62843  (lambda (c_0 config_0) (effective-char-names c_0 config_0 "closer")))
62844(define opener-name
62845  (lambda (c_0 config_0) (effective-char-names c_0 config_0 "opener")))
62846(define effective-char-names
62847  (lambda (c_0 config_0 fallback-str_0)
62848    (let ((rt_0
62849           (begin-unsafe
62850            (read-config/inner-readtable (read-config/outer-inner config_0)))))
62851      (if (not rt_0)
62852        (format "`~a`" c_0)
62853        (let ((cs_0 (readtable-equivalent-chars rt_0 c_0)))
62854          (if (null? cs_0)
62855            fallback-str_0
62856            (if (null? (cdr cs_0))
62857              (format "`~a`" (car cs_0))
62858              (if (null? (cddr cs_0))
62859                (let ((app_0 (car cs_0)))
62860                  (format "`~a` or `~a`" app_0 (cadr cs_0)))
62861                (apply
62862                 string-append
62863                 (letrec*
62864                  ((loop_0
62865                    (|#%name|
62866                     loop
62867                     (lambda (cs_1)
62868                       (begin
62869                         (if (null? (cdr cs_1))
62870                           (list (format "or `~a`" (car cs_1)))
62871                           (let ((app_0 (format "`~a`, " (car cs_1))))
62872                             (cons app_0 (loop_0 (cdr cs_1))))))))))
62873                  (loop_0 cs_0)))))))))))
62874(define closer->opener
62875  (lambda (c_0)
62876    (if (eqv? c_0 '#\x29)
62877      '#\x28
62878      (if (eqv? c_0 '#\x5d) '#\x5b (if (eqv? c_0 '#\x7d) '#\x7b c_0)))))
62879(define dot-name (lambda (config_0) "`.`"))
62880(define all-openers-str
62881  (lambda (config_0)
62882    (let ((p_0 (begin-unsafe (effective-char-names '#\x28 config_0 "opener"))))
62883      (let ((s_0
62884             (if (check-parameter 1/read-square-bracket-as-paren config_0)
62885               (begin-unsafe (effective-char-names '#\x5b config_0 "opener"))
62886               #f)))
62887        (let ((c_0
62888               (if (check-parameter 1/read-curly-brace-as-paren config_0)
62889                 (begin-unsafe (effective-char-names '#\x7b config_0 "opener"))
62890                 #f)))
62891          (if (if s_0 c_0 #f)
62892            (format "~a, ~a, or ~a" p_0 s_0 c_0)
62893            (if (if s_0 s_0 c_0)
62894              (format "~a or ~a" p_0 (if s_0 s_0 c_0))
62895              p_0)))))))
62896(define finish_2485
62897  (make-struct-type-install-properties
62898   '(accum-string)
62899   2
62900   0
62901   #f
62902   (list (cons prop:authentic #t))
62903   (current-inspector)
62904   #f
62905   '()
62906   #f
62907   'accum-string))
62908(define struct:accum-string
62909  (make-record-type-descriptor*
62910   'accum-string
62911   #f
62912   (|#%nongenerative-uid| accum-string)
62913   #f
62914   #f
62915   2
62916   3))
62917(define effect_2784 (finish_2485 struct:accum-string))
62918(define accum-string1.1
62919  (|#%name|
62920   accum-string
62921   (record-constructor
62922    (make-record-constructor-descriptor struct:accum-string #f #f))))
62923(define accum-string?
62924  (|#%name| accum-string? (record-predicate struct:accum-string)))
62925(define accum-string-pos
62926  (|#%name| accum-string-pos (record-accessor struct:accum-string 0)))
62927(define accum-string-str
62928  (|#%name| accum-string-str (record-accessor struct:accum-string 1)))
62929(define set-accum-string-pos!
62930  (|#%name| set-accum-string-pos! (record-mutator struct:accum-string 0)))
62931(define set-accum-string-str!
62932  (|#%name| set-accum-string-str! (record-mutator struct:accum-string 1)))
62933(define accum-string-init!
62934  (lambda (config_0)
62935    (let ((st_0
62936           (begin-unsafe
62937            (read-config/inner-st (read-config/outer-inner config_0)))))
62938      (let ((a_0 (read-config-state-accum-str st_0)))
62939        (if a_0
62940          (begin
62941            (set-read-config-state-accum-str! st_0 #f)
62942            (set-accum-string-pos! a_0 0)
62943            a_0)
62944          (accum-string1.1 0 (make-string 32)))))))
62945(define accum-string-add!
62946  (lambda (a_0 c_0)
62947    (let ((pos_0 (accum-string-pos a_0)))
62948      (let ((str_0 (accum-string-str a_0)))
62949        (let ((str2_0
62950               (if (fx< pos_0 (string-length str_0))
62951                 str_0
62952                 (let ((str2_0 (make-string (fx* (string-length str_0) 2))))
62953                   (begin
62954                     (string-copy! str2_0 0 str_0)
62955                     (set-accum-string-str! a_0 str2_0)
62956                     str2_0)))))
62957          (begin
62958            (string-set! str2_0 pos_0 c_0)
62959            (set-accum-string-pos! a_0 (fx+ 1 pos_0))))))))
62960(define accum-string-count (lambda (a_0) (accum-string-pos a_0)))
62961(define set-accum-string-count!
62962  (lambda (a_0 pos_0) (set-accum-string-pos! a_0 pos_0)))
62963(define accum-string-convert!
62964  (lambda (a_0 convert_0 start-pos_0)
62965    (let ((str_0 (accum-string-str a_0)))
62966      (let ((s_0
62967             (|#%app|
62968              convert_0
62969              (substring str_0 start-pos_0 (accum-string-pos a_0)))))
62970        (let ((len_0 (string-length s_0)))
62971          (begin
62972            (if (let ((app_0 (fx+ len_0 start-pos_0)))
62973                  (fx< app_0 (string-length str_0)))
62974              (void)
62975              (let ((str2_0 (make-string (fx+ start-pos_0 len_0))))
62976                (begin
62977                  (string-copy! str2_0 0 str_0 0 start-pos_0)
62978                  (set-accum-string-str! a_0 str2_0))))
62979            (string-copy! (accum-string-str a_0) start-pos_0 s_0)
62980            (set-accum-string-pos! a_0 (fx+ start-pos_0 len_0))))))))
62981(define accum-string-get!.1
62982  (|#%name|
62983   accum-string-get!
62984   (lambda (start-pos2_0 a4_0 config5_0)
62985     (begin
62986       (let ((s_0
62987              (let ((app_0 (accum-string-str a4_0)))
62988                (substring app_0 start-pos2_0 (accum-string-pos a4_0)))))
62989         (begin
62990           (begin-unsafe
62991            (set-read-config-state-accum-str!
62992             (begin-unsafe
62993              (read-config/inner-st (read-config/outer-inner config5_0)))
62994             a4_0))
62995           s_0))))))
62996(define accum-string-get-bytes!.1
62997  (|#%name|
62998   accum-string-get-bytes!
62999   (lambda (start-pos7_0 a9_0 config10_0)
63000     (begin
63001       (let ((bstr_0
63002              (let ((app_0 (accum-string-str a9_0)))
63003                (string->bytes/latin-1
63004                 app_0
63005                 #f
63006                 start-pos7_0
63007                 (accum-string-pos a9_0)))))
63008         (begin
63009           (begin-unsafe
63010            (set-read-config-state-accum-str!
63011             (begin-unsafe
63012              (read-config/inner-st (read-config/outer-inner config10_0)))
63013             a9_0))
63014           bstr_0))))))
63015(define accum-string-abandon!
63016  (lambda (a_0 config_0)
63017    (set-read-config-state-accum-str!
63018     (begin-unsafe (read-config/inner-st (read-config/outer-inner config_0)))
63019     a_0)))
63020(define finish_2880
63021  (make-struct-type-install-properties
63022   '(indentation)
63023   8
63024   0
63025   #f
63026   null
63027   (current-inspector)
63028   #f
63029   '(0 3)
63030   #f
63031   'indentation))
63032(define struct:indentation
63033  (make-record-type-descriptor*
63034   'indentation
63035   #f
63036   (|#%nongenerative-uid| indentation)
63037   #f
63038   #f
63039   8
63040   246))
63041(define effect_2185 (finish_2880 struct:indentation))
63042(define indentation1.1
63043  (|#%name|
63044   indentation
63045   (record-constructor
63046    (make-record-constructor-descriptor struct:indentation #f #f))))
63047(define indentation?_2766
63048  (|#%name| indentation? (record-predicate struct:indentation)))
63049(define indentation?
63050  (|#%name|
63051   indentation?
63052   (lambda (v)
63053     (if (indentation?_2766 v)
63054       #t
63055       ($value
63056        (if (impersonator? v) (indentation?_2766 (impersonator-val v)) #f))))))
63057(define indentation-closer_2003
63058  (|#%name| indentation-closer (record-accessor struct:indentation 0)))
63059(define indentation-closer
63060  (|#%name|
63061   indentation-closer
63062   (lambda (s)
63063     (if (indentation?_2766 s)
63064       (indentation-closer_2003 s)
63065       ($value
63066        (impersonate-ref
63067         indentation-closer_2003
63068         struct:indentation
63069         0
63070         s
63071         'indentation
63072         'closer))))))
63073(define indentation-suspicious-closer_2131
63074  (|#%name|
63075   indentation-suspicious-closer
63076   (record-accessor struct:indentation 1)))
63077(define indentation-suspicious-closer
63078  (|#%name|
63079   indentation-suspicious-closer
63080   (lambda (s)
63081     (if (indentation?_2766 s)
63082       (indentation-suspicious-closer_2131 s)
63083       ($value
63084        (impersonate-ref
63085         indentation-suspicious-closer_2131
63086         struct:indentation
63087         1
63088         s
63089         'indentation
63090         'suspicious-closer))))))
63091(define indentation-multiline?_2443
63092  (|#%name| indentation-multiline? (record-accessor struct:indentation 2)))
63093(define indentation-multiline?
63094  (|#%name|
63095   indentation-multiline?
63096   (lambda (s)
63097     (if (indentation?_2766 s)
63098       (indentation-multiline?_2443 s)
63099       ($value
63100        (impersonate-ref
63101         indentation-multiline?_2443
63102         struct:indentation
63103         2
63104         s
63105         'indentation
63106         'multiline?))))))
63107(define indentation-start-line_2628
63108  (|#%name| indentation-start-line (record-accessor struct:indentation 3)))
63109(define indentation-start-line
63110  (|#%name|
63111   indentation-start-line
63112   (lambda (s)
63113     (if (indentation?_2766 s)
63114       (indentation-start-line_2628 s)
63115       ($value
63116        (impersonate-ref
63117         indentation-start-line_2628
63118         struct:indentation
63119         3
63120         s
63121         'indentation
63122         'start-line))))))
63123(define indentation-last-line_2502
63124  (|#%name| indentation-last-line (record-accessor struct:indentation 4)))
63125(define indentation-last-line
63126  (|#%name|
63127   indentation-last-line
63128   (lambda (s)
63129     (if (indentation?_2766 s)
63130       (indentation-last-line_2502 s)
63131       ($value
63132        (impersonate-ref
63133         indentation-last-line_2502
63134         struct:indentation
63135         4
63136         s
63137         'indentation
63138         'last-line))))))
63139(define indentation-suspicious-line_2778
63140  (|#%name|
63141   indentation-suspicious-line
63142   (record-accessor struct:indentation 5)))
63143(define indentation-suspicious-line
63144  (|#%name|
63145   indentation-suspicious-line
63146   (lambda (s)
63147     (if (indentation?_2766 s)
63148       (indentation-suspicious-line_2778 s)
63149       ($value
63150        (impersonate-ref
63151         indentation-suspicious-line_2778
63152         struct:indentation
63153         5
63154         s
63155         'indentation
63156         'suspicious-line))))))
63157(define indentation-max-indent_2482
63158  (|#%name| indentation-max-indent (record-accessor struct:indentation 6)))
63159(define indentation-max-indent
63160  (|#%name|
63161   indentation-max-indent
63162   (lambda (s)
63163     (if (indentation?_2766 s)
63164       (indentation-max-indent_2482 s)
63165       ($value
63166        (impersonate-ref
63167         indentation-max-indent_2482
63168         struct:indentation
63169         6
63170         s
63171         'indentation
63172         'max-indent))))))
63173(define indentation-suspicious-quote_2590
63174  (|#%name|
63175   indentation-suspicious-quote
63176   (record-accessor struct:indentation 7)))
63177(define indentation-suspicious-quote
63178  (|#%name|
63179   indentation-suspicious-quote
63180   (lambda (s)
63181     (if (indentation?_2766 s)
63182       (indentation-suspicious-quote_2590 s)
63183       ($value
63184        (impersonate-ref
63185         indentation-suspicious-quote_2590
63186         struct:indentation
63187         7
63188         s
63189         'indentation
63190         'suspicious-quote))))))
63191(define set-indentation-suspicious-closer!_2590
63192  (|#%name|
63193   set-indentation-suspicious-closer!
63194   (record-mutator struct:indentation 1)))
63195(define set-indentation-suspicious-closer!
63196  (|#%name|
63197   set-indentation-suspicious-closer!
63198   (lambda (s v)
63199     (if (indentation?_2766 s)
63200       (set-indentation-suspicious-closer!_2590 s v)
63201       ($value
63202        (impersonate-set!
63203         set-indentation-suspicious-closer!_2590
63204         struct:indentation
63205         1
63206         1
63207         s
63208         v
63209         'indentation
63210         'suspicious-closer))))))
63211(define set-indentation-multiline?!_2223
63212  (|#%name| set-indentation-multiline?! (record-mutator struct:indentation 2)))
63213(define set-indentation-multiline?!
63214  (|#%name|
63215   set-indentation-multiline?!
63216   (lambda (s v)
63217     (if (indentation?_2766 s)
63218       (set-indentation-multiline?!_2223 s v)
63219       ($value
63220        (impersonate-set!
63221         set-indentation-multiline?!_2223
63222         struct:indentation
63223         2
63224         2
63225         s
63226         v
63227         'indentation
63228         'multiline?))))))
63229(define set-indentation-last-line!_2595
63230  (|#%name| set-indentation-last-line! (record-mutator struct:indentation 4)))
63231(define set-indentation-last-line!
63232  (|#%name|
63233   set-indentation-last-line!
63234   (lambda (s v)
63235     (if (indentation?_2766 s)
63236       (set-indentation-last-line!_2595 s v)
63237       ($value
63238        (impersonate-set!
63239         set-indentation-last-line!_2595
63240         struct:indentation
63241         4
63242         4
63243         s
63244         v
63245         'indentation
63246         'last-line))))))
63247(define set-indentation-suspicious-line!_2285
63248  (|#%name|
63249   set-indentation-suspicious-line!
63250   (record-mutator struct:indentation 5)))
63251(define set-indentation-suspicious-line!
63252  (|#%name|
63253   set-indentation-suspicious-line!
63254   (lambda (s v)
63255     (if (indentation?_2766 s)
63256       (set-indentation-suspicious-line!_2285 s v)
63257       ($value
63258        (impersonate-set!
63259         set-indentation-suspicious-line!_2285
63260         struct:indentation
63261         5
63262         5
63263         s
63264         v
63265         'indentation
63266         'suspicious-line))))))
63267(define set-indentation-max-indent!_2868
63268  (|#%name| set-indentation-max-indent! (record-mutator struct:indentation 6)))
63269(define set-indentation-max-indent!
63270  (|#%name|
63271   set-indentation-max-indent!
63272   (lambda (s v)
63273     (if (indentation?_2766 s)
63274       (set-indentation-max-indent!_2868 s v)
63275       ($value
63276        (impersonate-set!
63277         set-indentation-max-indent!_2868
63278         struct:indentation
63279         6
63280         6
63281         s
63282         v
63283         'indentation
63284         'max-indent))))))
63285(define set-indentation-suspicious-quote!_2621
63286  (|#%name|
63287   set-indentation-suspicious-quote!
63288   (record-mutator struct:indentation 7)))
63289(define set-indentation-suspicious-quote!
63290  (|#%name|
63291   set-indentation-suspicious-quote!
63292   (lambda (s v)
63293     (if (indentation?_2766 s)
63294       (set-indentation-suspicious-quote!_2621 s v)
63295       ($value
63296        (impersonate-set!
63297         set-indentation-suspicious-quote!_2621
63298         struct:indentation
63299         7
63300         7
63301         s
63302         v
63303         'indentation
63304         'suspicious-quote))))))
63305(define make-indentation
63306  (lambda (closer_0 in_0 config_0)
63307    (call-with-values
63308     (lambda () (port-next-location in_0))
63309     (case-lambda
63310      ((line_0 col_0 pos_0)
63311       (indentation1.1
63312        closer_0
63313        #f
63314        #f
63315        line_0
63316        line_0
63317        #f
63318        (if col_0 (add1 col_0) #f)
63319        #f))
63320      (args (raise-binding-result-arity-error 3 args))))))
63321(define track-indentation!
63322  (lambda (config_0 line_0 col_0)
63323    (let ((indts_0 (begin-unsafe (read-config/outer-indentations config_0))))
63324      (let ((indt_0 (if (pair? indts_0) (car indts_0) #f)))
63325        (if (if indt_0
63326              (if line_0
63327                (if (indentation-last-line indt_0)
63328                  (> line_0 (indentation-last-line indt_0))
63329                  #f)
63330                #f)
63331              #f)
63332          (begin
63333            (set-indentation-last-line! indt_0 line_0)
63334            (set-indentation-multiline?! indt_0 #t)
63335            (if (>= col_0 (indentation-max-indent indt_0))
63336              (set-indentation-max-indent! indt_0 col_0)
63337              (if (indentation-suspicious-line indt_0)
63338                (void)
63339                (begin
63340                  (set-indentation-suspicious-closer!
63341                   indt_0
63342                   (indentation-closer indt_0))
63343                  (set-indentation-suspicious-line! indt_0 line_0)))))
63344          (void))))))
63345(define indentation-possible-cause
63346  (lambda (config_0)
63347    (let ((indt_0
63348           (car (begin-unsafe (read-config/outer-indentations config_0)))))
63349      (if (indentation-suspicious-line indt_0)
63350        (let ((app_0
63351               (let ((c_0 (indentation-suspicious-closer indt_0)))
63352                 (begin-unsafe (effective-char-names c_0 config_0 "closer")))))
63353          (format
63354           "\n  possible cause: indentation suggests a missing ~a before line ~a"
63355           app_0
63356           (indentation-suspicious-line indt_0)))
63357        ""))))
63358(define indentation-unexpected-closer-message
63359  (lambda (ec_0 c_0 config_0)
63360    (let ((indts_0 (begin-unsafe (read-config/outer-indentations config_0))))
63361      (if (null? indts_0)
63362        (format "unexpected `~a`" c_0)
63363        (let ((indt_0 (car indts_0)))
63364          (let ((app_0
63365                 (if (char=? ec_0 (indentation-closer indt_0))
63366                   (format "unexpected `~a`" c_0)
63367                   (let ((missing_0
63368                          (let ((or-part_0
63369                                 (let ((lst_0 (cdr indts_0)))
63370                                   (begin
63371                                     (letrec*
63372                                      ((for-loop_0
63373                                        (|#%name|
63374                                         for-loop
63375                                         (lambda (result_0 lst_1)
63376                                           (begin
63377                                             (if (pair? lst_1)
63378                                               (let ((indt_1
63379                                                      (unsafe-car lst_1)))
63380                                                 (let ((rest_0
63381                                                        (unsafe-cdr lst_1)))
63382                                                   (let ((result_1
63383                                                          (let ((result_1
63384                                                                 (if (char=?
63385                                                                      ec_0
63386                                                                      (indentation-closer
63387                                                                       indt_1))
63388                                                                   "missing"
63389                                                                   #f)))
63390                                                            (values
63391                                                             result_1))))
63392                                                     (if (if (not
63393                                                              (let ((x_0
63394                                                                     (list
63395                                                                      indt_1)))
63396                                                                result_1))
63397                                                           #t
63398                                                           #f)
63399                                                       (for-loop_0
63400                                                        result_1
63401                                                        rest_0)
63402                                                       result_1))))
63403                                               result_0))))))
63404                                      (for-loop_0 #f lst_0))))))
63405                            (if or-part_0 or-part_0 "expected"))))
63406                     (let ((opener-str_0
63407                            (let ((c_1
63408                                   (closer->opener
63409                                    (indentation-closer indt_0))))
63410                              (begin-unsafe
63411                               (effective-char-names c_1 config_0 "opener")))))
63412                       (let ((app_0
63413                              (let ((c_1 (indentation-closer indt_0)))
63414                                (begin-unsafe
63415                                 (effective-char-names
63416                                  c_1
63417                                  config_0
63418                                  "closer")))))
63419                         (format
63420                          "~a ~a to close ~a, found instead `~a`"
63421                          missing_0
63422                          app_0
63423                          (if (indentation-multiline? indt_0)
63424                            (format
63425                             "~a on line ~a"
63426                             opener-str_0
63427                             (indentation-start-line indt_0))
63428                            (format "preceding ~a" opener-str_0))
63429                          c_0)))))))
63430            (string-append app_0 (indentation-possible-cause config_0))))))))
63431(define read-unwrapped-sequence.1
63432  (|#%name|
63433   read-unwrapped-sequence
63434   (lambda (dot-mode2_0
63435            elem-config1_0
63436            first-read-one5_0
63437            shape-tag?3_0
63438            whitespace-read-one4_0
63439            read-one11_0
63440            opener-c12_0
63441            opener13_0
63442            closer14_0
63443            in15_0
63444            seq-config16_0)
63445     (begin
63446       (let ((elem-config_0
63447              (if (eq? elem-config1_0 unsafe-undefined)
63448                (next-readtable seq-config16_0)
63449                elem-config1_0)))
63450         (let ((whitespace-read-one_0
63451                (if (eq? whitespace-read-one4_0 unsafe-undefined)
63452                  read-one11_0
63453                  whitespace-read-one4_0)))
63454           (let ((first-read-one_0
63455                  (if (eq? first-read-one5_0 unsafe-undefined)
63456                    read-one11_0
63457                    first-read-one5_0)))
63458             (let ((head_0 #f))
63459               (let ((indentation_0
63460                      (make-indentation closer14_0 in15_0 seq-config16_0)))
63461                 (let ((config_0
63462                        (if (read-config/outer? elem-config_0)
63463                          (let ((indentations18_0
63464                                 (cons
63465                                  indentation_0
63466                                  (begin-unsafe
63467                                   (read-config/outer-indentations
63468                                    seq-config16_0)))))
63469                            (let ((inner19_0
63470                                   (read-config/outer-inner elem-config_0)))
63471                              (read-config/outer1.1
63472                               inner19_0
63473                               (read-config/outer-wrap elem-config_0)
63474                               (read-config/outer-line elem-config_0)
63475                               (read-config/outer-col elem-config_0)
63476                               (read-config/outer-pos elem-config_0)
63477                               indentations18_0
63478                               (read-config/outer-keep-comment?
63479                                elem-config_0))))
63480                          (raise-argument-error
63481                           'struct-copy
63482                           "read-config/outer?"
63483                           elem-config_0))))
63484                   (call-with-values
63485                    (lambda () (port-next-location in15_0))
63486                    (case-lambda
63487                     ((open-end-line_0 open-end-col_0 open-end-pos_0)
63488                      (let ((config/keep-comment_0 (keep-comment config_0)))
63489                        (let ((read-one/not-eof_0
63490                               (|#%name|
63491                                read-one/not-eof
63492                                (lambda (init-c_0 read-one_0 config_1)
63493                                  (begin
63494                                    (let ((e_0
63495                                           (|#%app|
63496                                            read-one_0
63497                                            init-c_0
63498                                            in15_0
63499                                            config_1)))
63500                                      (begin
63501                                        (if (eof-object? e_0)
63502                                          (let ((temp24_0
63503                                                 "expected a ~a to close `~a`~a"))
63504                                            (let ((temp25_0
63505                                                   (begin-unsafe
63506                                                    (effective-char-names
63507                                                     closer14_0
63508                                                     config_1
63509                                                     "closer"))))
63510                                              (let ((temp27_0
63511                                                     (indentation-possible-cause
63512                                                      config_1)))
63513                                                (let ((temp25_1 temp25_0)
63514                                                      (temp24_1 temp24_0))
63515                                                  (reader-error.1
63516                                                   unsafe-undefined
63517                                                   e_0
63518                                                   open-end-pos_0
63519                                                   unsafe-undefined
63520                                                   in15_0
63521                                                   seq-config16_0
63522                                                   temp24_1
63523                                                   (list
63524                                                    temp25_1
63525                                                    opener-c12_0
63526                                                    temp27_0))))))
63527                                          (void))
63528                                        e_0)))))))
63529                          (let ((seq_0
63530                                 (letrec*
63531                                  ((loop_0
63532                                    (|#%name|
63533                                     loop
63534                                     (lambda (depth_0
63535                                              accum_0
63536                                              init-c_0
63537                                              first?_0
63538                                              first-read-one_1)
63539                                       (begin
63540                                         (let ((c_0
63541                                                (read-char/skip-whitespace-and-comments
63542                                                 init-c_0
63543                                                 whitespace-read-one_0
63544                                                 in15_0
63545                                                 seq-config16_0)))
63546                                           (let ((ec_0
63547                                                  (effective-char
63548                                                   c_0
63549                                                   seq-config16_0)))
63550                                             (if (eqv? ec_0 closer14_0)
63551                                               (if (null? accum_0)
63552                                                 null
63553                                                 (reverse$1 accum_0))
63554                                               (if (if (not first?_0)
63555                                                     (if (eqv? ec_0 '#\x2e)
63556                                                       (if (check-parameter
63557                                                            1/read-accept-dot
63558                                                            config_0)
63559                                                         (let ((source_0
63560                                                                (begin-unsafe
63561                                                                 (read-config/inner-source
63562                                                                  (read-config/outer-inner
63563                                                                   config_0)))))
63564                                                           (let ((c_1
63565                                                                  (let ((c_1
63566                                                                         (peek-char-or-special
63567                                                                          in15_0
63568                                                                          0
63569                                                                          'special
63570                                                                          source_0)))
63571                                                                    (if (eq?
63572                                                                         c_1
63573                                                                         'special)
63574                                                                      (special1.1
63575                                                                       'special)
63576                                                                      c_1))))
63577                                                             (begin-unsafe
63578                                                              (readtable-char-delimiter?
63579                                                               (begin-unsafe
63580                                                                (read-config/inner-readtable
63581                                                                 (read-config/outer-inner
63582                                                                  seq-config16_0)))
63583                                                               c_1
63584                                                               seq-config16_0))))
63585                                                         #f)
63586                                                       #f)
63587                                                     #f)
63588                                                 (call-with-values
63589                                                  (lambda ()
63590                                                    (port-next-location*
63591                                                     in15_0
63592                                                     c_0))
63593                                                  (case-lambda
63594                                                   ((dot-line_0
63595                                                     dot-col_0
63596                                                     dot-pos_0)
63597                                                    (begin
63598                                                      (track-indentation!
63599                                                       config_0
63600                                                       dot-line_0
63601                                                       dot-col_0)
63602                                                      (begin
63603                                                        (if (if dot-mode2_0
63604                                                              (not head_0)
63605                                                              #f)
63606                                                          (void)
63607                                                          (let ((temp29_0
63608                                                                 (reading-at
63609                                                                  config_0
63610                                                                  dot-line_0
63611                                                                  dot-col_0
63612                                                                  dot-pos_0)))
63613                                                            (let ((temp30_0
63614                                                                   "illegal use of `.`"))
63615                                                              (let ((temp29_1
63616                                                                     temp29_0))
63617                                                                (reader-error.1
63618                                                                 unsafe-undefined
63619                                                                 '#\x78
63620                                                                 #f
63621                                                                 unsafe-undefined
63622                                                                 in15_0
63623                                                                 temp29_1
63624                                                                 temp30_0
63625                                                                 (list))))))
63626                                                        (let ((v_0
63627                                                               (read-one/not-eof_0
63628                                                                #f
63629                                                                first-read-one_1
63630                                                                config_0)))
63631                                                          (let ((rest-c_0
63632                                                                 (read-char/skip-whitespace-and-comments
63633                                                                  #f
63634                                                                  whitespace-read-one_0
63635                                                                  in15_0
63636                                                                  seq-config16_0)))
63637                                                            (let ((rest-ec_0
63638                                                                   (effective-char
63639                                                                    rest-c_0
63640                                                                    seq-config16_0)))
63641                                                              (if (eqv?
63642                                                                   rest-ec_0
63643                                                                   closer14_0)
63644                                                                (if (null?
63645                                                                     accum_0)
63646                                                                  v_0
63647                                                                  (append
63648                                                                   (reverse$1
63649                                                                    accum_0)
63650                                                                   v_0))
63651                                                                (if (if (eqv?
63652                                                                         rest-ec_0
63653                                                                         '#\x2e)
63654                                                                      (if (check-parameter
63655                                                                           1/read-accept-dot
63656                                                                           config_0)
63657                                                                        (if (check-parameter
63658                                                                             1/read-accept-infix-dot
63659                                                                             config_0)
63660                                                                          (let ((source_0
63661                                                                                 (begin-unsafe
63662                                                                                  (read-config/inner-source
63663                                                                                   (read-config/outer-inner
63664                                                                                    config_0)))))
63665                                                                            (let ((c_1
63666                                                                                   (let ((c_1
63667                                                                                          (peek-char-or-special
63668                                                                                           in15_0
63669                                                                                           0
63670                                                                                           'special
63671                                                                                           source_0)))
63672                                                                                     (if (eq?
63673                                                                                          c_1
63674                                                                                          'special)
63675                                                                                       (special1.1
63676                                                                                        'special)
63677                                                                                       c_1))))
63678                                                                              (begin-unsafe
63679                                                                               (readtable-char-delimiter?
63680                                                                                (begin-unsafe
63681                                                                                 (read-config/inner-readtable
63682                                                                                  (read-config/outer-inner
63683                                                                                   seq-config16_0)))
63684                                                                                c_1
63685                                                                                seq-config16_0))))
63686                                                                          #f)
63687                                                                        #f)
63688                                                                      #f)
63689                                                                  (begin
63690                                                                    (set! head_0
63691                                                                      (box
63692                                                                       v_0))
63693                                                                    (call-with-values
63694                                                                     (lambda ()
63695                                                                       (port-next-location
63696                                                                        in15_0))
63697                                                                     (case-lambda
63698                                                                      ((dot2-line_0
63699                                                                        dot2-col_0
63700                                                                        dot2-pos_0)
63701                                                                       (begin
63702                                                                         (track-indentation!
63703                                                                          config_0
63704                                                                          dot2-line_0
63705                                                                          dot2-col_0)
63706                                                                         (let ((post-c_0
63707                                                                                (read-char/skip-whitespace-and-comments
63708                                                                                 #f
63709                                                                                 whitespace-read-one_0
63710                                                                                 in15_0
63711                                                                                 seq-config16_0)))
63712                                                                           (let ((post-ec_0
63713                                                                                  (effective-char
63714                                                                                   post-c_0
63715                                                                                   seq-config16_0)))
63716                                                                             (begin
63717                                                                               (if (let ((or-part_0
63718                                                                                          (eof-object?
63719                                                                                           post-ec_0)))
63720                                                                                     (if or-part_0
63721                                                                                       or-part_0
63722                                                                                       (eqv?
63723                                                                                        post-ec_0
63724                                                                                        closer14_0)))
63725                                                                                 (let ((temp32_0
63726                                                                                        (reading-at
63727                                                                                         config_0
63728                                                                                         dot-line_0
63729                                                                                         dot-col_0
63730                                                                                         dot-pos_0)))
63731                                                                                   (let ((temp34_0
63732                                                                                          "illegal use of `.`"))
63733                                                                                     (let ((temp32_1
63734                                                                                            temp32_0))
63735                                                                                       (reader-error.1
63736                                                                                        unsafe-undefined
63737                                                                                        post-ec_0
63738                                                                                        #f
63739                                                                                        unsafe-undefined
63740                                                                                        in15_0
63741                                                                                        temp32_1
63742                                                                                        temp34_0
63743                                                                                        (list)))))
63744                                                                                 (void))
63745                                                                               (loop_0
63746                                                                                depth_0
63747                                                                                accum_0
63748                                                                                post-c_0
63749                                                                                #f
63750                                                                                read-one11_0))))))
63751                                                                      (args
63752                                                                       (raise-binding-result-arity-error
63753                                                                        3
63754                                                                        args)))))
63755                                                                  (let ((temp36_0
63756                                                                         (reading-at
63757                                                                          config_0
63758                                                                          dot-line_0
63759                                                                          dot-col_0
63760                                                                          dot-pos_0)))
63761                                                                    (let ((temp38_0
63762                                                                           "illegal use of `.`"))
63763                                                                      (let ((temp36_1
63764                                                                             temp36_0))
63765                                                                        (reader-error.1
63766                                                                         unsafe-undefined
63767                                                                         rest-c_0
63768                                                                         #f
63769                                                                         unsafe-undefined
63770                                                                         in15_0
63771                                                                         temp36_1
63772                                                                         temp38_0
63773                                                                         (list)))))))))))))
63774                                                   (args
63775                                                    (raise-binding-result-arity-error
63776                                                     3
63777                                                     args))))
63778                                                 (let ((v_0
63779                                                        (read-one/not-eof_0
63780                                                         c_0
63781                                                         first-read-one_1
63782                                                         config/keep-comment_0)))
63783                                                   (if (1/special-comment? v_0)
63784                                                     (loop_0
63785                                                      depth_0
63786                                                      accum_0
63787                                                      #f
63788                                                      #f
63789                                                      read-one11_0)
63790                                                     (if (> depth_0 1024)
63791                                                       (loop_0
63792                                                        depth_0
63793                                                        (cons v_0 accum_0)
63794                                                        #f
63795                                                        #f
63796                                                        read-one11_0)
63797                                                       (cons
63798                                                        v_0
63799                                                        (loop_0
63800                                                         (add1 depth_0)
63801                                                         null
63802                                                         #f
63803                                                         #f
63804                                                         read-one11_0))))))))))))))
63805                                  (loop_0 0 null #f #t first-read-one_0))))
63806                            (let ((full-seq_0
63807                                   (if head_0
63808                                     (cons (unbox head_0) seq_0)
63809                                     seq_0)))
63810                              (if shape-tag?3_0
63811                                (add-shape-tag
63812                                 opener13_0
63813                                 in15_0
63814                                 config_0
63815                                 full-seq_0)
63816                                full-seq_0))))))
63817                     (args
63818                      (raise-binding-result-arity-error 3 args))))))))))))))
63819(define add-shape-tag
63820  (lambda (opener_0 in_0 config_0 seq_0)
63821    (let ((tag_0
63822           (if (eqv? opener_0 '#\x5b)
63823             (if (check-parameter 1/read-square-bracket-with-tag config_0)
63824               '|#%brackets|
63825               #f)
63826             (if (eqv? opener_0 '#\x7b)
63827               (if (check-parameter 1/read-curly-brace-with-tag config_0)
63828                 '|#%braces|
63829                 #f)
63830               #f))))
63831      (if tag_0 (cons (wrap tag_0 in_0 config_0 #f) seq_0) seq_0))))
63832(define not-an-fX.1$1
63833  (|#%name|
63834   not-an-fX
63835   (lambda (who_0 v_0) (begin (raise-argument-error who_0 "flonum?" v_0)))))
63836(define read-digits.1
63837  (|#%name|
63838   read-digits
63839   (lambda (base1_0
63840            init3_0
63841            max-count2_0
63842            zero-digits-result4_0
63843            in10_0
63844            config11_0
63845            accum-str9_0)
63846     (begin
63847       (let ((source_0
63848              (begin-unsafe
63849               (read-config/inner-source
63850                (read-config/outer-inner config11_0)))))
63851         (let ((c_0
63852                (let ((c_0 (peek-char-or-special in10_0 0 'special source_0)))
63853                  (if (eq? c_0 'special) (special1.1 'special) c_0))))
63854           (if (digit? c_0 base1_0)
63855             (begin
63856               (begin-unsafe (begin (read-char in10_0) (void)))
63857               (if accum-str9_0 (accum-string-add! accum-str9_0 c_0) (void))
63858               (letrec*
63859                ((loop_0
63860                  (|#%name|
63861                   loop
63862                   (lambda (v_0 max-count_0)
63863                     (begin
63864                       (if (zero? max-count_0)
63865                         v_0
63866                         (let ((source_1
63867                                (begin-unsafe
63868                                 (read-config/inner-source
63869                                  (read-config/outer-inner config11_0)))))
63870                           (let ((c_1
63871                                  (let ((c_1
63872                                         (peek-char-or-special
63873                                          in10_0
63874                                          0
63875                                          'special
63876                                          source_1)))
63877                                    (if (eq? c_1 'special)
63878                                      (special1.1 'special)
63879                                      c_1))))
63880                             (if (digit? c_1 base1_0)
63881                               (begin
63882                                 (begin-unsafe
63883                                  (begin (read-char in10_0) (void)))
63884                                 (if accum-str9_0
63885                                   (accum-string-add! accum-str9_0 c_1)
63886                                   (void))
63887                                 (let ((app_0
63888                                        (let ((app_0 (digit->number c_1)))
63889                                          (+ app_0 (* v_0 base1_0)))))
63890                                   (loop_0 app_0 (sub1 max-count_0))))
63891                               v_0)))))))))
63892                (let ((app_0
63893                       (let ((app_0 (digit->number c_0)))
63894                         (+ app_0 (* init3_0 base1_0)))))
63895                  (loop_0 app_0 (sub1 max-count2_0)))))
63896             (if zero-digits-result4_0 zero-digits-result4_0 c_0))))))))
63897(define digit?
63898  (lambda (c_0 base_0)
63899    (if (not (char? c_0))
63900      #f
63901      (if (= base_0 8)
63902        (octal-digit? c_0)
63903        (if (= base_0 16) (hex-digit? c_0) (decimal-digit? c_0))))))
63904(define decimal-digit?
63905  (lambda (c_0) (if (char>=? c_0 '#\x30) (char<=? c_0 '#\x39) #f)))
63906(define octal-digit?
63907  (lambda (c_0) (if (char>=? c_0 '#\x30) (char<=? c_0 '#\x37) #f)))
63908(define hex-digit?
63909  (lambda (c_0)
63910    (let ((or-part_0 (if (char>=? c_0 '#\x30) (char<=? c_0 '#\x39) #f)))
63911      (if or-part_0
63912        or-part_0
63913        (let ((or-part_1 (if (char>=? c_0 '#\x41) (char<=? c_0 '#\x46) #f)))
63914          (if or-part_1
63915            or-part_1
63916            (if (char>=? c_0 '#\x61) (char<=? c_0 '#\x66) #f)))))))
63917(define digit->number
63918  (lambda (c_0)
63919    (if (if (char>=? c_0 '#\x30) (char<=? c_0 '#\x39) #f)
63920      (- (char->integer c_0) 48)
63921      (if (if (char>=? c_0 '#\x41) (char<=? c_0 '#\x46) #f)
63922        (- (char->integer c_0) 55)
63923        (- (char->integer c_0) 87)))))
63924(define maybe-digit
63925  (lambda (c_0 radix_0)
63926    (let ((v_0 (char->integer c_0)))
63927      (if (fx< v_0 48)
63928        c_0
63929        (if (fx< v_0 (fx+ (fxmin radix_0 10) 48))
63930          (fx- v_0 48)
63931          (if (fx<= radix_0 10)
63932            c_0
63933            (if (fx< v_0 65)
63934              c_0
63935              (if (fx< v_0 (+ radix_0 55))
63936                (fx- v_0 55)
63937                (if (fx< v_0 97)
63938                  c_0
63939                  (if (fx< v_0 (+ radix_0 87)) (fx- v_0 87) c_0))))))))))
63940(define string->number$1 string->number)
63941(define 1/string->number
63942  (let ((string->number_0
63943         (|#%name|
63944          string->number
63945          (lambda (s5_0
63946                   radix1_0
63947                   convert-mode2_0
63948                   decimal-mode3_0
63949                   single-mode4_0)
63950            (begin
63951              (let ((decimal-mode_0
63952                     (if (eq? decimal-mode3_0 unsafe-undefined)
63953                       (if (1/read-decimal-as-inexact)
63954                         'decimal-as-inexact
63955                         'decimal-as-exact)
63956                       decimal-mode3_0)))
63957                (let ((single-mode_0
63958                       (if (eq? single-mode4_0 unsafe-undefined)
63959                         (if (1/read-single-flonum) 'single 'double)
63960                         single-mode4_0)))
63961                  (begin
63962                    (if (string? s5_0)
63963                      (void)
63964                      (raise-argument-error 'string->number "string?" s5_0))
63965                    (if (if (exact-integer? radix1_0) (<= 2 radix1_0 16) #f)
63966                      (void)
63967                      (raise-argument-error
63968                       'string->number
63969                       "(integer-in 2 16)"
63970                       radix1_0))
63971                    (if (let ((or-part_0
63972                               (eq? convert-mode2_0 'number-or-false)))
63973                          (if or-part_0 or-part_0 (eq? convert-mode2_0 'read)))
63974                      (void)
63975                      (raise-argument-error
63976                       'string->number
63977                       "(or/c 'number-or-false 'read)"
63978                       convert-mode2_0))
63979                    (if (let ((or-part_0
63980                               (eq? decimal-mode_0 'decimal-as-inexact)))
63981                          (if or-part_0
63982                            or-part_0
63983                            (eq? decimal-mode_0 'decimal-as-exact)))
63984                      (void)
63985                      (raise-argument-error
63986                       'string->number
63987                       "(or/c 'decimal-as-inexact 'decimal-as-exact)"
63988                       decimal-mode_0))
63989                    (if (let ((or-part_0 (eq? single-mode_0 'single)))
63990                          (if or-part_0 or-part_0 (eq? single-mode_0 'double)))
63991                      (void)
63992                      (raise-argument-error
63993                       'string->number
63994                       "(or/c 'single 'double)"
63995                       single-mode_0))
63996                    (|#%app|
63997                     unchecked-string->number
63998                     s5_0
63999                     radix1_0
64000                     convert-mode2_0
64001                     decimal-mode_0
64002                     single-mode_0)))))))))
64003    (|#%name|
64004     string->number
64005     (case-lambda
64006      ((s_0)
64007       (begin
64008         (string->number_0
64009          s_0
64010          10
64011          'number-or-false
64012          unsafe-undefined
64013          unsafe-undefined)))
64014      ((s_0 radix_0 convert-mode_0 decimal-mode_0 single-mode4_0)
64015       (string->number_0
64016        s_0
64017        radix_0
64018        convert-mode_0
64019        decimal-mode_0
64020        single-mode4_0))
64021      ((s_0 radix_0 convert-mode_0 decimal-mode3_0)
64022       (string->number_0
64023        s_0
64024        radix_0
64025        convert-mode_0
64026        decimal-mode3_0
64027        unsafe-undefined))
64028      ((s_0 radix_0 convert-mode2_0)
64029       (string->number_0
64030        s_0
64031        radix_0
64032        convert-mode2_0
64033        unsafe-undefined
64034        unsafe-undefined))
64035      ((s_0 radix1_0)
64036       (string->number_0
64037        s_0
64038        radix1_0
64039        'number-or-false
64040        unsafe-undefined
64041        unsafe-undefined))))))
64042(define unchecked-string->number
64043  (lambda (s_0 radix_0 convert-mode_0 decimal-mode_0 single-mode_0)
64044    (let ((temp46_0 (string-length s_0)))
64045      (|#%app|
64046       do-string->number.1
64047       #f
64048       s_0
64049       0
64050       temp46_0
64051       radix_0
64052       decimal-mode_0
64053       convert-mode_0
64054       single-mode_0))))
64055(define finish_2818
64056  (make-struct-type-install-properties
64057   '(parse-state)
64058   5
64059   0
64060   #f
64061   (list (cons prop:authentic #t))
64062   (current-inspector)
64063   #f
64064   '(0 1 2 3 4)
64065   #f
64066   'parse-state))
64067(define struct:parse-state
64068  (make-record-type-descriptor*
64069   'parse-state
64070   #f
64071   (|#%nongenerative-uid| parse-state)
64072   #f
64073   #f
64074   5
64075   0))
64076(define effect_2177 (finish_2818 struct:parse-state))
64077(define parse-state6.1
64078  (|#%name|
64079   parse-state
64080   (record-constructor
64081    (make-record-constructor-descriptor struct:parse-state #f #f))))
64082(define parse-state?
64083  (|#%name| parse-state? (record-predicate struct:parse-state)))
64084(define parse-state-exactness
64085  (|#%name| parse-state-exactness (record-accessor struct:parse-state 0)))
64086(define parse-state-convert-mode
64087  (|#%name| parse-state-convert-mode (record-accessor struct:parse-state 1)))
64088(define parse-state-can-single?
64089  (|#%name| parse-state-can-single? (record-accessor struct:parse-state 2)))
64090(define parse-state-fst
64091  (|#%name| parse-state-fst (record-accessor struct:parse-state 3)))
64092(define parse-state-other-exactness
64093  (|#%name|
64094   parse-state-other-exactness
64095   (record-accessor struct:parse-state 4)))
64096(define finish_2141
64097  (make-struct-type-install-properties
64098   '(rect-prefix)
64099   3
64100   0
64101   #f
64102   (list (cons prop:authentic #t))
64103   (current-inspector)
64104   #f
64105   '(0 1 2)
64106   #f
64107   'rect-prefix))
64108(define struct:rect-prefix
64109  (make-record-type-descriptor*
64110   'rect-prefix
64111   #f
64112   (|#%nongenerative-uid| rect-prefix)
64113   #f
64114   #f
64115   3
64116   0))
64117(define effect_2477 (finish_2141 struct:rect-prefix))
64118(define rect-prefix7.1
64119  (|#%name|
64120   rect-prefix
64121   (record-constructor
64122    (make-record-constructor-descriptor struct:rect-prefix #f #f))))
64123(define rect-prefix?
64124  (|#%name| rect-prefix? (record-predicate struct:rect-prefix)))
64125(define rect-prefix-sgn/z
64126  (|#%name| rect-prefix-sgn/z (record-accessor struct:rect-prefix 0)))
64127(define rect-prefix-n
64128  (|#%name| rect-prefix-n (record-accessor struct:rect-prefix 1)))
64129(define rect-prefix-start
64130  (|#%name| rect-prefix-start (record-accessor struct:rect-prefix 2)))
64131(define finish_3094
64132  (make-struct-type-install-properties
64133   '(polar-prefix)
64134   3
64135   0
64136   #f
64137   (list (cons prop:authentic #t))
64138   (current-inspector)
64139   #f
64140   '(0 1 2)
64141   #f
64142   'polar-prefix))
64143(define struct:polar-prefix
64144  (make-record-type-descriptor*
64145   'polar-prefix
64146   #f
64147   (|#%nongenerative-uid| polar-prefix)
64148   #f
64149   #f
64150   3
64151   0))
64152(define effect_2366 (finish_3094 struct:polar-prefix))
64153(define polar-prefix8.1
64154  (|#%name|
64155   polar-prefix
64156   (record-constructor
64157    (make-record-constructor-descriptor struct:polar-prefix #f #f))))
64158(define polar-prefix?
64159  (|#%name| polar-prefix? (record-predicate struct:polar-prefix)))
64160(define polar-prefix-sgn/z
64161  (|#%name| polar-prefix-sgn/z (record-accessor struct:polar-prefix 0)))
64162(define polar-prefix-n
64163  (|#%name| polar-prefix-n (record-accessor struct:polar-prefix 1)))
64164(define polar-prefix-start
64165  (|#%name| polar-prefix-start (record-accessor struct:polar-prefix 2)))
64166(define init-state
64167  (lambda (exactness_0 convert-mode_0 single-mode_0 fst_0)
64168    (parse-state6.1
64169     exactness_0
64170     convert-mode_0
64171     (eq? single-mode_0 'single)
64172     fst_0
64173     exactness_0)))
64174(define state-has-first-half?
64175  (lambda (state_0)
64176    (let ((fst_0 (parse-state-fst state_0)))
64177      (if fst_0 (not (eq? fst_0 '+/-)) #f))))
64178(define state-set-first-half
64179  (lambda (state_0 fst_0)
64180    (if (parse-state? state_0)
64181      (let ((exactness56_0 (parse-state-other-exactness state_0)))
64182        (let ((other-exactness57_0 (parse-state-exactness state_0)))
64183          (parse-state6.1
64184           exactness56_0
64185           (parse-state-convert-mode state_0)
64186           (parse-state-can-single? state_0)
64187           fst_0
64188           other-exactness57_0)))
64189      (raise-argument-error 'struct-copy "parse-state?" state_0))))
64190(define state-first-half
64191  (lambda (state_0)
64192    (let ((exactness_0 (parse-state-other-exactness state_0)))
64193      (let ((convert-mode_0 (parse-state-convert-mode state_0)))
64194        (let ((single-mode_0
64195               (if (parse-state-can-single? state_0) 'single 'double)))
64196          (let ((convert-mode_1 convert-mode_0) (exactness_1 exactness_0))
64197            (begin-unsafe
64198             (parse-state6.1
64199              exactness_1
64200              convert-mode_1
64201              (eq? single-mode_0 'single)
64202              #f
64203              exactness_1))))))))
64204(define state-second-half
64205  (lambda (state_0)
64206    (let ((exactness_0 (parse-state-exactness state_0)))
64207      (let ((convert-mode_0 (parse-state-convert-mode state_0)))
64208        (let ((single-mode_0
64209               (if (parse-state-can-single? state_0) 'single 'double)))
64210          (let ((convert-mode_1 convert-mode_0) (exactness_1 exactness_0))
64211            (begin-unsafe
64212             (parse-state6.1
64213              exactness_1
64214              convert-mode_1
64215              (eq? single-mode_0 'single)
64216              #f
64217              exactness_1))))))))
64218(define state->convert-mode
64219  (lambda (state_0)
64220    (if (parse-state? state_0) (parse-state-convert-mode state_0) state_0)))
64221(define state->dbz-convert-mode
64222  (lambda (state_0)
64223    (let ((convert-mode_0 (parse-state-convert-mode state_0)))
64224      (if (eq? convert-mode_0 'read) 'must-read convert-mode_0))))
64225(define bad-digit
64226  (lambda (c_0 s_0 state_0)
64227    (if (char=? c_0 '#\x0)
64228      (if (eq? (state->convert-mode state_0) 'must-read)
64229        (format "nul character in `~.a`" s_0)
64230        #f)
64231      (if (eq? (state->convert-mode state_0) 'must-read)
64232        (format "bad digit `~a`" c_0)
64233        #f))))
64234(define bad-mixed-decimal-fraction
64235  (lambda (s_0 state_0)
64236    (if (eq? (state->convert-mode state_0) 'must-read)
64237      (format "decimal points and fractions cannot be mixed in `~.a`" s_0)
64238      #f)))
64239(define bad-misplaced
64240  (lambda (what_0 s_0 state_0)
64241    (if (eq? (state->convert-mode state_0) 'must-read)
64242      (format "misplaced `~a` in `~.a`" what_0 s_0)
64243      #f)))
64244(define bad-no-digits
64245  (lambda (after_0 s_0 state_0)
64246    (if (eq? (state->convert-mode state_0) 'must-read)
64247      (format "missing digits after `~a` in `~.a`" after_0 s_0)
64248      #f)))
64249(define bad-extflonum-for-complex
64250  (lambda (i_0 s_0 state_0)
64251    (if (eq? (state->convert-mode state_0) 'must-read)
64252      (format "cannot combine extflonum `~a` into a complex number" i_0)
64253      #f)))
64254(define finish_3231
64255  (make-struct-type-install-properties
64256   '(lazy-expt)
64257   3
64258   0
64259   #f
64260   (list (cons prop:authentic #t))
64261   (current-inspector)
64262   #f
64263   '(0 1 2)
64264   #f
64265   'lazy-expt))
64266(define struct:lazy-expt
64267  (make-record-type-descriptor*
64268   'lazy-expt
64269   #f
64270   (|#%nongenerative-uid| lazy-expt)
64271   #f
64272   #f
64273   3
64274   0))
64275(define effect_2131 (finish_3231 struct:lazy-expt))
64276(define lazy-expt9.1
64277  (|#%name|
64278   lazy-expt
64279   (record-constructor
64280    (make-record-constructor-descriptor struct:lazy-expt #f #f))))
64281(define lazy-expt? (|#%name| lazy-expt? (record-predicate struct:lazy-expt)))
64282(define lazy-expt-n
64283  (|#%name| lazy-expt-n (record-accessor struct:lazy-expt 0)))
64284(define lazy-expt-radix
64285  (|#%name| lazy-expt-radix (record-accessor struct:lazy-expt 1)))
64286(define lazy-expt-exp
64287  (|#%name| lazy-expt-exp (record-accessor struct:lazy-expt 2)))
64288(define finish_2687
64289  (make-struct-type-install-properties
64290   '(lazy-rational)
64291   2
64292   0
64293   #f
64294   (list (cons prop:authentic #t))
64295   (current-inspector)
64296   #f
64297   '(0 1)
64298   #f
64299   'lazy-rational))
64300(define struct:lazy-rational
64301  (make-record-type-descriptor*
64302   'lazy-rational
64303   #f
64304   (|#%nongenerative-uid| lazy-rational)
64305   #f
64306   #f
64307   2
64308   0))
64309(define effect_3104 (finish_2687 struct:lazy-rational))
64310(define lazy-rational10.1
64311  (|#%name|
64312   lazy-rational
64313   (record-constructor
64314    (make-record-constructor-descriptor struct:lazy-rational #f #f))))
64315(define lazy-rational?
64316  (|#%name| lazy-rational? (record-predicate struct:lazy-rational)))
64317(define lazy-rational-n
64318  (|#%name| lazy-rational-n (record-accessor struct:lazy-rational 0)))
64319(define lazy-rational-d
64320  (|#%name| lazy-rational-d (record-accessor struct:lazy-rational 1)))
64321(define lazy-number
64322  (lambda (n_0 radix_0 exp_0)
64323    (if (eq? n_0 'dbz)
64324      n_0
64325      (if (eq? n_0 'dbz!)
64326        n_0
64327        (if (if (< exp_0 30) (> exp_0 -30) #f)
64328          (* n_0 (expt radix_0 exp_0))
64329          (lazy-expt9.1 n_0 radix_0 exp_0))))))
64330(define lazy-divide
64331  (lambda (n_0 d_0 d-exactness_0)
64332    (if (eqv? d_0 0)
64333      (if (eq? d-exactness_0 'exact) 'dbz! 'dbz)
64334      (if (let ((or-part_0 (lazy-expt? n_0)))
64335            (if or-part_0 or-part_0 (lazy-expt? d_0)))
64336        (lazy-rational10.1 n_0 d_0)
64337        (/ n_0 d_0)))))
64338(define simplify-lazy-divide
64339  (lambda (n0_0)
64340    (if (lazy-rational? n0_0)
64341      (let ((n_0 (lazy-rational-n n0_0)))
64342        (let ((d_0 (lazy-rational-d n0_0)))
64343          (let ((n-n_0 (if (lazy-expt? n_0) (lazy-expt-n n_0) n_0)))
64344            (let ((n-exp_0 (if (lazy-expt? n_0) (lazy-expt-exp n_0) 0)))
64345              (let ((d-n_0 (if (lazy-expt? d_0) (lazy-expt-n d_0) d_0)))
64346                (let ((d-exp_0 (if (lazy-expt? d_0) (lazy-expt-exp d_0) 0)))
64347                  (let ((radix_0
64348                         (if (lazy-expt? n_0)
64349                           (lazy-expt-radix n_0)
64350                           (lazy-expt-radix d_0))))
64351                    (let ((app_0 (/ n-n_0 d-n_0)))
64352                      (lazy-number app_0 radix_0 (- n-exp_0 d-exp_0))))))))))
64353      n0_0)))
64354(define force-lazy-exact
64355  (lambda (n0_0 state_0 s_0)
64356    (let ((n_0 (simplify-lazy-divide n0_0)))
64357      (if (let ((or-part_0 (eq? n_0 'dbz)))
64358            (if or-part_0 or-part_0 (eq? n_0 'dbz!)))
64359        (if (eq?
64360             (state->convert-mode (state->dbz-convert-mode state_0))
64361             'must-read)
64362          (format "division by zero in `~.a`" s_0)
64363          #f)
64364        (if (lazy-expt? n_0)
64365          (*
64366           (lazy-expt-n n_0)
64367           (expt (lazy-expt-radix n_0) (lazy-expt-exp n_0)))
64368          n_0)))))
64369(define force-lazy-inexact
64370  (let ((force-lazy-inexact_0
64371         (|#%name|
64372          force-lazy-inexact
64373          (lambda (sgn/z12_0 n013_0 state14_0 s15_0 precision11_0)
64374            (begin
64375              (let ((n1_0 (simplify-lazy-divide n013_0)))
64376                (if (eq? n013_0 'dbz)
64377                  (if (fx= sgn/z12_0 -1) -inf.0 +inf.0)
64378                  (if (eq? n013_0 'dbz!)
64379                    (if (eq?
64380                         (state->convert-mode
64381                          (state->dbz-convert-mode state14_0))
64382                         'must-read)
64383                      (format "division by zero in `~.a`" s15_0)
64384                      #f)
64385                    (if (lazy-expt? n1_0)
64386                      (let ((n_0 (lazy-expt-n n1_0)))
64387                        (let ((exp_0 (lazy-expt-exp n1_0)))
64388                          (let ((radix_0 (lazy-expt-radix n1_0)))
64389                            (let ((approx-expt_0
64390                                   (+
64391                                    (let ((app_0
64392                                           (if (integer? n_0)
64393                                             (integer-length n_0)
64394                                             (let ((app_0
64395                                                    (integer-length
64396                                                     (numerator n_0))))
64397                                               (-
64398                                                app_0
64399                                                (integer-length
64400                                                 (denominator n_0)))))))
64401                                      (/ app_0 (log radix_0 2)))
64402                                    exp_0)))
64403                              (if (eqv? n_0 0)
64404                                (if (fx= sgn/z12_0 -1) -0.0 0.0)
64405                                (if (> approx-expt_0 precision11_0)
64406                                  (if (fx= sgn/z12_0 -1) -inf.0 +inf.0)
64407                                  (if (< approx-expt_0 (- precision11_0))
64408                                    (if (fx= sgn/z12_0 -1) -0.0 0.0)
64409                                    (* n_0 (expt radix_0 exp_0)))))))))
64410                      (if (eqv? n1_0 0)
64411                        (if (fx= sgn/z12_0 -1) -0.0 0.0)
64412                        n1_0))))))))))
64413    (case-lambda
64414     ((sgn/z_0 n0_0 state_0 s_0)
64415      (force-lazy-inexact_0 sgn/z_0 n0_0 state_0 s_0 2048))
64416     ((sgn/z_0 n0_0 state_0 s_0 precision11_0)
64417      (force-lazy-inexact_0 sgn/z_0 n0_0 state_0 s_0 precision11_0)))))
64418(define fast-inexact
64419  (lambda (state_0 sgn_0 n_0 radix_0 exp_0 sgn2_0 exp2_0)
64420    (let ((tmp_0 (parse-state-exactness state_0)))
64421      (if (if (eq? tmp_0 'double) #t (eq? tmp_0 'approx))
64422        (if (state-has-first-half? state_0)
64423          #f
64424          (if (eqv? n_0 0)
64425            (if (fx= sgn_0 1) 0.0 -0.0)
64426            (if (if (fixnum? n_0)
64427                  (if (< n_0 1125899906842624) (> n_0 -1125899906842624) #f)
64428                  #f)
64429              (let ((exp_1 (+ exp_0 (* sgn2_0 exp2_0))))
64430                (if (if (fixnum? exp_1)
64431                      (if (fx<= radix_0 10)
64432                        (fx<= -15 exp_1 15)
64433                        (fx<= -12 exp_1 12))
64434                      #f)
64435                  (let ((m_0
64436                         (unsafe-fx->fl (if (fx= sgn_0 -1) (fx- 0 n_0) n_0))))
64437                    (if (eqv? exp_1 0)
64438                      m_0
64439                      (if (not (fixnum? exp_1))
64440                        #f
64441                        (let ((fradix_0
64442                               (if (fx= radix_0 10)
64443                                 10.0
64444                                 (unsafe-fx->fl radix_0))))
64445                          (if (fx< exp_1 0)
64446                            (/ m_0 (expt fradix_0 (fx- 0 exp_1)))
64447                            (* m_0 (expt fradix_0 exp_1)))))))
64448                  #f))
64449              #f)))
64450        #f))))
64451(define finish.1
64452  (|#%name|
64453   finish
64454   (lambda (range16_0 sgn/z18_0 n19_0 s20_0 state21_0)
64455     (begin
64456       (let ((fst_0 (parse-state-fst state21_0)))
64457         (if (let ((or-part_0 (not fst_0)))
64458               (if or-part_0 or-part_0 (eq? fst_0 '+/-)))
64459           (let ((tmp_0 (parse-state-exactness state21_0)))
64460             (if (eq? tmp_0 'single)
64461               (let ((v_0
64462                      (force-lazy-inexact sgn/z18_0 n19_0 state21_0 s20_0)))
64463                 (if (let ((or-part_0 (not v_0)))
64464                       (if or-part_0 or-part_0 (string? v_0)))
64465                   v_0
64466                   (if (parse-state-can-single? state21_0)
64467                     (raise
64468                      (let ((app_0
64469                             (string-append
64470                              "read: single-flonums are not supported on this platform\n"
64471                              "  conversion from: "
64472                              (number->string v_0))))
64473                        (|#%app|
64474                         exn:fail:unsupported
64475                         app_0
64476                         (current-continuation-marks))))
64477                     (exact->inexact v_0))))
64478               (if (eq? tmp_0 'exact)
64479                 (if (if (eqv? n19_0 +inf.0)
64480                       #t
64481                       (if (eqv? n19_0 -inf.0) #t (eqv? n19_0 +nan.0)))
64482                   (if (eq? (state->convert-mode state21_0) 'must-read)
64483                     (format "no exact representation for ~a" n19_0)
64484                     #f)
64485                   (let ((v_0 (force-lazy-exact n19_0 state21_0 s20_0)))
64486                     (if (let ((or-part_0 (not v_0)))
64487                           (if or-part_0 or-part_0 (string? v_0)))
64488                       v_0
64489                       (inexact->exact v_0))))
64490                 (if (eq? tmp_0 'extended)
64491                   (if (eq?
64492                        (parse-state-convert-mode state21_0)
64493                        'number-or-false)
64494                     #f
64495                     (if (extflonum-available?)
64496                       (let ((v_0
64497                              (force-lazy-inexact
64498                               sgn/z18_0
64499                               n19_0
64500                               state21_0
64501                               s20_0
64502                               32768)))
64503                         (if (let ((or-part_0 (not v_0)))
64504                               (if or-part_0 or-part_0 (string? v_0)))
64505                           v_0
64506                           (real->extfl v_0)))
64507                       (let ((trim-s_0
64508                              (let ((app_0 (if range16_0 (car range16_0) 0)))
64509                                (trim-number
64510                                 s20_0
64511                                 app_0
64512                                 (if range16_0
64513                                   (cdr range16_0)
64514                                   (string-length s20_0))))))
64515                         (string->number trim-s_0 10 'read))))
64516                   (if (if (eq? tmp_0 'double)
64517                         #t
64518                         (if (eq? tmp_0 'inexact) #t (eq? tmp_0 'approx)))
64519                     (let ((v_0
64520                            (force-lazy-inexact
64521                             sgn/z18_0
64522                             n19_0
64523                             state21_0
64524                             s20_0)))
64525                       (if (let ((or-part_0 (not v_0)))
64526                             (if or-part_0 or-part_0 (string? v_0)))
64527                         v_0
64528                         (exact->inexact v_0)))
64529                     (if (eq? tmp_0 'extflonum->inexact)
64530                       (if (eq? (state->convert-mode state21_0) 'must-read)
64531                         (format
64532                          "cannot convert extflonum to inexact in `~a`"
64533                          s20_0)
64534                         #f)
64535                       (if (eq? tmp_0 'extflonum->exact)
64536                         (if (eq? (state->convert-mode state21_0) 'must-read)
64537                           (format
64538                            "cannot convert extflonum to exact in `~a`"
64539                            s20_0)
64540                           #f)
64541                         (force-lazy-exact n19_0 state21_0 s20_0))))))))
64542           (if (polar-prefix? fst_0)
64543             (let ((pos_0 (polar-prefix-start fst_0)))
64544               (let ((temp60_0 (polar-prefix-sgn/z fst_0)))
64545                 (let ((m_0
64546                        (let ((temp61_0 (polar-prefix-n fst_0)))
64547                          (let ((temp63_0 (state-first-half state21_0)))
64548                            (let ((temp64_0 (cons 0 pos_0)))
64549                              (let ((temp63_1 temp63_0)
64550                                    (temp61_1 temp61_0)
64551                                    (temp60_1 temp60_0))
64552                                (finish.1
64553                                 temp64_0
64554                                 temp60_1
64555                                 temp61_1
64556                                 s20_0
64557                                 temp63_1)))))))
64558                   (let ((a_0
64559                          (let ((temp68_0 (state-second-half state21_0)))
64560                            (let ((temp69_0
64561                                   (cons pos_0 (string-length s20_0))))
64562                              (let ((temp68_1 temp68_0))
64563                                (finish.1
64564                                 temp69_0
64565                                 sgn/z18_0
64566                                 n19_0
64567                                 s20_0
64568                                 temp68_1))))))
64569                     (if (extflonum? m_0)
64570                       (bad-extflonum-for-complex m_0 s20_0 state21_0)
64571                       (if (extflonum? a_0)
64572                         (bad-extflonum-for-complex a_0 s20_0 state21_0)
64573                         (if (let ((or-part_0 (not m_0)))
64574                               (if or-part_0 or-part_0 (string? m_0)))
64575                           m_0
64576                           (if (let ((or-part_0 (not a_0)))
64577                                 (if or-part_0 or-part_0 (string? a_0)))
64578                             a_0
64579                             (let ((cn_0 (make-polar m_0 a_0)))
64580                               (let ((tmp_0 (parse-state-exactness state21_0)))
64581                                 (if (eq? tmp_0 'exact)
64582                                   (inexact->exact cn_0)
64583                                   cn_0)))))))))))
64584             (if fst_0
64585               (if (eq? (state->convert-mode state21_0) 'must-read)
64586                 (format "missing `i` for complex number in `~.a`" s20_0)
64587                 #f)
64588               (void)))))))))
64589(define finish-imaginary
64590  (lambda (sgn/z_0 n_0 s_0 start_0 end_0 state_0)
64591    (let ((fst_0 (parse-state-fst state_0)))
64592      (if (if (eq? fst_0 '+/-) (fx= start_0 end_0) #f)
64593        (let ((v_0 (finish.1 #f sgn/z_0 n_0 s_0 state_0)))
64594          (if (let ((or-part_0 (not v_0)))
64595                (if or-part_0 or-part_0 (string? v_0)))
64596            v_0
64597            (if (extflonum? v_0)
64598              (bad-extflonum-for-complex v_0 s_0 state_0)
64599              (let ((tmp_0 (parse-state-other-exactness state_0)))
64600                (let ((zero_0 (if (eq? tmp_0 'inexact) 0.0 0)))
64601                  (make-rectangular zero_0 v_0))))))
64602        (if (if (rect-prefix? fst_0) (fx= start_0 end_0) #f)
64603          (let ((pos_0 (rect-prefix-start fst_0)))
64604            (let ((temp74_0 (rect-prefix-sgn/z fst_0)))
64605              (let ((r_0
64606                     (let ((temp75_0 (rect-prefix-n fst_0)))
64607                       (let ((temp77_0 (state-first-half state_0)))
64608                         (let ((temp78_0 (cons 0 pos_0)))
64609                           (let ((temp77_1 temp77_0)
64610                                 (temp75_1 temp75_0)
64611                                 (temp74_1 temp74_0))
64612                             (finish.1
64613                              temp78_0
64614                              temp74_1
64615                              temp75_1
64616                              s_0
64617                              temp77_1)))))))
64618                (let ((i_0
64619                       (let ((temp82_0 (state-second-half state_0)))
64620                         (let ((temp83_0 (cons pos_0 (string-length s_0))))
64621                           (let ((temp82_1 temp82_0))
64622                             (finish.1 temp83_0 sgn/z_0 n_0 s_0 temp82_1))))))
64623                  (if (extflonum? r_0)
64624                    (bad-extflonum-for-complex r_0 s_0 state_0)
64625                    (if (extflonum? i_0)
64626                      (bad-extflonum-for-complex r_0 i_0 state_0)
64627                      (if (let ((or-part_0 (not r_0)))
64628                            (if or-part_0 or-part_0 (string? r_0)))
64629                        r_0
64630                        (if (let ((or-part_0 (not i_0)))
64631                              (if or-part_0 or-part_0 (string? i_0)))
64632                          i_0
64633                          (make-rectangular r_0 i_0)))))))))
64634          (bad-misplaced "i" s_0 state_0))))))
64635(define set-exactness.1
64636  (|#%name|
64637   set-exactness
64638   (lambda (override?23_0 state25_0 new-exactness26_0)
64639     (begin
64640       (let ((exactness_0 (parse-state-exactness state25_0)))
64641         (let ((result-exactness_0
64642                (if (if (eq? new-exactness26_0 'single)
64643                      #t
64644                      (eq? new-exactness26_0 'double))
64645                  (if (eq? exactness_0 'exact)
64646                    'exact
64647                    (if (eq? exactness_0 'decimal-as-exact)
64648                      (if override?23_0 new-exactness26_0 'decimal-as-exact)
64649                      new-exactness26_0))
64650                  (if (eq? new-exactness26_0 'approx)
64651                    (if (if (eq? exactness_0 'exact)
64652                          #t
64653                          (if (eq? exactness_0 'inexact)
64654                            #t
64655                            (eq? exactness_0 'decimal-as-exact)))
64656                      exactness_0
64657                      new-exactness26_0)
64658                    (if (eq? new-exactness26_0 'extended)
64659                      (if (eq? exactness_0 'inexact)
64660                        'extflonum->inexact
64661                        (if (eq? exactness_0 'exact)
64662                          'extflonum->exact
64663                          'extended))
64664                      new-exactness26_0)))))
64665           (if (eq? exactness_0 result-exactness_0)
64666             state25_0
64667             (if (parse-state? state25_0)
64668               (parse-state6.1
64669                result-exactness_0
64670                (parse-state-convert-mode state25_0)
64671                (parse-state-can-single? state25_0)
64672                (parse-state-fst state25_0)
64673                (parse-state-other-exactness state25_0))
64674               (raise-argument-error
64675                'struct-copy
64676                "parse-state?"
64677                state25_0)))))))))
64678(define set-exactness-by-char.1
64679  (|#%name|
64680   set-exactness-by-char
64681   (lambda (override?28_0 state30_0 c31_0)
64682     (begin
64683       (let ((temp86_0
64684              (let ((index_0
64685                     (if (char? c31_0)
64686                       (let ((codepoint_0 (char->integer c31_0)))
64687                         (if (if (unsafe-fx>= codepoint_0 48)
64688                               (unsafe-fx< codepoint_0 117)
64689                               #f)
64690                           (let ((tbl_0
64691                                  '#(1
64692                                     0
64693                                     0
64694                                     0
64695                                     0
64696                                     0
64697                                     0
64698                                     0
64699                                     0
64700                                     0
64701                                     0
64702                                     0
64703                                     0
64704                                     0
64705                                     0
64706                                     0
64707                                     0
64708                                     0
64709                                     0
64710                                     0
64711                                     1
64712                                     1
64713                                     2
64714                                     0
64715                                     0
64716                                     0
64717                                     0
64718                                     0
64719                                     1
64720                                     0
64721                                     0
64722                                     0
64723                                     0
64724                                     0
64725                                     0
64726                                     2
64727                                     3
64728                                     0
64729                                     0
64730                                     0
64731                                     0
64732                                     0
64733                                     0
64734                                     0
64735                                     0
64736                                     0
64737                                     0
64738                                     0
64739                                     0
64740                                     0
64741                                     0
64742                                     0
64743                                     1
64744                                     1
64745                                     2
64746                                     0
64747                                     0
64748                                     0
64749                                     0
64750                                     0
64751                                     1
64752                                     0
64753                                     0
64754                                     0
64755                                     0
64756                                     0
64757                                     0
64758                                     2
64759                                     3)))
64760                             (unsafe-vector*-ref
64761                              tbl_0
64762                              (unsafe-fx- codepoint_0 48)))
64763                           0))
64764                       0)))
64765                (if (unsafe-fx< index_0 1)
64766                  (void)
64767                  (if (unsafe-fx< index_0 2)
64768                    'double
64769                    (if (unsafe-fx< index_0 3) 'single 'extended))))))
64770         (set-exactness.1 override?28_0 state30_0 temp86_0))))))
64771(define trim-number
64772  (lambda (s_0 start_0 end_0)
64773    (if (eqv? (string-ref s_0 start_0) '#\x23)
64774      (trim-number s_0 (fx+ 2 start_0) end_0)
64775      (if (let ((c_0 (string-ref s_0 (fx- end_0 1))))
64776            (let ((or-part_0 (eqv? c_0 '#\x69)))
64777              (if or-part_0 or-part_0 (eqv? c_0 '#\x49))))
64778        (trim-number s_0 start_0 (fx- end_0 1))
64779        (substring s_0 start_0 end_0)))))
64780(define add-digit
64781  (lambda (d_0 c_0 radix_0)
64782    (if (pair? d_0)
64783      (let ((p_0 (car d_0)))
64784        (let ((digits_0 (add-digit (car p_0) c_0 radix_0)))
64785          (if (pair? digits_0)
64786            (let ((app_0 (car digits_0)))
64787              (let ((app_1
64788                     (let ((app_1 (cdr digits_0))) (cons app_1 (cdr p_0)))))
64789                (list* app_0 app_1 (cdr d_0))))
64790            (let ((app_0 (cons digits_0 (fx+ 1 (cdr p_0)))))
64791              (cons app_0 (cdr d_0))))))
64792      (if (eqv? d_0 0)
64793        c_0
64794        (if (< d_0 1267650600228229401496703205376)
64795          (+ (* d_0 radix_0) c_0)
64796          (cons (cons c_0 1) d_0))))))
64797(define digits->integer
64798  (lambda (d_0 radix_0)
64799    (if (pair? d_0)
64800      (let ((len_0
64801             (letrec*
64802              ((loop_0
64803                (|#%name|
64804                 loop
64805                 (lambda (d_1)
64806                   (begin (if (pair? d_1) (fx+ 1 (loop_0 (cdr d_1))) 1))))))
64807              (loop_0 d_0))))
64808        (letrec*
64809         ((loop_0
64810           (|#%name|
64811            loop
64812            (lambda (d_1 len_1)
64813              (begin
64814                (if (fx= len_1 1)
64815                  (if (pair? d_1) (caar d_1) d_1)
64816                  (let ((hi-len_0 (unsafe-fxrshift len_1 1)))
64817                    (let ((lo-len_0 (fx- len_1 hi-len_0)))
64818                      (let ((hi_0 (loop_0 d_1 hi-len_0)))
64819                        (letrec*
64820                         ((split-loop_0
64821                           (|#%name|
64822                            split-loop
64823                            (lambda (shift_0 hi-len_1 d_2)
64824                              (begin
64825                                (if (fx= hi-len_1 0)
64826                                  (+
64827                                   hi_0
64828                                   (let ((app_0 (expt radix_0 shift_0)))
64829                                     (* app_0 (loop_0 d_2 lo-len_0))))
64830                                  (let ((app_0 (fx+ shift_0 (cdar d_2))))
64831                                    (let ((app_1 (fx- hi-len_1 1)))
64832                                      (split-loop_0
64833                                       app_0
64834                                       app_1
64835                                       (cdr d_2))))))))))
64836                         (split-loop_0 0 hi-len_0 d_1)))))))))))
64837         (loop_0 d_0 len_0)))
64838      d_0)))
64839(define do-string->number.1
64840  (|#%name|
64841   do-string->number
64842   (lambda (radix-set?33_0
64843            s35_0
64844            start36_0
64845            end37_0
64846            radix38_0
64847            exactness39_0
64848            convert-mode40_0
64849            single-mode41_0)
64850     (begin
64851       (let ((c_0
64852              (if (fx= start36_0 end37_0)
64853                'eof
64854                (let ((c_0 (string-ref s35_0 start36_0)))
64855                  (maybe-digit c_0 radix38_0)))))
64856         (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
64857           (if (eq? (state->convert-mode convert-mode40_0) 'must-read)
64858             (format "no digits")
64859             #f)
64860           (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
64861             (let ((app_0 (fx+ 1 start36_0)))
64862               (read-integer
64863                1
64864                c_0
64865                s35_0
64866                app_0
64867                end37_0
64868                radix38_0
64869                (begin-unsafe
64870                 (parse-state6.1
64871                  exactness39_0
64872                  convert-mode40_0
64873                  (eq? single-mode41_0 'single)
64874                  #f
64875                  exactness39_0))))
64876             (if (let ((or-part_0 (eqv? c_0 '#\x23)))
64877                   (if or-part_0 or-part_0 #f))
64878               (let ((next_0 (fx+ 1 start36_0)))
64879                 (let ((i_0
64880                        (if (fx= next_0 end37_0)
64881                          'eof
64882                          (let ((c_1 (string-ref s35_0 next_0)))
64883                            (maybe-digit c_1 10)))))
64884                   (if (let ((or-part_0 (eqv? i_0 'eof)))
64885                         (if or-part_0 or-part_0 #f))
64886                     (if (eq?
64887                          (state->convert-mode convert-mode40_0)
64888                          'must-read)
64889                       (format
64890                        "no character after `#` indicator in `~.a`"
64891                        s35_0)
64892                       #f)
64893                     (if (let ((or-part_0 (eqv? i_0 '#\x65)))
64894                           (if or-part_0
64895                             or-part_0
64896                             (let ((or-part_1 (eqv? i_0 '#\x45)))
64897                               (if or-part_1
64898                                 or-part_1
64899                                 (let ((or-part_2 (eqv? i_0 '#\x69)))
64900                                   (if or-part_2
64901                                     or-part_2
64902                                     (let ((or-part_3 (eqv? i_0 '#\x49)))
64903                                       (if or-part_3 or-part_3 #f))))))))
64904                       (if (let ((or-part_0 (eq? exactness39_0 'exact)))
64905                             (if or-part_0
64906                               or-part_0
64907                               (eq? exactness39_0 'inexact)))
64908                         (if (eq?
64909                              (state->convert-mode convert-mode40_0)
64910                              'must-read)
64911                           (format
64912                            "misplaced exactness specification at `~.a`"
64913                            (substring s35_0 start36_0 end37_0))
64914                           #f)
64915                         (let ((temp89_0 (fx+ 1 next_0)))
64916                           (let ((temp93_0
64917                                  (if (let ((or-part_0 (char=? i_0 '#\x65)))
64918                                        (if or-part_0
64919                                          or-part_0
64920                                          (char=? i_0 '#\x45)))
64921                                    'exact
64922                                    'inexact)))
64923                             (let ((temp94_0
64924                                    (if (eq? convert-mode40_0 'read)
64925                                      'must-read
64926                                      convert-mode40_0)))
64927                               (let ((temp93_1 temp93_0) (temp89_1 temp89_0))
64928                                 (do-string->number.1
64929                                  radix-set?33_0
64930                                  s35_0
64931                                  temp89_1
64932                                  end37_0
64933                                  radix38_0
64934                                  temp93_1
64935                                  temp94_0
64936                                  single-mode41_0))))))
64937                       (if (let ((or-part_0 (eqv? i_0 '#\x62)))
64938                             (if or-part_0
64939                               or-part_0
64940                               (let ((or-part_1 (eqv? i_0 '#\x42)))
64941                                 (if or-part_1
64942                                   or-part_1
64943                                   (let ((or-part_2 (eqv? i_0 '#\x6f)))
64944                                     (if or-part_2
64945                                       or-part_2
64946                                       (let ((or-part_3 (eqv? i_0 '#\x4f)))
64947                                         (if or-part_3
64948                                           or-part_3
64949                                           (let ((or-part_4 (eqv? i_0 '#\x64)))
64950                                             (if or-part_4
64951                                               or-part_4
64952                                               (let ((or-part_5
64953                                                      (eqv? i_0 '#\x44)))
64954                                                 (if or-part_5
64955                                                   or-part_5
64956                                                   (let ((or-part_6
64957                                                          (eqv? i_0 '#\x78)))
64958                                                     (if or-part_6
64959                                                       or-part_6
64960                                                       (let ((or-part_7
64961                                                              (eqv?
64962                                                               i_0
64963                                                               '#\x58)))
64964                                                         (if or-part_7
64965                                                           or-part_7
64966                                                           #f))))))))))))))))
64967                         (if radix-set?33_0
64968                           (if (eq?
64969                                (state->convert-mode convert-mode40_0)
64970                                'must-read)
64971                             (format
64972                              "misplaced radix specification at `~.a`"
64973                              (substring s35_0 start36_0 end37_0))
64974                             #f)
64975                           (let ((radix_0
64976                                  (if (if (eqv? i_0 '#\x62)
64977                                        #t
64978                                        (eqv? i_0 '#\x42))
64979                                    2
64980                                    (if (if (eqv? i_0 '#\x6f)
64981                                          #t
64982                                          (eqv? i_0 '#\x4f))
64983                                      8
64984                                      (if (if (eqv? i_0 '#\x64)
64985                                            #t
64986                                            (eqv? i_0 '#\x44))
64987                                        10
64988                                        16)))))
64989                             (let ((temp97_0 (fx+ 1 next_0)))
64990                               (let ((temp102_0
64991                                      (if (eq? convert-mode40_0 'read)
64992                                        'must-read
64993                                        convert-mode40_0)))
64994                                 (let ((temp97_1 temp97_0))
64995                                   (do-string->number.1
64996                                    #t
64997                                    s35_0
64998                                    temp97_1
64999                                    end37_0
65000                                    radix_0
65001                                    exactness39_0
65002                                    temp102_0
65003                                    single-mode41_0))))))
65004                         (if (eq?
65005                              (state->convert-mode
65006                               (if (eq? convert-mode40_0 'read)
65007                                 'must-read
65008                                 convert-mode40_0))
65009                              'must-read)
65010                           (format
65011                            "bad `#` indicator `~a` at `~.a`"
65012                            i_0
65013                            (substring s35_0 start36_0 end37_0))
65014                           #f))))))
65015               (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65016                     (if or-part_0 or-part_0 #f))
65017                 (let ((app_0 (fx+ 1 start36_0)))
65018                   (read-signed
65019                    1
65020                    s35_0
65021                    app_0
65022                    end37_0
65023                    radix38_0
65024                    (begin-unsafe
65025                     (parse-state6.1
65026                      exactness39_0
65027                      convert-mode40_0
65028                      (eq? single-mode41_0 'single)
65029                      '+/-
65030                      exactness39_0))))
65031                 (if (let ((or-part_0 (eqv? c_0 '#\x2d)))
65032                       (if or-part_0 or-part_0 #f))
65033                   (let ((app_0 (fx+ 1 start36_0)))
65034                     (read-signed
65035                      -1
65036                      s35_0
65037                      app_0
65038                      end37_0
65039                      radix38_0
65040                      (begin-unsafe
65041                       (parse-state6.1
65042                        exactness39_0
65043                        convert-mode40_0
65044                        (eq? single-mode41_0 'single)
65045                        '+/-
65046                        exactness39_0))))
65047                   (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65048                         (if or-part_0 or-part_0 #f))
65049                     (let ((app_0 (fx+ 1 start36_0)))
65050                       (read-decimal
65051                        1
65052                        #f
65053                        0
65054                        s35_0
65055                        app_0
65056                        end37_0
65057                        radix38_0
65058                        (let ((temp104_0
65059                               (begin-unsafe
65060                                (parse-state6.1
65061                                 exactness39_0
65062                                 convert-mode40_0
65063                                 (eq? single-mode41_0 'single)
65064                                 #f
65065                                 exactness39_0))))
65066                          (set-exactness.1 #f temp104_0 'approx))))
65067                     (bad-digit c_0 s35_0 convert-mode40_0))))))))))))
65068(define read-signed
65069  (lambda (sgn_0 s_0 start_0 end_0 radix_0 state_0)
65070    (let ((c_0
65071           (if (fx= start_0 end_0)
65072             'eof
65073             (let ((c_0 (string-ref s_0 start_0)))
65074               (maybe-digit c_0 radix_0)))))
65075      (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
65076        (if (eq? (state->convert-mode state_0) 'must-read)
65077          (format "no digits in `~.a`" s_0)
65078          #f)
65079        (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65080          (read-integer sgn_0 c_0 s_0 (fx+ 1 start_0) end_0 radix_0 state_0)
65081          (if (let ((or-part_0 (eqv? c_0 '#\x2e))) (if or-part_0 or-part_0 #f))
65082            (let ((app_0 (fx+ 1 start_0)))
65083              (read-decimal
65084               sgn_0
65085               #f
65086               0
65087               s_0
65088               app_0
65089               end_0
65090               radix_0
65091               (set-exactness.1 #f state_0 'approx)))
65092            (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65093                  (if or-part_0
65094                    or-part_0
65095                    (let ((or-part_1 (eqv? c_0 '#\x49)))
65096                      (if or-part_1 or-part_1 #f))))
65097              (let ((c2_0
65098                     (if (fx= (fx+ 1 start_0) end_0)
65099                       'eof
65100                       (let ((c_1 (string-ref s_0 (fx+ 1 start_0))))
65101                         (maybe-digit c_1 radix_0)))))
65102                (if (let ((or-part_0 (eqv? c2_0 'eof)))
65103                      (if or-part_0 or-part_0 #f))
65104                  (finish-imaginary
65105                   sgn_0
65106                   sgn_0
65107                   s_0
65108                   (fx+ 1 start_0)
65109                   end_0
65110                   state_0)
65111                  (if (let ((or-part_0 (eqv? c2_0 '#\x6e)))
65112                        (if or-part_0
65113                          or-part_0
65114                          (let ((or-part_1 (eqv? c2_0 '#\x4e)))
65115                            (if or-part_1 or-part_1 #f))))
65116                    (read-infinity
65117                     sgn_0
65118                     c_0
65119                     s_0
65120                     (fx+ 2 start_0)
65121                     end_0
65122                     radix_0
65123                     state_0)
65124                    (bad-digit c_0 s_0 state_0))))
65125              (if (let ((or-part_0 (eqv? c_0 '#\x6e)))
65126                    (if or-part_0
65127                      or-part_0
65128                      (let ((or-part_1 (eqv? c_0 '#\x4e)))
65129                        (if or-part_1 or-part_1 #f))))
65130                (read-nan c_0 s_0 (fx+ 1 start_0) end_0 radix_0 state_0)
65131                (bad-digit c_0 s_0 state_0)))))))))
65132(define read-integer
65133  (lambda (sgn_0 n_0 s_0 start_0 end_0 radix_0 state_0)
65134    (let ((get-n_0
65135           (|#%name|
65136            get-n
65137            (lambda () (begin (* sgn_0 (digits->integer n_0 radix_0)))))))
65138      (let ((c_0
65139             (if (fx= start_0 end_0)
65140               'eof
65141               (let ((c_0 (string-ref s_0 start_0)))
65142                 (maybe-digit c_0 radix_0)))))
65143        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
65144          (let ((temp109_0 (get-n_0)))
65145            (finish.1 #f sgn_0 temp109_0 s_0 state_0))
65146          (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65147            (let ((app_0 (add-digit n_0 c_0 radix_0)))
65148              (read-integer
65149               sgn_0
65150               app_0
65151               s_0
65152               (fx+ 1 start_0)
65153               end_0
65154               radix_0
65155               state_0))
65156            (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65157                  (if or-part_0 or-part_0 #f))
65158              (let ((app_0 (digits->integer n_0 radix_0)))
65159                (let ((app_1 (fx+ 1 start_0)))
65160                  (read-decimal
65161                   sgn_0
65162                   app_0
65163                   0
65164                   s_0
65165                   app_1
65166                   end_0
65167                   radix_0
65168                   (set-exactness.1 #f state_0 'approx))))
65169              (if (let ((or-part_0 (eqv? c_0 '#\x65)))
65170                    (if or-part_0
65171                      or-part_0
65172                      (let ((or-part_1 (eqv? c_0 '#\x45)))
65173                        (if or-part_1
65174                          or-part_1
65175                          (let ((or-part_2 (eqv? c_0 '#\x64)))
65176                            (if or-part_2
65177                              or-part_2
65178                              (let ((or-part_3 (eqv? c_0 '#\x44)))
65179                                (if or-part_3
65180                                  or-part_3
65181                                  (let ((or-part_4 (eqv? c_0 '#\x6c)))
65182                                    (if or-part_4
65183                                      or-part_4
65184                                      (let ((or-part_5 (eqv? c_0 '#\x4c)))
65185                                        (if or-part_5
65186                                          or-part_5
65187                                          (let ((or-part_6 (eqv? c_0 '#\x66)))
65188                                            (if or-part_6
65189                                              or-part_6
65190                                              (let ((or-part_7
65191                                                     (eqv? c_0 '#\x46)))
65192                                                (if or-part_7
65193                                                  or-part_7
65194                                                  (let ((or-part_8
65195                                                         (eqv? c_0 '#\x73)))
65196                                                    (if or-part_8
65197                                                      or-part_8
65198                                                      (let ((or-part_9
65199                                                             (eqv?
65200                                                              c_0
65201                                                              '#\x53)))
65202                                                        (if or-part_9
65203                                                          or-part_9
65204                                                          (let ((or-part_10
65205                                                                 (eqv?
65206                                                                  c_0
65207                                                                  '#\x74)))
65208                                                            (if or-part_10
65209                                                              or-part_10
65210                                                              (let ((or-part_11
65211                                                                     (eqv?
65212                                                                      c_0
65213                                                                      '#\x54)))
65214                                                                (if or-part_11
65215                                                                  or-part_11
65216                                                                  #f))))))))))))))))))))))))
65217                (let ((app_0 (get-n_0)))
65218                  (let ((app_1 (fx+ 1 start_0)))
65219                    (read-exponent
65220                     sgn_0
65221                     app_0
65222                     0
65223                     s_0
65224                     app_1
65225                     end_0
65226                     radix_0
65227                     (set-exactness-by-char.1 #f state_0 c_0))))
65228                (if (let ((or-part_0 (eqv? c_0 '#\x2f)))
65229                      (if or-part_0 or-part_0 #f))
65230                  (let ((app_0 (get-n_0)))
65231                    (read-rational
65232                     sgn_0
65233                     app_0
65234                     #f
65235                     s_0
65236                     (fx+ 1 start_0)
65237                     end_0
65238                     radix_0
65239                     state_0))
65240                  (if (let ((or-part_0 (eqv? c_0 '#\x23)))
65241                        (if or-part_0 or-part_0 #f))
65242                    (let ((app_0 (digits->integer n_0 radix_0)))
65243                      (let ((app_1 (fx+ 1 start_0)))
65244                        (read-approx
65245                         sgn_0
65246                         app_0
65247                         1
65248                         #f
65249                         s_0
65250                         app_1
65251                         end_0
65252                         radix_0
65253                         (set-exactness.1 #f state_0 'approx))))
65254                    (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65255                          (if or-part_0
65256                            or-part_0
65257                            (let ((or-part_1 (eqv? c_0 '#\x2d)))
65258                              (if or-part_1 or-part_1 #f))))
65259                      (let ((app_0 (get-n_0)))
65260                        (let ((app_1 (if (eqv? c_0 '#\x2b) 1 -1)))
65261                          (read-imag
65262                           c_0
65263                           sgn_0
65264                           app_0
65265                           app_1
65266                           s_0
65267                           (fx+ 1 start_0)
65268                           end_0
65269                           radix_0
65270                           state_0)))
65271                      (if (let ((or-part_0 (eqv? c_0 '#\x40)))
65272                            (if or-part_0 or-part_0 #f))
65273                        (let ((app_0 (get-n_0)))
65274                          (read-polar
65275                           sgn_0
65276                           app_0
65277                           s_0
65278                           (fx+ 1 start_0)
65279                           end_0
65280                           radix_0
65281                           state_0))
65282                        (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65283                              (if or-part_0
65284                                or-part_0
65285                                (let ((or-part_1 (eqv? c_0 '#\x49)))
65286                                  (if or-part_1 or-part_1 #f))))
65287                          (let ((app_0 (get-n_0)))
65288                            (finish-imaginary
65289                             sgn_0
65290                             app_0
65291                             s_0
65292                             (fx+ 1 start_0)
65293                             end_0
65294                             state_0))
65295                          (bad-digit c_0 s_0 state_0))))))))))))))
65296(define read-decimal
65297  (lambda (sgn_0 n_0 exp_0 s_0 start_0 end_0 radix_0 state_0)
65298    (let ((get-n_0
65299           (|#%name|
65300            get-n
65301            (lambda ()
65302              (begin
65303                (if n_0
65304                  (let ((app_0 (* sgn_0 (digits->integer n_0 radix_0))))
65305                    (lazy-number app_0 radix_0 (- exp_0)))
65306                  (bad-no-digits "." s_0 state_0)))))))
65307      (let ((c_0
65308             (if (fx= start_0 end_0)
65309               'eof
65310               (let ((c_0 (string-ref s_0 start_0)))
65311                 (maybe-digit c_0 radix_0)))))
65312        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
65313          (let ((or-part_0
65314                 (if n_0
65315                   (fast-inexact
65316                    state_0
65317                    sgn_0
65318                    (digits->integer n_0 radix_0)
65319                    radix_0
65320                    0
65321                    -1
65322                    exp_0)
65323                   #f)))
65324            (if or-part_0
65325              or-part_0
65326              (let ((v_0 (get-n_0)))
65327                (if (let ((or-part_1 (not v_0)))
65328                      (if or-part_1 or-part_1 (string? v_0)))
65329                  v_0
65330                  (finish.1 #f sgn_0 v_0 s_0 state_0)))))
65331          (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65332            (let ((next_0 (fx+ 1 start_0)))
65333              (if (if (eqv? c_0 '#\x30) (fx= next_0 end_0) #f)
65334                (read-decimal
65335                 sgn_0
65336                 (if n_0 n_0 0)
65337                 exp_0
65338                 s_0
65339                 next_0
65340                 end_0
65341                 radix_0
65342                 state_0)
65343                (let ((app_0 (add-digit (if n_0 n_0 0) c_0 radix_0)))
65344                  (let ((app_1 (fx+ 1 exp_0)))
65345                    (read-decimal
65346                     sgn_0
65347                     app_0
65348                     app_1
65349                     s_0
65350                     (fx+ 1 start_0)
65351                     end_0
65352                     radix_0
65353                     state_0)))))
65354            (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65355                  (if or-part_0 or-part_0 #f))
65356              (bad-misplaced "." s_0 state_0)
65357              (if (let ((or-part_0 (eqv? c_0 '#\x65)))
65358                    (if or-part_0
65359                      or-part_0
65360                      (let ((or-part_1 (eqv? c_0 '#\x45)))
65361                        (if or-part_1
65362                          or-part_1
65363                          (let ((or-part_2 (eqv? c_0 '#\x64)))
65364                            (if or-part_2
65365                              or-part_2
65366                              (let ((or-part_3 (eqv? c_0 '#\x44)))
65367                                (if or-part_3
65368                                  or-part_3
65369                                  (let ((or-part_4 (eqv? c_0 '#\x6c)))
65370                                    (if or-part_4
65371                                      or-part_4
65372                                      (let ((or-part_5 (eqv? c_0 '#\x4c)))
65373                                        (if or-part_5
65374                                          or-part_5
65375                                          (let ((or-part_6 (eqv? c_0 '#\x66)))
65376                                            (if or-part_6
65377                                              or-part_6
65378                                              (let ((or-part_7
65379                                                     (eqv? c_0 '#\x46)))
65380                                                (if or-part_7
65381                                                  or-part_7
65382                                                  (let ((or-part_8
65383                                                         (eqv? c_0 '#\x73)))
65384                                                    (if or-part_8
65385                                                      or-part_8
65386                                                      (let ((or-part_9
65387                                                             (eqv?
65388                                                              c_0
65389                                                              '#\x53)))
65390                                                        (if or-part_9
65391                                                          or-part_9
65392                                                          (let ((or-part_10
65393                                                                 (eqv?
65394                                                                  c_0
65395                                                                  '#\x74)))
65396                                                            (if or-part_10
65397                                                              or-part_10
65398                                                              (let ((or-part_11
65399                                                                     (eqv?
65400                                                                      c_0
65401                                                                      '#\x54)))
65402                                                                (if or-part_11
65403                                                                  or-part_11
65404                                                                  #f))))))))))))))))))))))))
65405                (if n_0
65406                  (let ((app_0 (* sgn_0 (digits->integer n_0 radix_0))))
65407                    (let ((app_1 (- exp_0)))
65408                      (let ((app_2 (fx+ 1 start_0)))
65409                        (read-exponent
65410                         sgn_0
65411                         app_0
65412                         app_1
65413                         s_0
65414                         app_2
65415                         end_0
65416                         radix_0
65417                         (set-exactness-by-char.1 #f state_0 c_0)))))
65418                  (bad-no-digits "." s_0 state_0))
65419                (if (let ((or-part_0 (eqv? c_0 '#\x2f)))
65420                      (if or-part_0 or-part_0 #f))
65421                  (bad-mixed-decimal-fraction s_0 state_0)
65422                  (if (let ((or-part_0 (eqv? c_0 '#\x23)))
65423                        (if or-part_0 or-part_0 #f))
65424                    (if n_0
65425                      (let ((app_0 (digits->integer n_0 radix_0)))
65426                        (let ((app_1 (fx- 0 exp_0)))
65427                          (read-approx
65428                           sgn_0
65429                           app_0
65430                           app_1
65431                           #t
65432                           s_0
65433                           (fx+ 1 start_0)
65434                           end_0
65435                           radix_0
65436                           state_0)))
65437                      (bad-misplaced "#" s_0 state_0))
65438                    (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65439                          (if or-part_0
65440                            or-part_0
65441                            (let ((or-part_1 (eqv? c_0 '#\x2d)))
65442                              (if or-part_1 or-part_1 #f))))
65443                      (if n_0
65444                        (let ((app_0 (get-n_0)))
65445                          (let ((app_1 (if (eqv? c_0 '#\x2b) 1 -1)))
65446                            (read-imag
65447                             c_0
65448                             sgn_0
65449                             app_0
65450                             app_1
65451                             s_0
65452                             (fx+ 1 start_0)
65453                             end_0
65454                             radix_0
65455                             state_0)))
65456                        (bad-no-digits "." s_0 state_0))
65457                      (if (let ((or-part_0 (eqv? c_0 '#\x40)))
65458                            (if or-part_0 or-part_0 #f))
65459                        (let ((v_0 (get-n_0)))
65460                          (if (let ((or-part_0 (not v_0)))
65461                                (if or-part_0 or-part_0 (string? v_0)))
65462                            v_0
65463                            (read-polar
65464                             sgn_0
65465                             v_0
65466                             s_0
65467                             (fx+ 1 start_0)
65468                             end_0
65469                             radix_0
65470                             state_0)))
65471                        (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65472                              (if or-part_0
65473                                or-part_0
65474                                (let ((or-part_1 (eqv? c_0 '#\x49)))
65475                                  (if or-part_1 or-part_1 #f))))
65476                          (let ((v_0 (get-n_0)))
65477                            (if (let ((or-part_0 (not v_0)))
65478                                  (if or-part_0 or-part_0 (string? v_0)))
65479                              v_0
65480                              (finish-imaginary
65481                               sgn_0
65482                               v_0
65483                               s_0
65484                               (fx+ 1 start_0)
65485                               end_0
65486                               state_0)))
65487                          (bad-digit c_0 s_0 state_0))))))))))))))
65488(define read-approx
65489  (lambda (sgn_0 n_0 exp_0 saw-.?_0 s_0 start_0 end_0 radix_0 state_0)
65490    (let ((get-n_0
65491           (|#%name|
65492            get-n
65493            (lambda () (begin (lazy-number (* sgn_0 n_0) radix_0 exp_0))))))
65494      (let ((c_0
65495             (if (fx= start_0 end_0)
65496               'eof
65497               (let ((c_0 (string-ref s_0 start_0)))
65498                 (maybe-digit c_0 radix_0)))))
65499        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
65500          (let ((temp125_0 (get-n_0)))
65501            (finish.1 #f sgn_0 temp125_0 s_0 state_0))
65502          (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65503            (bad-misplaced "#" s_0 state_0)
65504            (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65505                  (if or-part_0 or-part_0 #f))
65506              (if saw-.?_0
65507                (bad-misplaced "." s_0 state_0)
65508                (read-approx
65509                 sgn_0
65510                 n_0
65511                 exp_0
65512                 #t
65513                 s_0
65514                 (fx+ 1 start_0)
65515                 end_0
65516                 radix_0
65517                 state_0))
65518              (if (let ((or-part_0 (eqv? c_0 '#\x23)))
65519                    (if or-part_0 or-part_0 #f))
65520                (let ((app_0 (if saw-.?_0 exp_0 (fx+ 1 exp_0))))
65521                  (read-approx
65522                   sgn_0
65523                   n_0
65524                   app_0
65525                   saw-.?_0
65526                   s_0
65527                   (fx+ 1 start_0)
65528                   end_0
65529                   radix_0
65530                   state_0))
65531                (if (let ((or-part_0 (eqv? c_0 '#\x65)))
65532                      (if or-part_0
65533                        or-part_0
65534                        (let ((or-part_1 (eqv? c_0 '#\x45)))
65535                          (if or-part_1
65536                            or-part_1
65537                            (let ((or-part_2 (eqv? c_0 '#\x64)))
65538                              (if or-part_2
65539                                or-part_2
65540                                (let ((or-part_3 (eqv? c_0 '#\x44)))
65541                                  (if or-part_3
65542                                    or-part_3
65543                                    (let ((or-part_4 (eqv? c_0 '#\x6c)))
65544                                      (if or-part_4
65545                                        or-part_4
65546                                        (let ((or-part_5 (eqv? c_0 '#\x4c)))
65547                                          (if or-part_5
65548                                            or-part_5
65549                                            (let ((or-part_6
65550                                                   (eqv? c_0 '#\x66)))
65551                                              (if or-part_6
65552                                                or-part_6
65553                                                (let ((or-part_7
65554                                                       (eqv? c_0 '#\x46)))
65555                                                  (if or-part_7
65556                                                    or-part_7
65557                                                    (let ((or-part_8
65558                                                           (eqv? c_0 '#\x73)))
65559                                                      (if or-part_8
65560                                                        or-part_8
65561                                                        (let ((or-part_9
65562                                                               (eqv?
65563                                                                c_0
65564                                                                '#\x53)))
65565                                                          (if or-part_9
65566                                                            or-part_9
65567                                                            (let ((or-part_10
65568                                                                   (eqv?
65569                                                                    c_0
65570                                                                    '#\x74)))
65571                                                              (if or-part_10
65572                                                                or-part_10
65573                                                                (let ((or-part_11
65574                                                                       (eqv?
65575                                                                        c_0
65576                                                                        '#\x54)))
65577                                                                  (if or-part_11
65578                                                                    or-part_11
65579                                                                    #f))))))))))))))))))))))))
65580                  (let ((app_0 (* sgn_0 n_0)))
65581                    (let ((app_1 (fx+ 1 start_0)))
65582                      (read-exponent
65583                       sgn_0
65584                       app_0
65585                       exp_0
65586                       s_0
65587                       app_1
65588                       end_0
65589                       radix_0
65590                       (set-exactness-by-char.1 #f state_0 c_0))))
65591                  (if (let ((or-part_0 (eqv? c_0 '#\x2f)))
65592                        (if or-part_0 or-part_0 #f))
65593                    (if saw-.?_0
65594                      (bad-mixed-decimal-fraction s_0 state_0)
65595                      (let ((app_0 (get-n_0)))
65596                        (read-rational
65597                         sgn_0
65598                         app_0
65599                         #f
65600                         s_0
65601                         (fx+ 1 start_0)
65602                         end_0
65603                         radix_0
65604                         state_0)))
65605                    (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65606                          (if or-part_0
65607                            or-part_0
65608                            (let ((or-part_1 (eqv? c_0 '#\x2d)))
65609                              (if or-part_1 or-part_1 #f))))
65610                      (let ((app_0 (get-n_0)))
65611                        (let ((app_1 (if (eqv? c_0 '#\x2b) 1 -1)))
65612                          (read-imag
65613                           c_0
65614                           sgn_0
65615                           app_0
65616                           app_1
65617                           s_0
65618                           (fx+ 1 start_0)
65619                           end_0
65620                           radix_0
65621                           state_0)))
65622                      (if (let ((or-part_0 (eqv? c_0 '#\x40)))
65623                            (if or-part_0 or-part_0 #f))
65624                        (let ((app_0 (get-n_0)))
65625                          (read-polar
65626                           sgn_0
65627                           app_0
65628                           s_0
65629                           (fx+ 1 start_0)
65630                           end_0
65631                           radix_0
65632                           state_0))
65633                        (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65634                              (if or-part_0
65635                                or-part_0
65636                                (let ((or-part_1 (eqv? c_0 '#\x49)))
65637                                  (if or-part_1 or-part_1 #f))))
65638                          (let ((app_0 (get-n_0)))
65639                            (finish-imaginary
65640                             sgn_0
65641                             app_0
65642                             s_0
65643                             (fx+ 1 start_0)
65644                             end_0
65645                             state_0))
65646                          (bad-digit c_0 s_0 state_0))))))))))))))
65647(define read-exponent
65648  (lambda (sgn_0 sgn-n_0 exp_0 s_0 start_0 end_0 radix_0 state_0)
65649    (let ((c_0
65650           (if (fx= start_0 end_0)
65651             'eof
65652             (let ((c_0 (string-ref s_0 start_0)))
65653               (maybe-digit c_0 radix_0)))))
65654      (if (let ((or-part_0 (eqv? c_0 'eof)))
65655            (if or-part_0
65656              or-part_0
65657              (let ((or-part_1 (eqv? c_0 '#\x40)))
65658                (if or-part_1 or-part_1 #f))))
65659        (if (eq? (state->convert-mode state_0) 'must-read)
65660          (format "empty exponent `~.a`" s_0)
65661          #f)
65662        (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65663          (read-signed-exponent
65664           sgn_0
65665           sgn-n_0
65666           exp_0
65667           1
65668           c_0
65669           s_0
65670           (fx+ 1 start_0)
65671           end_0
65672           radix_0
65673           state_0)
65674          (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65675                (if or-part_0
65676                  or-part_0
65677                  (let ((or-part_1 (eqv? c_0 '#\x2d)))
65678                    (if or-part_1 or-part_1 #f))))
65679            (let ((sgn2_0 (if (eqv? c_0 '#\x2b) 1 -1)))
65680              (read-signed-exponent
65681               sgn_0
65682               sgn-n_0
65683               exp_0
65684               sgn2_0
65685               #f
65686               s_0
65687               (fx+ 1 start_0)
65688               end_0
65689               radix_0
65690               state_0))
65691            (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65692                  (if or-part_0
65693                    or-part_0
65694                    (let ((or-part_1 (eqv? c_0 '#\x23)))
65695                      (if or-part_1
65696                        or-part_1
65697                        (let ((or-part_2 (eqv? c_0 '#\x2f)))
65698                          (if or-part_2
65699                            or-part_2
65700                            (let ((or-part_3 (eqv? c_0 '#\x65)))
65701                              (if or-part_3
65702                                or-part_3
65703                                (let ((or-part_4 (eqv? c_0 '#\x45)))
65704                                  (if or-part_4
65705                                    or-part_4
65706                                    (let ((or-part_5 (eqv? c_0 '#\x64)))
65707                                      (if or-part_5
65708                                        or-part_5
65709                                        (let ((or-part_6 (eqv? c_0 '#\x44)))
65710                                          (if or-part_6
65711                                            or-part_6
65712                                            (let ((or-part_7
65713                                                   (eqv? c_0 '#\x6c)))
65714                                              (if or-part_7
65715                                                or-part_7
65716                                                (let ((or-part_8
65717                                                       (eqv? c_0 '#\x4c)))
65718                                                  (if or-part_8
65719                                                    or-part_8
65720                                                    (let ((or-part_9
65721                                                           (eqv? c_0 '#\x66)))
65722                                                      (if or-part_9
65723                                                        or-part_9
65724                                                        (let ((or-part_10
65725                                                               (eqv?
65726                                                                c_0
65727                                                                '#\x46)))
65728                                                          (if or-part_10
65729                                                            or-part_10
65730                                                            (let ((or-part_11
65731                                                                   (eqv?
65732                                                                    c_0
65733                                                                    '#\x73)))
65734                                                              (if or-part_11
65735                                                                or-part_11
65736                                                                (let ((or-part_12
65737                                                                       (eqv?
65738                                                                        c_0
65739                                                                        '#\x53)))
65740                                                                  (if or-part_12
65741                                                                    or-part_12
65742                                                                    (let ((or-part_13
65743                                                                           (eqv?
65744                                                                            c_0
65745                                                                            '#\x74)))
65746                                                                      (if or-part_13
65747                                                                        or-part_13
65748                                                                        (let ((or-part_14
65749                                                                               (eqv?
65750                                                                                c_0
65751                                                                                '#\x54)))
65752                                                                          (if or-part_14
65753                                                                            or-part_14
65754                                                                            #f))))))))))))))))))))))))))))))
65755              (bad-misplaced c_0 s_0 state_0)
65756              (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65757                    (if or-part_0
65758                      or-part_0
65759                      (let ((or-part_1 (eqv? c_0 '#\x49)))
65760                        (if or-part_1 or-part_1 #f))))
65761                (if (state-has-first-half? state_0)
65762                  (if (eq? (state->convert-mode state_0) 'must-read)
65763                    (format "empty exponent `~.a`" s_0)
65764                    #f)
65765                  (bad-misplaced "i" s_0 state_0))
65766                (bad-digit c_0 s_0 state_0)))))))))
65767(define read-signed-exponent
65768  (lambda (sgn_0 sgn-n_0 exp_0 sgn2_0 exp2_0 s_0 start_0 end_0 radix_0 state_0)
65769    (let ((get-n_0
65770           (|#%name|
65771            get-n
65772            (lambda ()
65773              (begin
65774                (if exp2_0
65775                  (lazy-number
65776                   sgn-n_0
65777                   radix_0
65778                   (+ exp_0 (* sgn2_0 (digits->integer exp2_0 radix_0))))
65779                  (if (eq? (state->convert-mode state_0) 'must-read)
65780                    (format "empty exponent `~.a`" s_0)
65781                    #f)))))))
65782      (let ((c_0
65783             (if (fx= start_0 end_0)
65784               'eof
65785               (let ((c_0 (string-ref s_0 start_0)))
65786                 (maybe-digit c_0 radix_0)))))
65787        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
65788          (let ((or-part_0
65789                 (if exp2_0
65790                   (if (number? sgn-n_0)
65791                     (let ((app_0 (if (eqv? sgn-n_0 0) sgn_0 1)))
65792                       (fast-inexact
65793                        state_0
65794                        app_0
65795                        sgn-n_0
65796                        radix_0
65797                        exp_0
65798                        sgn2_0
65799                        (digits->integer exp2_0 radix_0)))
65800                     #f)
65801                   #f)))
65802            (if or-part_0
65803              or-part_0
65804              (let ((v_0 (get-n_0)))
65805                (if (let ((or-part_1 (not v_0)))
65806                      (if or-part_1 or-part_1 (string? v_0)))
65807                  v_0
65808                  (finish.1 #f sgn_0 v_0 s_0 state_0)))))
65809          (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
65810            (let ((new-exp2_0 (add-digit (if exp2_0 exp2_0 0) c_0 radix_0)))
65811              (read-signed-exponent
65812               sgn_0
65813               sgn-n_0
65814               exp_0
65815               sgn2_0
65816               new-exp2_0
65817               s_0
65818               (fx+ 1 start_0)
65819               end_0
65820               radix_0
65821               state_0))
65822            (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
65823                  (if or-part_0
65824                    or-part_0
65825                    (let ((or-part_1 (eqv? c_0 '#\x2d)))
65826                      (if or-part_1 or-part_1 #f))))
65827              (let ((v_0 (get-n_0)))
65828                (if (let ((or-part_0 (not v_0)))
65829                      (if or-part_0 or-part_0 (string? v_0)))
65830                  v_0
65831                  (let ((app_0 (if (eqv? c_0 '#\x2b) 1 -1)))
65832                    (read-imag
65833                     c_0
65834                     sgn_0
65835                     v_0
65836                     app_0
65837                     s_0
65838                     (fx+ 1 start_0)
65839                     end_0
65840                     radix_0
65841                     state_0))))
65842              (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
65843                    (if or-part_0
65844                      or-part_0
65845                      (let ((or-part_1 (eqv? c_0 '#\x23)))
65846                        (if or-part_1
65847                          or-part_1
65848                          (let ((or-part_2 (eqv? c_0 '#\x2f)))
65849                            (if or-part_2
65850                              or-part_2
65851                              (let ((or-part_3 (eqv? c_0 '#\x65)))
65852                                (if or-part_3
65853                                  or-part_3
65854                                  (let ((or-part_4 (eqv? c_0 '#\x45)))
65855                                    (if or-part_4
65856                                      or-part_4
65857                                      (let ((or-part_5 (eqv? c_0 '#\x64)))
65858                                        (if or-part_5
65859                                          or-part_5
65860                                          (let ((or-part_6 (eqv? c_0 '#\x44)))
65861                                            (if or-part_6
65862                                              or-part_6
65863                                              (let ((or-part_7
65864                                                     (eqv? c_0 '#\x6c)))
65865                                                (if or-part_7
65866                                                  or-part_7
65867                                                  (let ((or-part_8
65868                                                         (eqv? c_0 '#\x4c)))
65869                                                    (if or-part_8
65870                                                      or-part_8
65871                                                      (let ((or-part_9
65872                                                             (eqv?
65873                                                              c_0
65874                                                              '#\x66)))
65875                                                        (if or-part_9
65876                                                          or-part_9
65877                                                          (let ((or-part_10
65878                                                                 (eqv?
65879                                                                  c_0
65880                                                                  '#\x46)))
65881                                                            (if or-part_10
65882                                                              or-part_10
65883                                                              (let ((or-part_11
65884                                                                     (eqv?
65885                                                                      c_0
65886                                                                      '#\x73)))
65887                                                                (if or-part_11
65888                                                                  or-part_11
65889                                                                  (let ((or-part_12
65890                                                                         (eqv?
65891                                                                          c_0
65892                                                                          '#\x53)))
65893                                                                    (if or-part_12
65894                                                                      or-part_12
65895                                                                      (let ((or-part_13
65896                                                                             (eqv?
65897                                                                              c_0
65898                                                                              '#\x74)))
65899                                                                        (if or-part_13
65900                                                                          or-part_13
65901                                                                          (let ((or-part_14
65902                                                                                 (eqv?
65903                                                                                  c_0
65904                                                                                  '#\x54)))
65905                                                                            (if or-part_14
65906                                                                              or-part_14
65907                                                                              #f))))))))))))))))))))))))))))))
65908                (bad-misplaced c_0 s_0 state_0)
65909                (if (let ((or-part_0 (eqv? c_0 '#\x40)))
65910                      (if or-part_0 or-part_0 #f))
65911                  (let ((v_0 (get-n_0)))
65912                    (if (let ((or-part_0 (not v_0)))
65913                          (if or-part_0 or-part_0 (string? v_0)))
65914                      v_0
65915                      (read-polar
65916                       sgn_0
65917                       v_0
65918                       s_0
65919                       (fx+ 1 start_0)
65920                       end_0
65921                       radix_0
65922                       state_0)))
65923                  (if (let ((or-part_0 (eqv? c_0 '#\x69)))
65924                        (if or-part_0
65925                          or-part_0
65926                          (let ((or-part_1 (eqv? c_0 '#\x49)))
65927                            (if or-part_1 or-part_1 #f))))
65928                    (let ((v_0 (get-n_0)))
65929                      (if (let ((or-part_0 (not v_0)))
65930                            (if or-part_0 or-part_0 (string? v_0)))
65931                        v_0
65932                        (finish-imaginary
65933                         sgn_0
65934                         v_0
65935                         s_0
65936                         (fx+ 1 start_0)
65937                         end_0
65938                         state_0)))
65939                    (bad-digit c_0 s_0 state_0)))))))))))
65940(define read-infinity
65941  (lambda (sgn_0 c_0 s_0 start_0 end_0 radix_0 state_0)
65942    (let ((fail_0
65943           (|#%name| fail (lambda () (begin (bad-digit c_0 s_0 state_0))))))
65944      (let ((start+n_0 (fx+ start_0 0)))
65945        (let ((var_0
65946               (if (fx= start+n_0 end_0) 'eof (string-ref s_0 start+n_0))))
65947          (if (if (eqv? var_0 '#\x66) #t (eqv? var_0 '#\x46))
65948            (let ((fail_1 (|#%name| fail (lambda () (begin (fail_0))))))
65949              (let ((start+n_1 (fx+ start_0 1)))
65950                (let ((var_1
65951                       (if (fx= start+n_1 end_0)
65952                         'eof
65953                         (string-ref s_0 start+n_1))))
65954                  (if (eqv? var_1 '#\x2e)
65955                    (let ((fail_2
65956                           (|#%name| fail (lambda () (begin (fail_1))))))
65957                      (let ((start+n_2 (fx+ start_0 2)))
65958                        (let ((var_2
65959                               (if (fx= start+n_2 end_0)
65960                                 'eof
65961                                 (string-ref s_0 start+n_2))))
65962                          (if (if (eqv? var_2 '#\x30)
65963                                #t
65964                                (if (eqv? var_2 '#\x66)
65965                                  #t
65966                                  (if (eqv? var_2 '#\x74)
65967                                    #t
65968                                    (if (eqv? var_2 '#\x46)
65969                                      #t
65970                                      (eqv? var_2 '#\x54)))))
65971                            (let ((n_0 (if (negative? sgn_0) -inf.0 +inf.0)))
65972                              (let ((new-state_0
65973                                     (let ((temp135_0
65974                                            (string-ref s_0 (fx+ start_0 2))))
65975                                       (set-exactness-by-char.1
65976                                        #t
65977                                        state_0
65978                                        temp135_0))))
65979                                (let ((c2_0
65980                                       (if (fx= (fx+ 3 start_0) end_0)
65981                                         'eof
65982                                         (let ((c_1
65983                                                (string-ref
65984                                                 s_0
65985                                                 (fx+ 3 start_0))))
65986                                           (maybe-digit c_1 radix_0)))))
65987                                  (if (let ((or-part_0 (eqv? c2_0 'eof)))
65988                                        (if or-part_0 or-part_0 #f))
65989                                    (finish.1 #f sgn_0 n_0 s_0 new-state_0)
65990                                    (if (let ((or-part_0 (eqv? c2_0 '#\x2b)))
65991                                          (if or-part_0
65992                                            or-part_0
65993                                            (let ((or-part_1
65994                                                   (eqv? c2_0 '#\x2d)))
65995                                              (if or-part_1 or-part_1 #f))))
65996                                      (let ((app_0
65997                                             (if (eqv? c2_0 '#\x2b) 1 -1)))
65998                                        (read-imag
65999                                         c2_0
66000                                         sgn_0
66001                                         n_0
66002                                         app_0
66003                                         s_0
66004                                         (fx+ 4 start_0)
66005                                         end_0
66006                                         radix_0
66007                                         new-state_0))
66008                                      (if (let ((or-part_0 (eqv? c2_0 '#\x40)))
66009                                            (if or-part_0 or-part_0 #f))
66010                                        (read-polar
66011                                         sgn_0
66012                                         n_0
66013                                         s_0
66014                                         (fx+ 4 start_0)
66015                                         end_0
66016                                         radix_0
66017                                         new-state_0)
66018                                        (if (let ((or-part_0
66019                                                   (eqv? c2_0 '#\x69)))
66020                                              (if or-part_0
66021                                                or-part_0
66022                                                (let ((or-part_1
66023                                                       (eqv? c2_0 '#\x49)))
66024                                                  (if or-part_1
66025                                                    or-part_1
66026                                                    #f))))
66027                                          (finish-imaginary
66028                                           sgn_0
66029                                           n_0
66030                                           s_0
66031                                           (fx+ 4 start_0)
66032                                           end_0
66033                                           new-state_0)
66034                                          (bad-digit c_0 s_0 state_0))))))))
66035                            (fail_2)))))
66036                    (fail_1)))))
66037            (fail_0)))))))
66038(define read-nan
66039  (lambda (c_0 s_0 start_0 end_0 radix_0 state_0)
66040    (let ((fail_0
66041           (|#%name| fail (lambda () (begin (bad-digit c_0 s_0 state_0))))))
66042      (let ((start+n_0 (fx+ start_0 0)))
66043        (let ((var_0
66044               (if (fx= start+n_0 end_0) 'eof (string-ref s_0 start+n_0))))
66045          (if (if (eqv? var_0 '#\x61) #t (eqv? var_0 '#\x41))
66046            (let ((fail_1 (|#%name| fail (lambda () (begin (fail_0))))))
66047              (let ((start+n_1 (fx+ start_0 1)))
66048                (let ((var_1
66049                       (if (fx= start+n_1 end_0)
66050                         'eof
66051                         (string-ref s_0 start+n_1))))
66052                  (if (if (eqv? var_1 '#\x6e) #t (eqv? var_1 '#\x4e))
66053                    (let ((fail_2
66054                           (|#%name| fail (lambda () (begin (fail_1))))))
66055                      (let ((start+n_2 (fx+ start_0 2)))
66056                        (let ((var_2
66057                               (if (fx= start+n_2 end_0)
66058                                 'eof
66059                                 (string-ref s_0 start+n_2))))
66060                          (if (eqv? var_2 '#\x2e)
66061                            (let ((fail_3
66062                                   (|#%name|
66063                                    fail
66064                                    (lambda () (begin (fail_2))))))
66065                              (let ((start+n_3 (fx+ start_0 3)))
66066                                (let ((var_3
66067                                       (if (fx= start+n_3 end_0)
66068                                         'eof
66069                                         (string-ref s_0 start+n_3))))
66070                                  (if (if (eqv? var_3 '#\x30)
66071                                        #t
66072                                        (if (eqv? var_3 '#\x66)
66073                                          #t
66074                                          (if (eqv? var_3 '#\x74)
66075                                            #t
66076                                            (if (eqv? var_3 '#\x46)
66077                                              #t
66078                                              (eqv? var_3 '#\x54)))))
66079                                    (let ((new-state_0
66080                                           (let ((temp142_0
66081                                                  (string-ref
66082                                                   s_0
66083                                                   (fx+ start_0 3))))
66084                                             (set-exactness-by-char.1
66085                                              #t
66086                                              state_0
66087                                              temp142_0))))
66088                                      (let ((c2_0
66089                                             (if (fx= (fx+ 4 start_0) end_0)
66090                                               'eof
66091                                               (let ((c_1
66092                                                      (string-ref
66093                                                       s_0
66094                                                       (fx+ 4 start_0))))
66095                                                 (maybe-digit c_1 radix_0)))))
66096                                        (if (let ((or-part_0 (eqv? c2_0 'eof)))
66097                                              (if or-part_0 or-part_0 #f))
66098                                          (finish.1
66099                                           #f
66100                                           1
66101                                           +nan.0
66102                                           s_0
66103                                           new-state_0)
66104                                          (if (let ((or-part_0
66105                                                     (eqv? c2_0 '#\x2b)))
66106                                                (if or-part_0
66107                                                  or-part_0
66108                                                  (let ((or-part_1
66109                                                         (eqv? c2_0 '#\x2d)))
66110                                                    (if or-part_1
66111                                                      or-part_1
66112                                                      #f))))
66113                                            (let ((app_0 +nan.0))
66114                                              (let ((app_1
66115                                                     (if (eqv? c2_0 '#\x2b)
66116                                                       1
66117                                                       -1)))
66118                                                (read-imag
66119                                                 c2_0
66120                                                 1
66121                                                 app_0
66122                                                 app_1
66123                                                 s_0
66124                                                 (fx+ 5 start_0)
66125                                                 end_0
66126                                                 radix_0
66127                                                 new-state_0)))
66128                                            (if (let ((or-part_0
66129                                                       (eqv? c2_0 '#\x40)))
66130                                                  (if or-part_0 or-part_0 #f))
66131                                              (let ((app_0 +nan.0))
66132                                                (read-polar
66133                                                 1
66134                                                 app_0
66135                                                 s_0
66136                                                 (fx+ 5 start_0)
66137                                                 end_0
66138                                                 radix_0
66139                                                 new-state_0))
66140                                              (if (let ((or-part_0
66141                                                         (eqv? c2_0 '#\x69)))
66142                                                    (if or-part_0
66143                                                      or-part_0
66144                                                      (let ((or-part_1
66145                                                             (eqv?
66146                                                              c2_0
66147                                                              '#\x49)))
66148                                                        (if or-part_1
66149                                                          or-part_1
66150                                                          #f))))
66151                                                (let ((app_0 +nan.0))
66152                                                  (finish-imaginary
66153                                                   1
66154                                                   app_0
66155                                                   s_0
66156                                                   (fx+ 5 start_0)
66157                                                   end_0
66158                                                   new-state_0))
66159                                                (bad-digit
66160                                                 c_0
66161                                                 s_0
66162                                                 state_0)))))))
66163                                    (fail_3)))))
66164                            (fail_2)))))
66165                    (fail_1)))))
66166            (fail_0)))))))
66167(define read-rational
66168  (lambda (sgn_0 sgn-n_0 d_0 s_0 start_0 end_0 radix_0 state_0)
66169    (let ((get-n_0
66170           (|#%name|
66171            get-n
66172            (lambda ()
66173              (begin
66174                (if d_0
66175                  (lazy-divide sgn-n_0 (digits->integer d_0 radix_0) 'exact)
66176                  (bad-no-digits "/" s_0 state_0)))))))
66177      (let ((c_0
66178             (if (fx= start_0 end_0)
66179               'eof
66180               (let ((c_0 (string-ref s_0 start_0)))
66181                 (maybe-digit c_0 radix_0)))))
66182        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
66183          (let ((v_0 (get-n_0)))
66184            (if (let ((or-part_0 (not v_0)))
66185                  (if or-part_0 or-part_0 (string? v_0)))
66186              v_0
66187              (finish.1 #f sgn_0 v_0 s_0 state_0)))
66188          (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
66189            (let ((app_0 (add-digit (if d_0 d_0 0) c_0 radix_0)))
66190              (read-rational
66191               sgn_0
66192               sgn-n_0
66193               app_0
66194               s_0
66195               (fx+ 1 start_0)
66196               end_0
66197               radix_0
66198               state_0))
66199            (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
66200                  (if or-part_0 or-part_0 #f))
66201              (bad-mixed-decimal-fraction s_0 state_0)
66202              (if (let ((or-part_0 (eqv? c_0 '#\x23)))
66203                    (if or-part_0 or-part_0 #f))
66204                (if d_0
66205                  (let ((app_0 (digits->integer d_0 radix_0)))
66206                    (let ((app_1 (fx+ 1 start_0)))
66207                      (read-denom-approx
66208                       sgn_0
66209                       sgn-n_0
66210                       app_0
66211                       1
66212                       s_0
66213                       app_1
66214                       end_0
66215                       radix_0
66216                       (set-exactness.1 #f state_0 'approx))))
66217                  (bad-misplaced "#" s_0 state_0))
66218                (if (let ((or-part_0 (eqv? c_0 '#\x65)))
66219                      (if or-part_0
66220                        or-part_0
66221                        (let ((or-part_1 (eqv? c_0 '#\x45)))
66222                          (if or-part_1
66223                            or-part_1
66224                            (let ((or-part_2 (eqv? c_0 '#\x64)))
66225                              (if or-part_2
66226                                or-part_2
66227                                (let ((or-part_3 (eqv? c_0 '#\x44)))
66228                                  (if or-part_3
66229                                    or-part_3
66230                                    (let ((or-part_4 (eqv? c_0 '#\x6c)))
66231                                      (if or-part_4
66232                                        or-part_4
66233                                        (let ((or-part_5 (eqv? c_0 '#\x4c)))
66234                                          (if or-part_5
66235                                            or-part_5
66236                                            (let ((or-part_6
66237                                                   (eqv? c_0 '#\x66)))
66238                                              (if or-part_6
66239                                                or-part_6
66240                                                (let ((or-part_7
66241                                                       (eqv? c_0 '#\x46)))
66242                                                  (if or-part_7
66243                                                    or-part_7
66244                                                    (let ((or-part_8
66245                                                           (eqv? c_0 '#\x73)))
66246                                                      (if or-part_8
66247                                                        or-part_8
66248                                                        (let ((or-part_9
66249                                                               (eqv?
66250                                                                c_0
66251                                                                '#\x53)))
66252                                                          (if or-part_9
66253                                                            or-part_9
66254                                                            (let ((or-part_10
66255                                                                   (eqv?
66256                                                                    c_0
66257                                                                    '#\x74)))
66258                                                              (if or-part_10
66259                                                                or-part_10
66260                                                                (let ((or-part_11
66261                                                                       (eqv?
66262                                                                        c_0
66263                                                                        '#\x54)))
66264                                                                  (if or-part_11
66265                                                                    or-part_11
66266                                                                    #f))))))))))))))))))))))))
66267                  (let ((v_0 (get-n_0)))
66268                    (if (let ((or-part_0 (not v_0)))
66269                          (if or-part_0 or-part_0 (string? v_0)))
66270                      v_0
66271                      (let ((app_0 (fx+ 1 start_0)))
66272                        (read-exponent
66273                         sgn_0
66274                         v_0
66275                         0
66276                         s_0
66277                         app_0
66278                         end_0
66279                         radix_0
66280                         (set-exactness-by-char.1 #f state_0 c_0)))))
66281                  (if (let ((or-part_0 (eqv? c_0 '#\x2f)))
66282                        (if or-part_0 or-part_0 #f))
66283                    (bad-misplaced "/" s_0 state_0)
66284                    (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
66285                          (if or-part_0
66286                            or-part_0
66287                            (let ((or-part_1 (eqv? c_0 '#\x2d)))
66288                              (if or-part_1 or-part_1 #f))))
66289                      (let ((v_0 (get-n_0)))
66290                        (if (let ((or-part_0 (not v_0)))
66291                              (if or-part_0 or-part_0 (string? v_0)))
66292                          v_0
66293                          (let ((app_0 (if (eqv? c_0 '#\x2b) 1 -1)))
66294                            (read-imag
66295                             c_0
66296                             sgn_0
66297                             v_0
66298                             app_0
66299                             s_0
66300                             (fx+ 1 start_0)
66301                             end_0
66302                             radix_0
66303                             state_0))))
66304                      (if (let ((or-part_0 (eqv? c_0 '#\x40)))
66305                            (if or-part_0 or-part_0 #f))
66306                        (let ((v_0 (get-n_0)))
66307                          (if (let ((or-part_0 (not v_0)))
66308                                (if or-part_0 or-part_0 (string? v_0)))
66309                            v_0
66310                            (read-polar
66311                             sgn_0
66312                             v_0
66313                             s_0
66314                             (fx+ 1 start_0)
66315                             end_0
66316                             radix_0
66317                             state_0)))
66318                        (if (let ((or-part_0 (eqv? c_0 '#\x69)))
66319                              (if or-part_0
66320                                or-part_0
66321                                (let ((or-part_1 (eqv? c_0 '#\x49)))
66322                                  (if or-part_1 or-part_1 #f))))
66323                          (let ((v_0 (get-n_0)))
66324                            (if (let ((or-part_0 (not v_0)))
66325                                  (if or-part_0 or-part_0 (string? v_0)))
66326                              v_0
66327                              (finish-imaginary
66328                               sgn_0
66329                               v_0
66330                               s_0
66331                               (fx+ 1 start_0)
66332                               end_0
66333                               state_0)))
66334                          (bad-digit c_0 s_0 state_0))))))))))))))
66335(define read-denom-approx
66336  (lambda (sgn_0 sgn-n_0 d_0 exp_0 s_0 start_0 end_0 radix_0 state_0)
66337    (let ((get-n_0
66338           (|#%name|
66339            get-n
66340            (lambda ()
66341              (begin
66342                (lazy-divide
66343                 sgn-n_0
66344                 (lazy-number d_0 radix_0 exp_0)
66345                 'approx))))))
66346      (let ((c_0
66347             (if (fx= start_0 end_0)
66348               'eof
66349               (let ((c_0 (string-ref s_0 start_0)))
66350                 (maybe-digit c_0 radix_0)))))
66351        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
66352          (let ((temp157_0 (get-n_0)))
66353            (finish.1 #f sgn_0 temp157_0 s_0 state_0))
66354          (if (let ((or-part_0 (eqv? c_0 '#\x23))) (if or-part_0 or-part_0 #f))
66355            (let ((app_0 (fx+ 1 exp_0)))
66356              (read-denom-approx
66357               sgn_0
66358               sgn-n_0
66359               d_0
66360               app_0
66361               s_0
66362               (fx+ 1 start_0)
66363               end_0
66364               radix_0
66365               state_0))
66366            (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
66367              (bad-misplaced "#" s_0 state_0)
66368              (if (let ((or-part_0 (eqv? c_0 '#\x2e)))
66369                    (if or-part_0
66370                      or-part_0
66371                      (let ((or-part_1 (eqv? c_0 '#\x2f)))
66372                        (if or-part_1 or-part_1 #f))))
66373                (bad-misplaced c_0 s_0 state_0)
66374                (if (let ((or-part_0 (eqv? c_0 '#\x65)))
66375                      (if or-part_0
66376                        or-part_0
66377                        (let ((or-part_1 (eqv? c_0 '#\x45)))
66378                          (if or-part_1
66379                            or-part_1
66380                            (let ((or-part_2 (eqv? c_0 '#\x64)))
66381                              (if or-part_2
66382                                or-part_2
66383                                (let ((or-part_3 (eqv? c_0 '#\x44)))
66384                                  (if or-part_3
66385                                    or-part_3
66386                                    (let ((or-part_4 (eqv? c_0 '#\x6c)))
66387                                      (if or-part_4
66388                                        or-part_4
66389                                        (let ((or-part_5 (eqv? c_0 '#\x4c)))
66390                                          (if or-part_5
66391                                            or-part_5
66392                                            (let ((or-part_6
66393                                                   (eqv? c_0 '#\x66)))
66394                                              (if or-part_6
66395                                                or-part_6
66396                                                (let ((or-part_7
66397                                                       (eqv? c_0 '#\x46)))
66398                                                  (if or-part_7
66399                                                    or-part_7
66400                                                    (let ((or-part_8
66401                                                           (eqv? c_0 '#\x73)))
66402                                                      (if or-part_8
66403                                                        or-part_8
66404                                                        (let ((or-part_9
66405                                                               (eqv?
66406                                                                c_0
66407                                                                '#\x53)))
66408                                                          (if or-part_9
66409                                                            or-part_9
66410                                                            (let ((or-part_10
66411                                                                   (eqv?
66412                                                                    c_0
66413                                                                    '#\x74)))
66414                                                              (if or-part_10
66415                                                                or-part_10
66416                                                                (let ((or-part_11
66417                                                                       (eqv?
66418                                                                        c_0
66419                                                                        '#\x54)))
66420                                                                  (if or-part_11
66421                                                                    or-part_11
66422                                                                    #f))))))))))))))))))))))))
66423                  (let ((app_0 (get-n_0)))
66424                    (let ((app_1 (fx+ 1 start_0)))
66425                      (read-exponent
66426                       sgn_0
66427                       app_0
66428                       0
66429                       s_0
66430                       app_1
66431                       end_0
66432                       radix_0
66433                       (set-exactness-by-char.1 #f state_0 c_0))))
66434                  (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
66435                        (if or-part_0
66436                          or-part_0
66437                          (let ((or-part_1 (eqv? c_0 '#\x2d)))
66438                            (if or-part_1 or-part_1 #f))))
66439                    (let ((app_0 (get-n_0)))
66440                      (let ((app_1 (if (eqv? c_0 '#\x2b) 1 -1)))
66441                        (read-imag
66442                         c_0
66443                         sgn_0
66444                         app_0
66445                         app_1
66446                         s_0
66447                         (fx+ 1 start_0)
66448                         end_0
66449                         radix_0
66450                         state_0)))
66451                    (if (let ((or-part_0 (eqv? c_0 '#\x40)))
66452                          (if or-part_0 or-part_0 #f))
66453                      (let ((app_0 (get-n_0)))
66454                        (read-polar
66455                         sgn_0
66456                         app_0
66457                         s_0
66458                         (fx+ 1 start_0)
66459                         end_0
66460                         radix_0
66461                         state_0))
66462                      (if (let ((or-part_0 (eqv? c_0 '#\x69)))
66463                            (if or-part_0
66464                              or-part_0
66465                              (let ((or-part_1 (eqv? c_0 '#\x49)))
66466                                (if or-part_1 or-part_1 #f))))
66467                        (let ((app_0 (get-n_0)))
66468                          (finish-imaginary
66469                           sgn_0
66470                           app_0
66471                           s_0
66472                           (fx+ 1 start_0)
66473                           end_0
66474                           state_0))
66475                        (bad-digit c_0 s_0 state_0)))))))))))))
66476(define read-imag
66477  (lambda (c_0 real-sgn_0 real_0 sgn_0 s_0 start_0 end_0 radix_0 state_0)
66478    (if (let ((or-part_0 (state-has-first-half? state_0)))
66479          (if or-part_0
66480            or-part_0
66481            (eq? 'extended (parse-state-exactness state_0))))
66482      (bad-misplaced c_0 s_0 state_0)
66483      (read-signed
66484       sgn_0
66485       s_0
66486       start_0
66487       end_0
66488       radix_0
66489       (state-set-first-half
66490        state_0
66491        (rect-prefix7.1 real-sgn_0 real_0 (fx- start_0 1)))))))
66492(define read-polar
66493  (lambda (real-sgn_0 real_0 s_0 start_0 end_0 radix_0 state_0)
66494    (if (let ((or-part_0 (state-has-first-half? state_0)))
66495          (if or-part_0
66496            or-part_0
66497            (eq? 'extended (parse-state-exactness state_0))))
66498      (bad-misplaced "@" s_0 state_0)
66499      (let ((c_0
66500             (if (fx= start_0 end_0)
66501               'eof
66502               (let ((c_0 (string-ref s_0 start_0)))
66503                 (maybe-digit c_0 radix_0)))))
66504        (if (let ((or-part_0 (eqv? c_0 'eof))) (if or-part_0 or-part_0 #f))
66505          (bad-misplaced "@" s_0 state_0)
66506          (if (let ((or-part_0 (eqv? c_0 '#\x2b)))
66507                (if or-part_0
66508                  or-part_0
66509                  (let ((or-part_1 (eqv? c_0 '#\x2d)))
66510                    (if or-part_1 or-part_1 #f))))
66511            (let ((new-state_0
66512                   (state-set-first-half
66513                    state_0
66514                    (polar-prefix8.1 real-sgn_0 real_0 start_0))))
66515              (let ((app_0 (if (eq? c_0 '#\x2b) 1 -1)))
66516                (read-signed
66517                 app_0
66518                 s_0
66519                 (fx+ 1 start_0)
66520                 end_0
66521                 radix_0
66522                 new-state_0)))
66523            (if (let ((or-part_0 (fixnum? c_0))) (if or-part_0 or-part_0 #f))
66524              (let ((new-state_0
66525                     (state-set-first-half
66526                      state_0
66527                      (polar-prefix8.1 real-sgn_0 real_0 start_0))))
66528                (read-integer
66529                 1
66530                 c_0
66531                 s_0
66532                 (fx+ 1 start_0)
66533                 end_0
66534                 radix_0
66535                 new-state_0))
66536              (bad-digit c_0 s_0 state_0))))))))
66537(define read-symbol-or-number.1
66538  (|#%name|
66539   read-symbol-or-number
66540   (lambda (extra-prefix2_0 mode1_0 init-c5_0 in6_0 orig-config7_0)
66541     (begin
66542       (let ((config_0
66543              (if (string? mode1_0)
66544                (override-parameter 1/read-cdot orig-config7_0 #f)
66545                orig-config7_0)))
66546         (let ((rt_0
66547                (begin-unsafe
66548                 (read-config/inner-readtable
66549                  (read-config/outer-inner config_0)))))
66550           (let ((c1_0
66551                  (if rt_0
66552                    (if (let ((or-part_0 (eq? mode1_0 'symbol-or-number)))
66553                          (if or-part_0
66554                            or-part_0
66555                            (eq? mode1_0 'symbol/indirect)))
66556                      (readtable-symbol-parser rt_0)
66557                      #f)
66558                    #f)))
66559             (if c1_0
66560               (readtable-apply
66561                c1_0
66562                init-c5_0
66563                in6_0
66564                config_0
66565                (begin-unsafe (read-config/outer-line config_0))
66566                (begin-unsafe (read-config/outer-col config_0))
66567                (begin-unsafe (read-config/outer-pos config_0)))
66568               (let ((accum-str_0 (accum-string-init! config_0)))
66569                 (let ((quoted-ever?_0 #f))
66570                   (let ((case-sens?_0
66571                          (check-parameter read-case-sensitive config_0)))
66572                     (begin
66573                       (if extra-prefix2_0
66574                         (accum-string-add! accum-str_0 extra-prefix2_0)
66575                         (void))
66576                       (let ((source_0
66577                              (begin-unsafe
66578                               (read-config/inner-source
66579                                (read-config/outer-inner config_0)))))
66580                         (let ((unexpected-quoted_0
66581                                (|#%name|
66582                                 unexpected-quoted
66583                                 (lambda (c_0 after-c_0)
66584                                   (begin
66585                                     (let ((temp12_0
66586                                            "~a following `~a` in ~a"))
66587                                       (let ((temp13_0
66588                                              (if (eof-object? c_0)
66589                                                "end-of-file"
66590                                                "non-character")))
66591                                         (let ((temp15_0
66592                                                (if (eq? mode1_0 'keyword)
66593                                                  "keyword"
66594                                                  (if (string? mode1_0)
66595                                                    "number"
66596                                                    "symbol"))))
66597                                           (let ((temp13_1 temp13_0)
66598                                                 (temp12_1 temp12_0))
66599                                             (reader-error.1
66600                                              unsafe-undefined
66601                                              c_0
66602                                              #f
66603                                              unsafe-undefined
66604                                              in6_0
66605                                              config_0
66606                                              temp12_1
66607                                              (list
66608                                               temp13_1
66609                                               after-c_0
66610                                               temp15_0)))))))))))
66611                           (begin
66612                             (letrec*
66613                              ((loop_0
66614                                (|#%name|
66615                                 loop
66616                                 (lambda (init-c_0
66617                                          pipe-quote-c_0
66618                                          foldcase-from_0)
66619                                   (begin
66620                                     (let ((c_0
66621                                            (if init-c_0
66622                                              init-c_0
66623                                              (let ((c_0
66624                                                     (peek-char-or-special
66625                                                      in6_0
66626                                                      0
66627                                                      'special
66628                                                      source_0)))
66629                                                (if (eq? c_0 'special)
66630                                                  (special1.1 'special)
66631                                                  c_0)))))
66632                                       (let ((ec_0
66633                                              (if (let ((or-part_0 (not rt_0)))
66634                                                    (if or-part_0
66635                                                      or-part_0
66636                                                      (not (char? c_0))))
66637                                                c_0
66638                                                (*readtable-effective-char
66639                                                 rt_0
66640                                                 c_0))))
66641                                         (if (if pipe-quote-c_0
66642                                               (not (char? ec_0))
66643                                               #f)
66644                                           (begin
66645                                             (if init-c_0
66646                                               (void)
66647                                               (begin-unsafe
66648                                                (begin
66649                                                  (read-char-or-special
66650                                                   in6_0
66651                                                   special1.1
66652                                                   (begin-unsafe
66653                                                    (read-config/inner-source
66654                                                     (read-config/outer-inner
66655                                                      config_0))))
66656                                                  (void))))
66657                                             (unexpected-quoted_0
66658                                              c_0
66659                                              pipe-quote-c_0))
66660                                           (if (if (not pipe-quote-c_0)
66661                                                 (readtable-char-delimiter?
66662                                                  rt_0
66663                                                  c_0
66664                                                  config_0)
66665                                                 #f)
66666                                             (if case-sens?_0
66667                                               (void)
66668                                               (accum-string-convert!
66669                                                accum-str_0
66670                                                string-foldcase
66671                                                foldcase-from_0))
66672                                             (if (if pipe-quote-c_0
66673                                                   (char=? c_0 pipe-quote-c_0)
66674                                                   #f)
66675                                               (begin
66676                                                 (if init-c_0
66677                                                   (void)
66678                                                   (begin-unsafe
66679                                                    (begin
66680                                                      (read-char in6_0)
66681                                                      (void))))
66682                                                 (loop_0
66683                                                  #f
66684                                                  #f
66685                                                  (begin-unsafe
66686                                                   (accum-string-pos
66687                                                    accum-str_0))))
66688                                               (if (if (char=? ec_0 '#\x7c)
66689                                                     (check-parameter
66690                                                      read-accept-bar-quote
66691                                                      config_0)
66692                                                     #f)
66693                                                 (begin
66694                                                   (if init-c_0
66695                                                     (void)
66696                                                     (begin-unsafe
66697                                                      (begin
66698                                                        (read-char in6_0)
66699                                                        (void))))
66700                                                   (set! quoted-ever?_0 #t)
66701                                                   (if case-sens?_0
66702                                                     (void)
66703                                                     (accum-string-convert!
66704                                                      accum-str_0
66705                                                      string-foldcase
66706                                                      foldcase-from_0))
66707                                                   (loop_0
66708                                                    #f
66709                                                    c_0
66710                                                    (begin-unsafe
66711                                                     (accum-string-pos
66712                                                      accum-str_0))))
66713                                                 (if (if (char=? ec_0 '#\x5c)
66714                                                       (not pipe-quote-c_0)
66715                                                       #f)
66716                                                   (begin
66717                                                     (if init-c_0
66718                                                       (void)
66719                                                       (begin-unsafe
66720                                                        (begin
66721                                                          (read-char in6_0)
66722                                                          (void))))
66723                                                     (let ((next-c_0
66724                                                            (read-char-or-special
66725                                                             in6_0
66726                                                             special1.1
66727                                                             source_0)))
66728                                                       (begin
66729                                                         (if (char? next-c_0)
66730                                                           (void)
66731                                                           (unexpected-quoted_0
66732                                                            next-c_0
66733                                                            c_0))
66734                                                         (if (if pipe-quote-c_0
66735                                                               pipe-quote-c_0
66736                                                               case-sens?_0)
66737                                                           (void)
66738                                                           (accum-string-convert!
66739                                                            accum-str_0
66740                                                            string-foldcase
66741                                                            foldcase-from_0))
66742                                                         (accum-string-add!
66743                                                          accum-str_0
66744                                                          next-c_0)
66745                                                         (set! quoted-ever?_0
66746                                                           #t)
66747                                                         (loop_0
66748                                                          #f
66749                                                          #f
66750                                                          (begin-unsafe
66751                                                           (accum-string-pos
66752                                                            accum-str_0))))))
66753                                                   (begin
66754                                                     (if init-c_0
66755                                                       (void)
66756                                                       (begin-unsafe
66757                                                        (begin
66758                                                          (read-char in6_0)
66759                                                          (void))))
66760                                                     (accum-string-add!
66761                                                      accum-str_0
66762                                                      c_0)
66763                                                     (loop_0
66764                                                      #f
66765                                                      pipe-quote-c_0
66766                                                      foldcase-from_0))))))))))))))
66767                              (loop_0 init-c5_0 #f 0))
66768                             (let ((str_0
66769                                    (accum-string-get!.1
66770                                     0
66771                                     accum-str_0
66772                                     config_0)))
66773                               (begin
66774                                 (if (if (= 1 (string-length str_0))
66775                                       (if (not quoted-ever?_0)
66776                                         (char=?
66777                                          '#\x2e
66778                                          (effective-char
66779                                           (string-ref str_0 0)
66780                                           config_0))
66781                                         #f)
66782                                       #f)
66783                                   (let ((temp20_0 "illegal use of `.`"))
66784                                     (reader-error.1
66785                                      unsafe-undefined
66786                                      '#\x78
66787                                      #f
66788                                      unsafe-undefined
66789                                      in6_0
66790                                      config_0
66791                                      temp20_0
66792                                      (list)))
66793                                   (void))
66794                                 (let ((num_0
66795                                        (if (let ((or-part_0
66796                                                   (eq?
66797                                                    mode1_0
66798                                                    'symbol-or-number)))
66799                                              (if or-part_0
66800                                                or-part_0
66801                                                (string? mode1_0)))
66802                                          (if (not quoted-ever?_0)
66803                                            (let ((app_0
66804                                                   (if (string? mode1_0)
66805                                                     (string-append
66806                                                      mode1_0
66807                                                      str_0)
66808                                                     str_0)))
66809                                              (let ((app_1
66810                                                     (if (check-parameter
66811                                                          1/read-decimal-as-inexact
66812                                                          config_0)
66813                                                       'decimal-as-inexact
66814                                                       'decimal-as-exact)))
66815                                                (unchecked-string->number
66816                                                 app_0
66817                                                 10
66818                                                 'read
66819                                                 app_1
66820                                                 (if (check-parameter
66821                                                      1/read-single-flonum
66822                                                      config_0)
66823                                                   'single
66824                                                   'double))))
66825                                            #f)
66826                                          #f)))
66827                                   (begin
66828                                     (if (string? num_0)
66829                                       (let ((temp23_0 "~a"))
66830                                         (reader-error.1
66831                                          unsafe-undefined
66832                                          '#\x78
66833                                          #f
66834                                          unsafe-undefined
66835                                          in6_0
66836                                          config_0
66837                                          temp23_0
66838                                          (list num_0)))
66839                                       (void))
66840                                     (if (if (not num_0) (string? mode1_0) #f)
66841                                       (let ((temp27_0 "bad number: `~a`"))
66842                                         (let ((temp28_0
66843                                                (string-append mode1_0 str_0)))
66844                                           (let ((temp27_1 temp27_0))
66845                                             (reader-error.1
66846                                              unsafe-undefined
66847                                              '#\x78
66848                                              #f
66849                                              unsafe-undefined
66850                                              in6_0
66851                                              config_0
66852                                              temp27_1
66853                                              (list temp28_0)))))
66854                                       (void))
66855                                     (wrap
66856                                      (if num_0
66857                                        num_0
66858                                        (let ((or-part_0
66859                                               (if (eq? mode1_0 'keyword)
66860                                                 (string->keyword str_0)
66861                                                 #f)))
66862                                          (if or-part_0
66863                                            or-part_0
66864                                            (string->symbol str_0))))
66865                                      in6_0
66866                                      config_0
66867                                      str_0))))))))))))))))))))
66868(define read-fixnum
66869  (lambda (read-one_0 init-c_0 in_0 config_0)
66870    (let ((c_0
66871           (read-char/skip-whitespace-and-comments
66872            init-c_0
66873            read-one_0
66874            in_0
66875            config_0)))
66876      (call-with-values
66877       (lambda () (port-next-location* in_0 c_0))
66878       (case-lambda
66879        ((line_0 col_0 pos_0)
66880         (let ((v_0 (read-number-literal c_0 in_0 config_0 "#e")))
66881           (if (fixnum? v_0)
66882             v_0
66883             (if (eof-object? v_0)
66884               v_0
66885               (let ((temp2_0 (reading-at config_0 line_0 col_0 pos_0)))
66886                 (let ((temp3_0 "expected a fixnum, found ~a"))
66887                   (let ((temp2_1 temp2_0))
66888                     (reader-error.1
66889                      unsafe-undefined
66890                      '#\x78
66891                      #f
66892                      unsafe-undefined
66893                      in_0
66894                      temp2_1
66895                      temp3_0
66896                      (list v_0)))))))))
66897        (args (raise-binding-result-arity-error 3 args)))))))
66898(define read-flonum
66899  (lambda (read-one_0 init-c_0 in_0 config_0)
66900    (let ((c_0
66901           (read-char/skip-whitespace-and-comments
66902            init-c_0
66903            read-one_0
66904            in_0
66905            config_0)))
66906      (call-with-values
66907       (lambda () (port-next-location* in_0 c_0))
66908       (case-lambda
66909        ((line_0 col_0 pos_0)
66910         (let ((v_0 (read-number-literal c_0 in_0 config_0 "#i")))
66911           (if (flonum? v_0)
66912             v_0
66913             (if (eof-object? v_0)
66914               v_0
66915               (let ((temp6_0 (reading-at config_0 line_0 col_0 pos_0)))
66916                 (let ((temp7_0 "expected a flonum, found ~a"))
66917                   (let ((temp6_1 temp6_0))
66918                     (reader-error.1
66919                      unsafe-undefined
66920                      '#\x78
66921                      #f
66922                      unsafe-undefined
66923                      in_0
66924                      temp6_1
66925                      temp7_0
66926                      (list v_0)))))))))
66927        (args (raise-binding-result-arity-error 3 args)))))))
66928(define read-number-literal
66929  (lambda (c_0 in_0 config_0 mode_0)
66930    (if (not (char? c_0))
66931      c_0
66932      (read-symbol-or-number.1 #f mode_0 c_0 in_0 config_0))))
66933(define read-vector.1
66934  (|#%name|
66935   read-vector
66936   (lambda (length2_0
66937            mode1_0
66938            read-one5_0
66939            opener-c6_0
66940            opener7_0
66941            closer8_0
66942            in9_0
66943            config10_0)
66944     (begin
66945       (let ((read-one-element_0
66946              (if (eq? mode1_0 'any)
66947                read-one5_0
66948                (if (eq? mode1_0 'fixnum)
66949                  (|#%name|
66950                   read-one-element
66951                   (lambda (init-c_0 in_0 config_0)
66952                     (begin (read-fixnum read-one5_0 init-c_0 in_0 config_0))))
66953                  (if (eq? mode1_0 'flonum)
66954                    (|#%name|
66955                     read-one-element
66956                     (lambda (init-c_0 in_0 config_0)
66957                       (begin
66958                         (read-flonum read-one5_0 init-c_0 in_0 config_0))))
66959                    (void))))))
66960         (let ((seq_0
66961                (read-unwrapped-sequence.1
66962                 #f
66963                 unsafe-undefined
66964                 unsafe-undefined
66965                 #f
66966                 read-one5_0
66967                 read-one-element_0
66968                 opener-c6_0
66969                 opener7_0
66970                 closer8_0
66971                 in9_0
66972                 config10_0)))
66973           (let ((vec_0
66974                  (if (not length2_0)
66975                    (if (eq? mode1_0 'any)
66976                      (list->vector seq_0)
66977                      (if (eq? mode1_0 'fixnum)
66978                        (let ((len_0 (length seq_0)))
66979                          (begin
66980                            (if (exact-nonnegative-integer? len_0)
66981                              (void)
66982                              (raise-argument-error
66983                               'for/fxvector
66984                               "exact-nonnegative-integer?"
66985                               len_0))
66986                            (let ((v_0 (make-fxvector len_0 0)))
66987                              (begin
66988                                (if (zero? len_0)
66989                                  (void)
66990                                  (begin
66991                                    (letrec*
66992                                     ((for-loop_0
66993                                       (|#%name|
66994                                        for-loop
66995                                        (lambda (i_0 lst_0)
66996                                          (begin
66997                                            (if (pair? lst_0)
66998                                              (let ((e_0 (unsafe-car lst_0)))
66999                                                (let ((rest_0
67000                                                       (unsafe-cdr lst_0)))
67001                                                  (let ((i_1
67002                                                         (let ((i_1
67003                                                                (begin
67004                                                                  (if (fixnum?
67005                                                                       e_0)
67006                                                                    (unsafe-fxvector-set!
67007                                                                     v_0
67008                                                                     i_0
67009                                                                     e_0)
67010                                                                    (begin-unsafe
67011                                                                     (raise-argument-error
67012                                                                      'for*/vector
67013                                                                      "fixnum?"
67014                                                                      e_0)))
67015                                                                  (unsafe-fx+
67016                                                                   1
67017                                                                   i_0))))
67018                                                           (values i_1))))
67019                                                    (if (if (not
67020                                                             (let ((x_0
67021                                                                    (list
67022                                                                     e_0)))
67023                                                               (unsafe-fx=
67024                                                                i_1
67025                                                                len_0)))
67026                                                          #t
67027                                                          #f)
67028                                                      (for-loop_0 i_1 rest_0)
67029                                                      i_1))))
67030                                              i_0))))))
67031                                     (for-loop_0 0 seq_0))))
67032                                v_0))))
67033                        (if (eq? mode1_0 'flonum)
67034                          (let ((len_0 (length seq_0)))
67035                            (begin
67036                              (if (exact-nonnegative-integer? len_0)
67037                                (void)
67038                                (raise-argument-error
67039                                 'for/flvector
67040                                 "exact-nonnegative-integer?"
67041                                 len_0))
67042                              (let ((v_0 (make-flvector len_0 0.0)))
67043                                (begin
67044                                  (if (zero? len_0)
67045                                    (void)
67046                                    (begin
67047                                      (letrec*
67048                                       ((for-loop_0
67049                                         (|#%name|
67050                                          for-loop
67051                                          (lambda (i_0 lst_0)
67052                                            (begin
67053                                              (if (pair? lst_0)
67054                                                (let ((e_0 (unsafe-car lst_0)))
67055                                                  (let ((rest_0
67056                                                         (unsafe-cdr lst_0)))
67057                                                    (let ((i_1
67058                                                           (let ((i_1
67059                                                                  (begin
67060                                                                    (if (flonum?
67061                                                                         e_0)
67062                                                                      (unsafe-flvector-set!
67063                                                                       v_0
67064                                                                       i_0
67065                                                                       e_0)
67066                                                                      (begin-unsafe
67067                                                                       (raise-argument-error
67068                                                                        'for*/vector
67069                                                                        "flonum?"
67070                                                                        e_0)))
67071                                                                    (unsafe-fx+
67072                                                                     1
67073                                                                     i_0))))
67074                                                             (values i_1))))
67075                                                      (if (if (not
67076                                                               (let ((x_0
67077                                                                      (list
67078                                                                       e_0)))
67079                                                                 (unsafe-fx=
67080                                                                  i_1
67081                                                                  len_0)))
67082                                                            #t
67083                                                            #f)
67084                                                        (for-loop_0 i_1 rest_0)
67085                                                        i_1))))
67086                                                i_0))))))
67087                                       (for-loop_0 0 seq_0))))
67088                                  v_0))))
67089                          (void))))
67090                    (let ((len_0 (length seq_0)))
67091                      (if (= length2_0 len_0)
67092                        (list->vector seq_0)
67093                        (if (< length2_0 len_0)
67094                          (let ((temp22_0
67095                                 "~avector length ~a is too small, ~a values provided"))
67096                            (let ((temp23_0
67097                                   (if (eq? mode1_0 'any)
67098                                     ""
67099                                     (if (eq? mode1_0 'fixnum)
67100                                       "fx"
67101                                       (if (eq? mode1_0 'flonum)
67102                                         "fl"
67103                                         (void))))))
67104                              (let ((temp22_1 temp22_0))
67105                                (reader-error.1
67106                                 unsafe-undefined
67107                                 '#\x78
67108                                 #f
67109                                 unsafe-undefined
67110                                 in9_0
67111                                 config10_0
67112                                 temp22_1
67113                                 (list temp23_0 length2_0 len_0)))))
67114                          (let ((last-or_0
67115                                 (|#%name|
67116                                  last-or
67117                                  (lambda (v_0)
67118                                    (begin
67119                                      (if (null? seq_0)
67120                                        (wrap v_0 in9_0 config10_0 #f)
67121                                        (letrec*
67122                                         ((loop_0
67123                                           (|#%name|
67124                                            loop
67125                                            (lambda (seq_1)
67126                                              (begin
67127                                                (if (null? (cdr seq_1))
67128                                                  (car seq_1)
67129                                                  (loop_0 (cdr seq_1))))))))
67130                                         (loop_0 seq_0))))))))
67131                            (begin
67132                              (if (>= (integer-length length2_0) 48)
67133                                (raise
67134                                 (|#%app|
67135                                  exn:fail:out-of-memory
67136                                  "out of memory"
67137                                  (current-continuation-marks)))
67138                                (void))
67139                              (let ((vec_0
67140                                     (if (eq? mode1_0 'any)
67141                                       (make-vector length2_0 (last-or_0 0))
67142                                       (if (eq? mode1_0 'fixnum)
67143                                         (make-fxvector
67144                                          length2_0
67145                                          (last-or_0 0))
67146                                         (if (eq? mode1_0 'flonum)
67147                                           (make-flvector
67148                                            length2_0
67149                                            (last-or_0 0.0))
67150                                           (void))))))
67151                                (begin
67152                                  (if (eq? mode1_0 'any)
67153                                    (begin
67154                                      (begin
67155                                        (letrec*
67156                                         ((for-loop_0
67157                                           (|#%name|
67158                                            for-loop
67159                                            (lambda (lst_0 pos_0)
67160                                              (begin
67161                                                (if (if (pair? lst_0) #t #f)
67162                                                  (let ((e_0
67163                                                         (unsafe-car lst_0)))
67164                                                    (let ((rest_0
67165                                                           (unsafe-cdr lst_0)))
67166                                                      (begin
67167                                                        (vector-set!
67168                                                         vec_0
67169                                                         pos_0
67170                                                         e_0)
67171                                                        (for-loop_0
67172                                                         rest_0
67173                                                         (+ pos_0 1)))))
67174                                                  (values)))))))
67175                                         (for-loop_0 seq_0 0)))
67176                                      (void))
67177                                    (if (eq? mode1_0 'fixnum)
67178                                      (begin
67179                                        (begin
67180                                          (letrec*
67181                                           ((for-loop_0
67182                                             (|#%name|
67183                                              for-loop
67184                                              (lambda (lst_0 pos_0)
67185                                                (begin
67186                                                  (if (if (pair? lst_0) #t #f)
67187                                                    (let ((e_0
67188                                                           (unsafe-car lst_0)))
67189                                                      (let ((rest_0
67190                                                             (unsafe-cdr
67191                                                              lst_0)))
67192                                                        (begin
67193                                                          (fxvector-set!
67194                                                           vec_0
67195                                                           pos_0
67196                                                           e_0)
67197                                                          (for-loop_0
67198                                                           rest_0
67199                                                           (+ pos_0 1)))))
67200                                                    (values)))))))
67201                                           (for-loop_0 seq_0 0)))
67202                                        (void))
67203                                      (if (eq? mode1_0 'flonum)
67204                                        (begin
67205                                          (begin
67206                                            (letrec*
67207                                             ((for-loop_0
67208                                               (|#%name|
67209                                                for-loop
67210                                                (lambda (lst_0 pos_0)
67211                                                  (begin
67212                                                    (if (if (pair? lst_0)
67213                                                          #t
67214                                                          #f)
67215                                                      (let ((e_0
67216                                                             (unsafe-car
67217                                                              lst_0)))
67218                                                        (let ((rest_0
67219                                                               (unsafe-cdr
67220                                                                lst_0)))
67221                                                          (begin
67222                                                            (flvector-set!
67223                                                             vec_0
67224                                                             pos_0
67225                                                             e_0)
67226                                                            (for-loop_0
67227                                                             rest_0
67228                                                             (+ pos_0 1)))))
67229                                                      (values)))))))
67230                                             (for-loop_0 seq_0 0)))
67231                                          (void))
67232                                        (void))))
67233                                  vec_0))))))))))
67234             (wrap
67235              (if (begin-unsafe
67236                   (read-config/inner-for-syntax?
67237                    (read-config/outer-inner config10_0)))
67238                (vector->immutable-vector vec_0)
67239                vec_0)
67240              in9_0
67241              config10_0
67242              opener7_0))))))))
67243(define read-fixnum-or-flonum-vector
67244  (lambda (read-one_0 dispatch-c_0 c_0 c2_0 in_0 config_0)
67245    (let ((vector-mode_0 (if (char=? c2_0 '#\x78) 'fixnum 'flonum)))
67246      (begin
67247        (begin-unsafe (begin (read-char in_0) (void)))
67248        (begin
67249          (if (begin-unsafe
67250               (read-config/inner-for-syntax?
67251                (read-config/outer-inner config_0)))
67252            (let ((temp28_0 "literal f~avectors not allowed"))
67253              (reader-error.1
67254               unsafe-undefined
67255               '#\x78
67256               #f
67257               unsafe-undefined
67258               in_0
67259               config_0
67260               temp28_0
67261               (list c2_0)))
67262            (void))
67263          (let ((source_0
67264                 (begin-unsafe
67265                  (read-config/inner-source
67266                   (read-config/outer-inner config_0)))))
67267            (let ((c3_0 (read-char-or-special in_0 special1.1 source_0)))
67268              (call-with-values
67269               (lambda ()
67270                 (if (decimal-digit? c3_0)
67271                   (read-simple-number in_0 config_0 c3_0)
67272                   (values #f "" c3_0)))
67273               (case-lambda
67274                ((vector-len_0 len-str_0 c4_0)
67275                 (if (eqv? c4_0 '#\x28)
67276                   (read-vector.1
67277                    vector-len_0
67278                    vector-mode_0
67279                    read-one_0
67280                    '#\x28
67281                    '#\x28
67282                    '#\x29
67283                    in_0
67284                    config_0)
67285                   (if (eqv? c4_0 '#\x5b)
67286                     (if (check-parameter
67287                          1/read-square-bracket-as-paren
67288                          config_0)
67289                       (read-vector.1
67290                        vector-len_0
67291                        vector-mode_0
67292                        read-one_0
67293                        '#\x5b
67294                        '#\x5b
67295                        '#\x5d
67296                        in_0
67297                        config_0)
67298                       (let ((temp48_0
67299                              (format
67300                               "~a~a"
67301                               dispatch-c_0
67302                               (format "~a~a" c_0 c2_0))))
67303                         (bad-syntax-error.1 '#\x78 in_0 config_0 temp48_0)))
67304                     (if (eqv? c4_0 '#\x7b)
67305                       (if (check-parameter
67306                            1/read-curly-brace-as-paren
67307                            config_0)
67308                         (read-vector.1
67309                          vector-len_0
67310                          vector-mode_0
67311                          read-one_0
67312                          '#\x7b
67313                          '#\x7b
67314                          '#\x7d
67315                          in_0
67316                          config_0)
67317                         (let ((temp59_0
67318                                (format
67319                                 "~a~a"
67320                                 dispatch-c_0
67321                                 (format "~a~a" c_0 c2_0))))
67322                           (bad-syntax-error.1 '#\x78 in_0 config_0 temp59_0)))
67323                       (let ((temp63_0
67324                              "expected `(`, `[`, or `{` after `#~a~a~a`"))
67325                         (reader-error.1
67326                          unsafe-undefined
67327                          c4_0
67328                          #f
67329                          unsafe-undefined
67330                          in_0
67331                          config_0
67332                          temp63_0
67333                          (list c_0 c2_0 len-str_0)))))))
67334                (args (raise-binding-result-arity-error 3 args)))))))))))
67335(define read-simple-number
67336  (lambda (in_0 config_0 init-c_0)
67337    (let ((accum-str_0 (accum-string-init! config_0)))
67338      (begin
67339        (accum-string-add! accum-str_0 init-c_0)
67340        (let ((init-v_0 (digit->number init-c_0)))
67341          (let ((v_0
67342                 (read-digits.1
67343                  10
67344                  init-v_0
67345                  +inf.0
67346                  init-v_0
67347                  in_0
67348                  config_0
67349                  accum-str_0)))
67350            (let ((app_0 (accum-string-get!.1 0 accum-str_0 config_0)))
67351              (values
67352               v_0
67353               app_0
67354               (let ((source_0
67355                      (begin-unsafe
67356                       (read-config/inner-source
67357                        (read-config/outer-inner config_0)))))
67358                 (read-char-or-special in_0 special1.1 source_0))))))))))
67359(define read-struct
67360  (lambda (read-one_0 dispatch-c_0 in_0 config_0)
67361    (let ((source_0
67362           (begin-unsafe
67363            (read-config/inner-source (read-config/outer-inner config_0)))))
67364      (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
67365        (let ((ec_0 (effective-char c_0 config_0)))
67366          (let ((seq_0
67367                 (if (eqv? ec_0 '#\x28)
67368                   (read-struct-sequence
67369                    read-one_0
67370                    c_0
67371                    '#\x28
67372                    '#\x29
67373                    in_0
67374                    config_0)
67375                   (if (eqv? ec_0 '#\x5b)
67376                     (if (check-parameter
67377                          1/read-square-bracket-as-paren
67378                          config_0)
67379                       (read-struct-sequence
67380                        read-one_0
67381                        c_0
67382                        '#\x5b
67383                        '#\x5d
67384                        in_0
67385                        config_0)
67386                       (let ((temp3_0 (format "~as~a" dispatch-c_0 c_0)))
67387                         (bad-syntax-error.1 '#\x78 in_0 config_0 temp3_0)))
67388                     (if (eqv? ec_0 '#\x7b)
67389                       (if (check-parameter
67390                            1/read-curly-brace-as-paren
67391                            config_0)
67392                         (read-struct-sequence
67393                          read-one_0
67394                          c_0
67395                          '#\x7b
67396                          '#\x7d
67397                          in_0
67398                          config_0)
67399                         (let ((temp6_0 (format "~as~a" dispatch-c_0 c_0)))
67400                           (bad-syntax-error.1 '#\x78 in_0 config_0 temp6_0)))
67401                       (let ((temp9_0 "expected ~a after `~as`"))
67402                         (let ((temp10_0 (all-openers-str config_0)))
67403                           (let ((temp9_1 temp9_0))
67404                             (reader-error.1
67405                              unsafe-undefined
67406                              '#\x78
67407                              #f
67408                              unsafe-undefined
67409                              in_0
67410                              config_0
67411                              temp9_1
67412                              (list temp10_0 dispatch-c_0))))))))))
67413            (begin
67414              (if (null? seq_0)
67415                (let ((temp14_0 "missing structure description in `~as` form"))
67416                  (reader-error.1
67417                   unsafe-undefined
67418                   '#\x78
67419                   #f
67420                   unsafe-undefined
67421                   in_0
67422                   config_0
67423                   temp14_0
67424                   (list dispatch-c_0)))
67425                (void))
67426              (begin
67427                (if (prefab-key? (car seq_0))
67428                  (void)
67429                  (let ((temp18_0
67430                         "invalid structure description in `~as` form"))
67431                    (reader-error.1
67432                     unsafe-undefined
67433                     '#\x78
67434                     #f
67435                     unsafe-undefined
67436                     in_0
67437                     config_0
67438                     temp18_0
67439                     (list dispatch-c_0))))
67440                (let ((with-handlers-handler21_0
67441                       (|#%name|
67442                        with-handlers-handler21
67443                        (lambda (exn_0) (begin #f)))))
67444                  (let ((st_0
67445                         (let ((bpz_0
67446                                (continuation-mark-set-first
67447                                 #f
67448                                 break-enabled-key)))
67449                           (call-handled-body
67450                            bpz_0
67451                            (lambda (e_0)
67452                              (select-handler/no-breaks
67453                               e_0
67454                               bpz_0
67455                               (list
67456                                (cons exn:fail? with-handlers-handler21_0))))
67457                            (lambda ()
67458                              (let ((app_0 (car seq_0)))
67459                                (prefab-key->struct-type
67460                                 app_0
67461                                 (length (cdr seq_0)))))))))
67462                    (begin
67463                      (if st_0
67464                        (void)
67465                        (let ((temp24_0
67466                               (string-append
67467                                "mismatch between structure description"
67468                                " and number of provided field values in `~as` form")))
67469                          (reader-error.1
67470                           unsafe-undefined
67471                           '#\x78
67472                           #f
67473                           unsafe-undefined
67474                           in_0
67475                           config_0
67476                           temp24_0
67477                           (list dispatch-c_0))))
67478                      (if (begin-unsafe
67479                           (read-config/inner-for-syntax?
67480                            (read-config/outer-inner config_0)))
67481                        (if (let ((k_0 (car seq_0)))
67482                              (begin-unsafe
67483                               (prefab-key-all-fields-immutable? k_0)))
67484                          (void)
67485                          (let ((temp28_0
67486                                 "cannot read mutable `~as` form as syntax"))
67487                            (reader-error.1
67488                             unsafe-undefined
67489                             '#\x78
67490                             #f
67491                             unsafe-undefined
67492                             in_0
67493                             config_0
67494                             temp28_0
67495                             (list dispatch-c_0))))
67496                        (void))
67497                      (wrap
67498                       (apply make-prefab-struct seq_0)
67499                       in_0
67500                       config_0
67501                       ec_0))))))))))))
67502(define read-struct-sequence
67503  (lambda (read-one_0 opener-c_0 opener_0 closer_0 in_0 config_0)
67504    (let ((temp36_0
67505           (lambda (init-c_0 in_1 config_1)
67506             (|#%app| read-one_0 init-c_0 in_1 (disable-wrapping config_1)))))
67507      (read-unwrapped-sequence.1
67508       'all
67509       unsafe-undefined
67510       temp36_0
67511       #f
67512       unsafe-undefined
67513       read-one_0
67514       opener-c_0
67515       opener_0
67516       closer_0
67517       in_0
67518       config_0))))
67519(define read-vector-or-graph
67520  (lambda (read-one_0 dispatch-c_0 init-c_0 in_0 config_0)
67521    (let ((accum-str_0 (accum-string-init! config_0)))
67522      (begin
67523        (accum-string-add! accum-str_0 init-c_0)
67524        (let ((init-v_0 (digit->number init-c_0)))
67525          (let ((v_0
67526                 (read-digits.1
67527                  10
67528                  init-v_0
67529                  +inf.0
67530                  init-v_0
67531                  in_0
67532                  config_0
67533                  accum-str_0)))
67534            (call-with-values
67535             (lambda () (port-next-location in_0))
67536             (case-lambda
67537              ((post-line_0 post-col_0 post-pos_0)
67538               (let ((get-accum_0
67539                      (|#%name|
67540                       get-accum
67541                       (lambda (c_0)
67542                         (begin
67543                           (format
67544                            "~a~a~a"
67545                            dispatch-c_0
67546                            (accum-string-get!.1 0 accum-str_0 config_0)
67547                            c_0))))))
67548                 (let ((source_0
67549                        (begin-unsafe
67550                         (read-config/inner-source
67551                          (read-config/outer-inner config_0)))))
67552                   (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
67553                     (let ((ec_0 (effective-char c_0 config_0)))
67554                       (if (eqv? ec_0 '#\x28)
67555                         (begin
67556                           (begin-unsafe
67557                            (set-read-config-state-accum-str!
67558                             (begin-unsafe
67559                              (read-config/inner-st
67560                               (read-config/outer-inner config_0)))
67561                             accum-str_0))
67562                           (read-vector.1
67563                            v_0
67564                            'any
67565                            read-one_0
67566                            c_0
67567                            '#\x28
67568                            '#\x29
67569                            in_0
67570                            config_0))
67571                         (if (eqv? ec_0 '#\x5b)
67572                           (begin
67573                             (begin-unsafe
67574                              (set-read-config-state-accum-str!
67575                               (begin-unsafe
67576                                (read-config/inner-st
67577                                 (read-config/outer-inner config_0)))
67578                               accum-str_0))
67579                             (if (check-parameter
67580                                  1/read-square-bracket-as-paren
67581                                  config_0)
67582                               (read-vector.1
67583                                v_0
67584                                'any
67585                                read-one_0
67586                                c_0
67587                                '#\x5b
67588                                '#\x5d
67589                                in_0
67590                                config_0)
67591                               (let ((temp26_0
67592                                      (get-accum_0 (get-accum_0 c_0))))
67593                                 (bad-syntax-error.1
67594                                  '#\x78
67595                                  in_0
67596                                  config_0
67597                                  temp26_0))))
67598                           (if (eqv? ec_0 '#\x7b)
67599                             (begin
67600                               (begin-unsafe
67601                                (set-read-config-state-accum-str!
67602                                 (begin-unsafe
67603                                  (read-config/inner-st
67604                                   (read-config/outer-inner config_0)))
67605                                 accum-str_0))
67606                               (if (check-parameter
67607                                    1/read-curly-brace-as-paren
67608                                    config_0)
67609                                 (read-vector.1
67610                                  v_0
67611                                  'any
67612                                  read-one_0
67613                                  c_0
67614                                  '#\x7b
67615                                  '#\x7d
67616                                  in_0
67617                                  config_0)
67618                                 (let ((temp36_0
67619                                        (get-accum_0 (get-accum_0 c_0))))
67620                                   (bad-syntax-error.1
67621                                    '#\x78
67622                                    in_0
67623                                    config_0
67624                                    temp36_0))))
67625                             (if (if (eqv? c_0 '#\x3d) #t (eqv? c_0 '#\x23))
67626                               (begin
67627                                 (if (let ((or-part_0
67628                                            (begin-unsafe
67629                                             (read-config/inner-for-syntax?
67630                                              (read-config/outer-inner
67631                                               config_0)))))
67632                                       (if or-part_0
67633                                         or-part_0
67634                                         (not
67635                                          (check-parameter
67636                                           1/read-accept-graph
67637                                           config_0))))
67638                                   (let ((temp39_0 "`#...~a` forms not ~a"))
67639                                     (let ((temp41_0
67640                                            (if (begin-unsafe
67641                                                 (read-config/inner-for-syntax?
67642                                                  (read-config/outer-inner
67643                                                   config_0)))
67644                                              "allowed in `read-syntax` mode"
67645                                              "enabled")))
67646                                       (let ((temp39_1 temp39_0))
67647                                         (reader-error.1
67648                                          unsafe-undefined
67649                                          '#\x78
67650                                          #f
67651                                          unsafe-undefined
67652                                          in_0
67653                                          config_0
67654                                          temp39_1
67655                                          (list c_0 temp41_0)))))
67656                                   (void))
67657                                 (if (<=
67658                                      (begin-unsafe
67659                                       (accum-string-pos accum-str_0))
67660                                      8)
67661                                   (void)
67662                                   (let ((temp44_0
67663                                          "graph ID too long in `~a~a~a`"))
67664                                     (let ((temp46_0
67665                                            (accum-string-get!.1
67666                                             0
67667                                             accum-str_0
67668                                             config_0)))
67669                                       (let ((temp44_1 temp44_0))
67670                                         (reader-error.1
67671                                          unsafe-undefined
67672                                          '#\x78
67673                                          #f
67674                                          unsafe-undefined
67675                                          in_0
67676                                          config_0
67677                                          temp44_1
67678                                          (list dispatch-c_0 temp46_0 c_0))))))
67679                                 (if (eqv? c_0 '#\x3d)
67680                                   (let ((ph_0
67681                                          (make-placeholder 'placeholder)))
67682                                     (let ((ht_0 (get-graph-hash config_0)))
67683                                       (begin
67684                                         (if (hash-ref ht_0 v_0 #f)
67685                                           (let ((temp52_0
67686                                                  "multiple `~a~a~a` tags"))
67687                                             (let ((temp54_0
67688                                                    (accum-string-get!.1
67689                                                     0
67690                                                     accum-str_0
67691                                                     config_0)))
67692                                               (let ((temp52_1 temp52_0))
67693                                                 (reader-error.1
67694                                                  unsafe-undefined
67695                                                  '#\x78
67696                                                  #f
67697                                                  unsafe-undefined
67698                                                  in_0
67699                                                  config_0
67700                                                  temp52_1
67701                                                  (list
67702                                                   dispatch-c_0
67703                                                   temp54_0
67704                                                   c_0)))))
67705                                           (void))
67706                                         (begin
67707                                           (hash-set! ht_0 v_0 ph_0)
67708                                           (let ((result-v_0
67709                                                  (|#%app|
67710                                                   read-one_0
67711                                                   #f
67712                                                   in_0
67713                                                   (next-readtable config_0))))
67714                                             (begin
67715                                               (if (eof-object? result-v_0)
67716                                                 (let ((temp61_0
67717                                                        "expected an element for graph after `~a~a~a`, found end-of-file"))
67718                                                   (let ((temp63_0
67719                                                          (accum-string-get!.1
67720                                                           0
67721                                                           accum-str_0
67722                                                           config_0)))
67723                                                     (let ((temp61_1 temp61_0))
67724                                                       (reader-error.1
67725                                                        unsafe-undefined
67726                                                        result-v_0
67727                                                        #f
67728                                                        unsafe-undefined
67729                                                        in_0
67730                                                        config_0
67731                                                        temp61_1
67732                                                        (list
67733                                                         dispatch-c_0
67734                                                         temp63_0
67735                                                         c_0)))))
67736                                                 (void))
67737                                               (begin-unsafe
67738                                                (set-read-config-state-accum-str!
67739                                                 (begin-unsafe
67740                                                  (read-config/inner-st
67741                                                   (read-config/outer-inner
67742                                                    config_0)))
67743                                                 accum-str_0))
67744                                               (placeholder-set!
67745                                                ph_0
67746                                                result-v_0)
67747                                               ph_0))))))
67748                                   (if (eqv? c_0 '#\x23)
67749                                     (begin0
67750                                       (hash-ref
67751                                        (let ((or-part_0
67752                                               (read-config-state-graph
67753                                                (begin-unsafe
67754                                                 (read-config/inner-st
67755                                                  (read-config/outer-inner
67756                                                   config_0))))))
67757                                          (if or-part_0 or-part_0 hash2725))
67758                                        v_0
67759                                        (lambda ()
67760                                          (let ((temp69_0
67761                                                 "no preceding `~a~a=` for `~a~a~a`"))
67762                                            (let ((temp73_0
67763                                                   (accum-string-get!.1
67764                                                    0
67765                                                    accum-str_0
67766                                                    config_0)))
67767                                              (let ((temp69_1 temp69_0))
67768                                                (reader-error.1
67769                                                 unsafe-undefined
67770                                                 '#\x78
67771                                                 #f
67772                                                 unsafe-undefined
67773                                                 in_0
67774                                                 config_0
67775                                                 temp69_1
67776                                                 (list
67777                                                  dispatch-c_0
67778                                                  v_0
67779                                                  dispatch-c_0
67780                                                  temp73_0
67781                                                  c_0)))))))
67782                                       (begin-unsafe
67783                                        (set-read-config-state-accum-str!
67784                                         (begin-unsafe
67785                                          (read-config/inner-st
67786                                           (read-config/outer-inner config_0)))
67787                                         accum-str_0)))
67788                                     (void))))
67789                               (let ((temp80_0 "bad syntax `~a`"))
67790                                 (let ((temp81_0 (get-accum_0 c_0)))
67791                                   (let ((temp80_1 temp80_0))
67792                                     (reader-error.1
67793                                      unsafe-undefined
67794                                      c_0
67795                                      #f
67796                                      unsafe-undefined
67797                                      in_0
67798                                      config_0
67799                                      temp80_1
67800                                      (list temp81_0))))))))))))))
67801              (args (raise-binding-result-arity-error 3 args))))))))))
67802(define get-graph-hash
67803  (lambda (config_0)
67804    (let ((st_0
67805           (begin-unsafe
67806            (read-config/inner-st (read-config/outer-inner config_0)))))
67807      (let ((or-part_0 (read-config-state-graph st_0)))
67808        (if or-part_0
67809          or-part_0
67810          (let ((ht_0 (make-hasheqv)))
67811            (begin (set-read-config-state-graph! st_0 ht_0) ht_0)))))))
67812(define coerce-key
67813  (lambda (key_0 config_0)
67814    (let ((for-syntax?_0
67815           (begin-unsafe
67816            (read-config/inner-for-syntax?
67817             (read-config/outer-inner config_0)))))
67818      (|#%app|
67819       (begin-unsafe
67820        (read-config/inner-coerce-key (read-config/outer-inner config_0)))
67821       for-syntax?_0
67822       key_0))))
67823(define read-hash
67824  (lambda (read-one_0 dispatch-c_0 init-c_0 in_0 config_0)
67825    (let ((accum-str_0 (accum-string-init! config_0)))
67826      (begin
67827        (accum-string-add! accum-str_0 dispatch-c_0)
67828        (begin
67829          (accum-string-add! accum-str_0 init-c_0)
67830          (let ((get-next!_0
67831                 (|#%name|
67832                  get-next!
67833                  (lambda (expect-c_0 expect-alt-c_0)
67834                    (begin
67835                      (let ((source_0
67836                             (begin-unsafe
67837                              (read-config/inner-source
67838                               (read-config/outer-inner config_0)))))
67839                        (let ((c_0
67840                               (read-char-or-special
67841                                in_0
67842                                special1.1
67843                                source_0)))
67844                          (begin
67845                            (if (let ((or-part_0 (eqv? c_0 expect-c_0)))
67846                                  (if or-part_0
67847                                    or-part_0
67848                                    (eqv? c_0 expect-alt-c_0)))
67849                              (void)
67850                              (let ((temp4_0 "expected `~a` after `~a`"))
67851                                (let ((temp6_0
67852                                       (accum-string-get!.1
67853                                        0
67854                                        accum-str_0
67855                                        config_0)))
67856                                  (let ((temp4_1 temp4_0))
67857                                    (reader-error.1
67858                                     unsafe-undefined
67859                                     c_0
67860                                     #f
67861                                     unsafe-undefined
67862                                     in_0
67863                                     config_0
67864                                     temp4_1
67865                                     (list expect-c_0 temp6_0))))))
67866                            (accum-string-add! accum-str_0 c_0)))))))))
67867            (begin
67868              (get-next!_0 '#\x61 '#\x41)
67869              (begin
67870                (get-next!_0 '#\x73 '#\x53)
67871                (begin
67872                  (get-next!_0 '#\x68 '#\x48)
67873                  (call-with-values
67874                   (lambda ()
67875                     (letrec*
67876                      ((loop_0
67877                        (|#%name|
67878                         loop
67879                         (lambda (mode_0)
67880                           (begin
67881                             (let ((source_0
67882                                    (begin-unsafe
67883                                     (read-config/inner-source
67884                                      (read-config/outer-inner config_0)))))
67885                               (let ((c_0
67886                                      (read-char-or-special
67887                                       in_0
67888                                       special1.1
67889                                       source_0)))
67890                                 (let ((ec_0 (effective-char c_0 config_0)))
67891                                   (if (eqv? ec_0 '#\x28)
67892                                     (call-with-values
67893                                      (lambda () (port-next-location in_0))
67894                                      (case-lambda
67895                                       ((open-end-line_0
67896                                         open-end-col_0
67897                                         open-end-pos_0)
67898                                        (let ((read-one-key+value_0
67899                                               (make-read-one-key+value
67900                                                read-one_0
67901                                                c_0
67902                                                '#\x29
67903                                                open-end-pos_0)))
67904                                          (values
67905                                           (read-unwrapped-sequence.1
67906                                            #f
67907                                            config_0
67908                                            unsafe-undefined
67909                                            #f
67910                                            unsafe-undefined
67911                                            read-one-key+value_0
67912                                            c_0
67913                                            '#\x28
67914                                            '#\x29
67915                                            in_0
67916                                            config_0)
67917                                           ec_0
67918                                           mode_0)))
67919                                       (args
67920                                        (raise-binding-result-arity-error
67921                                         3
67922                                         args))))
67923                                     (if (eqv? ec_0 '#\x5b)
67924                                       (if (check-parameter
67925                                            1/read-square-bracket-as-paren
67926                                            config_0)
67927                                         (call-with-values
67928                                          (lambda () (port-next-location in_0))
67929                                          (case-lambda
67930                                           ((open-end-line_0
67931                                             open-end-col_0
67932                                             open-end-pos_0)
67933                                            (let ((read-one-key+value_0
67934                                                   (make-read-one-key+value
67935                                                    read-one_0
67936                                                    c_0
67937                                                    '#\x5d
67938                                                    open-end-pos_0)))
67939                                              (values
67940                                               (read-unwrapped-sequence.1
67941                                                #f
67942                                                config_0
67943                                                unsafe-undefined
67944                                                #f
67945                                                unsafe-undefined
67946                                                read-one-key+value_0
67947                                                c_0
67948                                                '#\x5b
67949                                                '#\x5d
67950                                                in_0
67951                                                config_0)
67952                                               ec_0
67953                                               mode_0)))
67954                                           (args
67955                                            (raise-binding-result-arity-error
67956                                             3
67957                                             args))))
67958                                         (let ((temp27_0
67959                                                "illegal use of `~a`"))
67960                                           (reader-error.1
67961                                            unsafe-undefined
67962                                            '#\x78
67963                                            #f
67964                                            unsafe-undefined
67965                                            in_0
67966                                            config_0
67967                                            temp27_0
67968                                            (list c_0))))
67969                                       (if (eqv? ec_0 '#\x7b)
67970                                         (if (check-parameter
67971                                              1/read-curly-brace-as-paren
67972                                              config_0)
67973                                           (call-with-values
67974                                            (lambda ()
67975                                              (port-next-location in_0))
67976                                            (case-lambda
67977                                             ((open-end-line_0
67978                                               open-end-col_0
67979                                               open-end-pos_0)
67980                                              (let ((read-one-key+value_0
67981                                                     (make-read-one-key+value
67982                                                      read-one_0
67983                                                      c_0
67984                                                      '#\x7d
67985                                                      open-end-pos_0)))
67986                                                (values
67987                                                 (read-unwrapped-sequence.1
67988                                                  #f
67989                                                  config_0
67990                                                  unsafe-undefined
67991                                                  #f
67992                                                  unsafe-undefined
67993                                                  read-one-key+value_0
67994                                                  c_0
67995                                                  '#\x7b
67996                                                  '#\x7d
67997                                                  in_0
67998                                                  config_0)
67999                                                 ec_0
68000                                                 mode_0)))
68001                                             (args
68002                                              (raise-binding-result-arity-error
68003                                               3
68004                                               args))))
68005                                           (let ((temp39_0
68006                                                  "illegal use of `~a`"))
68007                                             (reader-error.1
68008                                              unsafe-undefined
68009                                              '#\x78
68010                                              #f
68011                                              unsafe-undefined
68012                                              in_0
68013                                              config_0
68014                                              temp39_0
68015                                              (list c_0))))
68016                                         (if (if (eqv? ec_0 '#\x65)
68017                                               #t
68018                                               (eqv? ec_0 '#\x45))
68019                                           (begin
68020                                             (accum-string-add!
68021                                              accum-str_0
68022                                              c_0)
68023                                             (get-next!_0 '#\x71 '#\x51)
68024                                             (loop_0 'eq))
68025                                           (if (if (eqv? ec_0 '#\x76)
68026                                                 #t
68027                                                 (eqv? ec_0 '#\x56))
68028                                             (begin
68029                                               (accum-string-add!
68030                                                accum-str_0
68031                                                c_0)
68032                                               (if (eq? mode_0 'eq)
68033                                                 (loop_0 'eqv)
68034                                                 (let ((temp43_0
68035                                                        "bad syntax `~a`"))
68036                                                   (let ((temp44_0
68037                                                          (accum-string-get!.1
68038                                                           0
68039                                                           accum-str_0
68040                                                           config_0)))
68041                                                     (let ((temp43_1 temp43_0))
68042                                                       (reader-error.1
68043                                                        unsafe-undefined
68044                                                        '#\x78
68045                                                        #f
68046                                                        unsafe-undefined
68047                                                        in_0
68048                                                        config_0
68049                                                        temp43_1
68050                                                        (list temp44_0)))))))
68051                                             (begin
68052                                               (if (char? c_0)
68053                                                 (accum-string-add!
68054                                                  accum-str_0
68055                                                  c_0)
68056                                                 (void))
68057                                               (let ((temp50_0
68058                                                      "bad syntax `~a`"))
68059                                                 (let ((temp51_0
68060                                                        (accum-string-get!.1
68061                                                         0
68062                                                         accum-str_0
68063                                                         config_0)))
68064                                                   (let ((temp50_1 temp50_0))
68065                                                     (reader-error.1
68066                                                      unsafe-undefined
68067                                                      c_0
68068                                                      #f
68069                                                      unsafe-undefined
68070                                                      in_0
68071                                                      config_0
68072                                                      temp50_1
68073                                                      (list
68074                                                       temp51_0)))))))))))))))))))
68075                      (loop_0 'equal)))
68076                   (case-lambda
68077                    ((content_0 opener_0 mode_0)
68078                     (let ((graph?_0
68079                            (if (read-config-state-graph
68080                                 (begin-unsafe
68081                                  (read-config/inner-st
68082                                   (read-config/outer-inner config_0))))
68083                              #t
68084                              #f)))
68085                       (wrap
68086                        (if (eq? mode_0 'equal)
68087                          (if graph?_0
68088                            (make-hash-placeholder content_0)
68089                            (make-immutable-hash content_0))
68090                          (if (eq? mode_0 'eq)
68091                            (if graph?_0
68092                              (make-hasheq-placeholder content_0)
68093                              (make-immutable-hasheq content_0))
68094                            (if (eq? mode_0 'eqv)
68095                              (if graph?_0
68096                                (make-hasheqv-placeholder content_0)
68097                                (make-immutable-hasheqv content_0))
68098                              (void))))
68099                        in_0
68100                        config_0
68101                        opener_0)))
68102                    (args (raise-binding-result-arity-error 3 args)))))))))))))
68103(define make-read-one-key+value
68104  (lambda (read-one_0 overall-opener-c_0 overall-closer-ec_0 prefix-end-pos_0)
68105    (lambda (init-c_0 in_0 config_0)
68106      (let ((c_0
68107             (read-char/skip-whitespace-and-comments
68108              init-c_0
68109              read-one_0
68110              in_0
68111              config_0)))
68112        (call-with-values
68113         (lambda () (port-next-location* in_0 c_0))
68114         (case-lambda
68115          ((open-line_0 open-col_0 open-pos_0)
68116           (let ((ec_0 (effective-char c_0 config_0)))
68117             (let ((elem-config_0 (next-readtable config_0)))
68118               (let ((closer_0
68119                      (if (eqv? ec_0 '#\x28)
68120                        '#\x29
68121                        (if (eqv? ec_0 '#\x5b)
68122                          (if (check-parameter
68123                               1/read-square-bracket-as-paren
68124                               config_0)
68125                            '#\x5d
68126                            #f)
68127                          (if (eqv? ec_0 '#\x7b)
68128                            (if (check-parameter
68129                                 1/read-curly-brace-as-paren
68130                                 config_0)
68131                              '#\x7d
68132                              #f)
68133                            #f)))))
68134                 (if (not closer_0)
68135                   (if (eof-object? c_0)
68136                     (let ((temp58_0 "expected ~a to close `~a`"))
68137                       (let ((temp59_0
68138                              (begin-unsafe
68139                               (effective-char-names
68140                                overall-closer-ec_0
68141                                config_0
68142                                "closer"))))
68143                         (let ((temp58_1 temp58_0))
68144                           (reader-error.1
68145                            unsafe-undefined
68146                            c_0
68147                            prefix-end-pos_0
68148                            unsafe-undefined
68149                            in_0
68150                            config_0
68151                            temp58_1
68152                            (list temp59_0 overall-opener-c_0)))))
68153                     (if (char-closer? ec_0 config_0)
68154                       (let ((temp62_0
68155                              (reading-at
68156                               config_0
68157                               open-line_0
68158                               open-col_0
68159                               open-pos_0)))
68160                         (let ((temp63_0 "~a"))
68161                           (let ((temp64_0
68162                                  (indentation-unexpected-closer-message
68163                                   ec_0
68164                                   c_0
68165                                   config_0)))
68166                             (let ((temp63_1 temp63_0) (temp62_1 temp62_0))
68167                               (reader-error.1
68168                                unsafe-undefined
68169                                '#\x78
68170                                #f
68171                                unsafe-undefined
68172                                in_0
68173                                temp62_1
68174                                temp63_1
68175                                (list temp64_0))))))
68176                       (let ((v_0
68177                              (|#%app|
68178                               read-one_0
68179                               c_0
68180                               in_0
68181                               (keep-comment elem-config_0))))
68182                         (if (1/special-comment? v_0)
68183                           (|#%app|
68184                            (make-read-one-key+value
68185                             read-one_0
68186                             overall-opener-c_0
68187                             overall-closer-ec_0
68188                             prefix-end-pos_0)
68189                            #f
68190                            in_0
68191                            config_0)
68192                           (let ((temp66_0
68193                                  (reading-at
68194                                   config_0
68195                                   open-line_0
68196                                   open-col_0
68197                                   open-pos_0)))
68198                             (let ((temp67_0
68199                                    "expected ~a to start a hash pair"))
68200                               (let ((temp68_0 (all-openers-str config_0)))
68201                                 (let ((temp67_1 temp67_0) (temp66_1 temp66_0))
68202                                   (reader-error.1
68203                                    unsafe-undefined
68204                                    '#\x78
68205                                    #f
68206                                    unsafe-undefined
68207                                    in_0
68208                                    temp66_1
68209                                    temp67_1
68210                                    (list temp68_0))))))))))
68211                   (let ((k_0
68212                          (|#%app|
68213                           read-one_0
68214                           #f
68215                           in_0
68216                           (disable-wrapping elem-config_0))))
68217                     (let ((dot-c_0
68218                            (read-char/skip-whitespace-and-comments
68219                             #f
68220                             read-one_0
68221                             in_0
68222                             config_0)))
68223                       (call-with-values
68224                        (lambda () (port-next-location* in_0 dot-c_0))
68225                        (case-lambda
68226                         ((dot-line_0 dot-col_0 dot-pos_0)
68227                          (let ((dot-ec_0 (effective-char dot-c_0 config_0)))
68228                            (begin
68229                              (if (if (eqv? dot-ec_0 '#\x2e)
68230                                    (let ((source_0
68231                                           (begin-unsafe
68232                                            (read-config/inner-source
68233                                             (read-config/outer-inner
68234                                              config_0)))))
68235                                      (let ((c_1
68236                                             (let ((c_1
68237                                                    (peek-char-or-special
68238                                                     in_0
68239                                                     0
68240                                                     'special
68241                                                     source_0)))
68242                                               (if (eq? c_1 'special)
68243                                                 (special1.1 'special)
68244                                                 c_1))))
68245                                        (begin-unsafe
68246                                         (readtable-char-delimiter?
68247                                          (begin-unsafe
68248                                           (read-config/inner-readtable
68249                                            (read-config/outer-inner
68250                                             config_0)))
68251                                          c_1
68252                                          config_0))))
68253                                    #f)
68254                                (void)
68255                                (let ((temp70_0
68256                                       (reading-at
68257                                        config_0
68258                                        dot-line_0
68259                                        dot-col_0
68260                                        dot-pos_0)))
68261                                  (let ((temp72_0
68262                                         "expected ~a and value for hash"))
68263                                    (let ((temp73_0 (begin-unsafe "`.`")))
68264                                      (let ((temp72_1 temp72_0)
68265                                            (temp70_1 temp70_0))
68266                                        (reader-error.1
68267                                         unsafe-undefined
68268                                         dot-c_0
68269                                         #f
68270                                         unsafe-undefined
68271                                         in_0
68272                                         temp70_1
68273                                         temp72_1
68274                                         (list temp73_0)))))))
68275                              (let ((v_0
68276                                     (|#%app|
68277                                      read-one_0
68278                                      #f
68279                                      in_0
68280                                      elem-config_0)))
68281                                (let ((closer-c_0
68282                                       (read-char/skip-whitespace-and-comments
68283                                        #f
68284                                        read-one_0
68285                                        in_0
68286                                        config_0)))
68287                                  (call-with-values
68288                                   (lambda ()
68289                                     (port-next-location* in_0 closer-c_0))
68290                                   (case-lambda
68291                                    ((closer-line_0 closer-col_0 closer-pos_0)
68292                                     (let ((closer-ec_0
68293                                            (effective-char
68294                                             closer-c_0
68295                                             config_0)))
68296                                       (begin
68297                                         (if (eqv? closer-ec_0 closer_0)
68298                                           (void)
68299                                           (let ((temp75_0
68300                                                  (reading-at
68301                                                   config_0
68302                                                   closer-line_0
68303                                                   closer-col_0
68304                                                   closer-pos_0)))
68305                                             (let ((temp77_0
68306                                                    "expected ~a after value within a hash"))
68307                                               (let ((temp78_0
68308                                                      (begin-unsafe
68309                                                       (effective-char-names
68310                                                        closer_0
68311                                                        config_0
68312                                                        "closer"))))
68313                                                 (let ((temp77_1 temp77_0)
68314                                                       (temp75_1 temp75_0))
68315                                                   (reader-error.1
68316                                                    unsafe-undefined
68317                                                    closer-c_0
68318                                                    #f
68319                                                    unsafe-undefined
68320                                                    in_0
68321                                                    temp75_1
68322                                                    temp77_1
68323                                                    (list temp78_0)))))))
68324                                         (cons
68325                                          (coerce-key k_0 elem-config_0)
68326                                          v_0))))
68327                                    (args
68328                                     (raise-binding-result-arity-error
68329                                      3
68330                                      args)))))))))
68331                         (args
68332                          (raise-binding-result-arity-error 3 args)))))))))))
68333          (args (raise-binding-result-arity-error 3 args))))))))
68334(define read-string.1
68335  (|#%name|
68336   read-string
68337   (lambda (mode1_0 in3_0 config4_0)
68338     (begin
68339       (let ((source_0
68340              (begin-unsafe
68341               (read-config/inner-source
68342                (read-config/outer-inner config4_0)))))
68343         (call-with-values
68344          (lambda () (port-next-location in3_0))
68345          (case-lambda
68346           ((open-end-line_0 open-end-col_0 open-end-pos_0)
68347            (let ((accum-str_0 (accum-string-init! config4_0)))
68348              (let ((bad-end_0
68349                     (|#%name|
68350                      bad-end
68351                      (lambda (c_0)
68352                        (begin
68353                          (if (eof-object? c_0)
68354                            (let ((temp10_0 "expected a closing `\"`"))
68355                              (reader-error.1
68356                               unsafe-undefined
68357                               c_0
68358                               open-end-pos_0
68359                               unsafe-undefined
68360                               in3_0
68361                               config4_0
68362                               temp10_0
68363                               (list)))
68364                            (let ((temp14_0
68365                                   "found non-character while reading a ~a"))
68366                              (reader-error.1
68367                               unsafe-undefined
68368                               c_0
68369                               #f
68370                               unsafe-undefined
68371                               in3_0
68372                               config4_0
68373                               temp14_0
68374                               (list mode1_0)))))))))
68375                (begin
68376                  (letrec*
68377                   ((loop_0
68378                     (|#%name|
68379                      loop
68380                      (lambda ()
68381                        (begin
68382                          (let ((c_0
68383                                 (read-char-or-special
68384                                  in3_0
68385                                  special1.1
68386                                  source_0)))
68387                            (if (not (char? c_0))
68388                              (bad-end_0 c_0)
68389                              (if (char=? '#\x5c c_0)
68390                                (let ((escaped-c_0
68391                                       (read-char-or-special
68392                                        in3_0
68393                                        special1.1
68394                                        source_0)))
68395                                  (begin
68396                                    (if (not (char? escaped-c_0))
68397                                      (bad-end_0 escaped-c_0)
68398                                      (void))
68399                                    (let ((unknown-error_0
68400                                           (|#%name|
68401                                            unknown-error
68402                                            (lambda ()
68403                                              (begin
68404                                                (let ((temp18_0
68405                                                       "unknown escape sequence `~a~a` in ~a"))
68406                                                  (reader-error.1
68407                                                   unsafe-undefined
68408                                                   '#\x78
68409                                                   #f
68410                                                   unsafe-undefined
68411                                                   in3_0
68412                                                   config4_0
68413                                                   temp18_0
68414                                                   (list
68415                                                    c_0
68416                                                    escaped-c_0
68417                                                    mode1_0))))))))
68418                                      (begin
68419                                        (let ((index_0
68420                                               (if (char? escaped-c_0)
68421                                                 (let ((codepoint_0
68422                                                        (char->integer
68423                                                         escaped-c_0)))
68424                                                   (if (if (unsafe-fx>=
68425                                                            codepoint_0
68426                                                            10)
68427                                                         (unsafe-fx<
68428                                                          codepoint_0
68429                                                          121)
68430                                                         #f)
68431                                                     (let ((tbl_0
68432                                                            '#(10
68433                                                               0
68434                                                               0
68435                                                               11
68436                                                               0
68437                                                               0
68438                                                               0
68439                                                               0
68440                                                               0
68441                                                               0
68442                                                               0
68443                                                               0
68444                                                               0
68445                                                               0
68446                                                               0
68447                                                               0
68448                                                               0
68449                                                               0
68450                                                               0
68451                                                               0
68452                                                               0
68453                                                               0
68454                                                               0
68455                                                               0
68456                                                               1
68457                                                               0
68458                                                               0
68459                                                               0
68460                                                               0
68461                                                               1
68462                                                               0
68463                                                               0
68464                                                               0
68465                                                               0
68466                                                               0
68467                                                               0
68468                                                               0
68469                                                               0
68470                                                               12
68471                                                               12
68472                                                               12
68473                                                               12
68474                                                               12
68475                                                               12
68476                                                               12
68477                                                               12
68478                                                               0
68479                                                               0
68480                                                               0
68481                                                               0
68482                                                               0
68483                                                               0
68484                                                               0
68485                                                               0
68486                                                               0
68487                                                               0
68488                                                               0
68489                                                               0
68490                                                               0
68491                                                               0
68492                                                               0
68493                                                               0
68494                                                               0
68495                                                               0
68496                                                               0
68497                                                               0
68498                                                               0
68499                                                               0
68500                                                               0
68501                                                               0
68502                                                               0
68503                                                               0
68504                                                               0
68505                                                               0
68506                                                               0
68507                                                               15
68508                                                               0
68509                                                               0
68510                                                               0
68511                                                               0
68512                                                               0
68513                                                               0
68514                                                               1
68515                                                               0
68516                                                               0
68517                                                               0
68518                                                               0
68519                                                               2
68520                                                               3
68521                                                               0
68522                                                               0
68523                                                               9
68524                                                               7
68525                                                               0
68526                                                               0
68527                                                               0
68528                                                               0
68529                                                               0
68530                                                               0
68531                                                               0
68532                                                               5
68533                                                               0
68534                                                               0
68535                                                               0
68536                                                               8
68537                                                               0
68538                                                               4
68539                                                               14
68540                                                               6
68541                                                               0
68542                                                               13)))
68543                                                       (unsafe-vector*-ref
68544                                                        tbl_0
68545                                                        (unsafe-fx-
68546                                                         codepoint_0
68547                                                         10)))
68548                                                     0))
68549                                                 0)))
68550                                          (if (unsafe-fx< index_0 7)
68551                                            (if (unsafe-fx< index_0 3)
68552                                              (if (unsafe-fx< index_0 1)
68553                                                (unknown-error_0)
68554                                                (if (unsafe-fx< index_0 2)
68555                                                  (accum-string-add!
68556                                                   accum-str_0
68557                                                   escaped-c_0)
68558                                                  (accum-string-add!
68559                                                   accum-str_0
68560                                                   '#\x7)))
68561                                              (if (unsafe-fx< index_0 4)
68562                                                (accum-string-add!
68563                                                 accum-str_0
68564                                                 '#\x8)
68565                                                (if (unsafe-fx< index_0 5)
68566                                                  (accum-string-add!
68567                                                   accum-str_0
68568                                                   '#\x9)
68569                                                  (if (unsafe-fx< index_0 6)
68570                                                    (accum-string-add!
68571                                                     accum-str_0
68572                                                     '#\xa)
68573                                                    (accum-string-add!
68574                                                     accum-str_0
68575                                                     '#\xb)))))
68576                                            (if (unsafe-fx< index_0 11)
68577                                              (if (unsafe-fx< index_0 8)
68578                                                (accum-string-add!
68579                                                 accum-str_0
68580                                                 '#\xc)
68581                                                (if (unsafe-fx< index_0 9)
68582                                                  (accum-string-add!
68583                                                   accum-str_0
68584                                                   '#\xd)
68585                                                  (if (unsafe-fx< index_0 10)
68586                                                    (accum-string-add!
68587                                                     accum-str_0
68588                                                     '#\x1b)
68589                                                    (void))))
68590                                              (if (unsafe-fx< index_0 13)
68591                                                (if (unsafe-fx< index_0 12)
68592                                                  (let ((maybe-newline-c_0
68593                                                         (let ((c_1
68594                                                                (peek-char-or-special
68595                                                                 in3_0
68596                                                                 0
68597                                                                 'special
68598                                                                 source_0)))
68599                                                           (if (eq?
68600                                                                c_1
68601                                                                'special)
68602                                                             (special1.1
68603                                                              'special)
68604                                                             c_1))))
68605                                                    (begin
68606                                                      (if (eqv?
68607                                                           maybe-newline-c_0
68608                                                           '#\xa)
68609                                                        (begin-unsafe
68610                                                         (begin
68611                                                           (read-char in3_0)
68612                                                           (void)))
68613                                                        (void))
68614                                                      (void)))
68615                                                  (let ((pos_0
68616                                                         (begin-unsafe
68617                                                          (accum-string-pos
68618                                                           accum-str_0))))
68619                                                    (begin
68620                                                      (accum-string-add!
68621                                                       accum-str_0
68622                                                       escaped-c_0)
68623                                                      (let ((init-v_0
68624                                                             (digit->number
68625                                                              escaped-c_0)))
68626                                                        (let ((v_0
68627                                                               (read-digits.1
68628                                                                8
68629                                                                init-v_0
68630                                                                2
68631                                                                init-v_0
68632                                                                in3_0
68633                                                                config4_0
68634                                                                accum-str_0)))
68635                                                          (begin
68636                                                            (if (<= v_0 255)
68637                                                              (void)
68638                                                              (let ((temp31_0
68639                                                                     "escape sequence `~a~a` is out of range in ~a"))
68640                                                                (let ((temp33_0
68641                                                                       (accum-string-get!.1
68642                                                                        pos_0
68643                                                                        accum-str_0
68644                                                                        config4_0)))
68645                                                                  (let ((temp31_1
68646                                                                         temp31_0))
68647                                                                    (reader-error.1
68648                                                                     unsafe-undefined
68649                                                                     '#\x78
68650                                                                     #f
68651                                                                     unsafe-undefined
68652                                                                     in3_0
68653                                                                     config4_0
68654                                                                     temp31_1
68655                                                                     (list
68656                                                                      c_0
68657                                                                      temp33_0
68658                                                                      mode1_0))))))
68659                                                            (begin-unsafe
68660                                                             (set-accum-string-pos!
68661                                                              accum-str_0
68662                                                              pos_0))
68663                                                            (accum-string-add!
68664                                                             accum-str_0
68665                                                             (integer->char
68666                                                              v_0))))))))
68667                                                (if (unsafe-fx< index_0 14)
68668                                                  (let ((pos_0
68669                                                         (begin-unsafe
68670                                                          (accum-string-pos
68671                                                           accum-str_0))))
68672                                                    (let ((v_0
68673                                                           (read-digits.1
68674                                                            16
68675                                                            0
68676                                                            2
68677                                                            #f
68678                                                            in3_0
68679                                                            config4_0
68680                                                            accum-str_0)))
68681                                                      (begin
68682                                                        (if (integer? v_0)
68683                                                          (void)
68684                                                          (no-hex-digits
68685                                                           in3_0
68686                                                           config4_0
68687                                                           v_0
68688                                                           c_0
68689                                                           escaped-c_0))
68690                                                        (begin-unsafe
68691                                                         (set-accum-string-pos!
68692                                                          accum-str_0
68693                                                          pos_0))
68694                                                        (accum-string-add!
68695                                                         accum-str_0
68696                                                         (integer->char
68697                                                          v_0)))))
68698                                                  (if (unsafe-fx< index_0 15)
68699                                                    (begin
68700                                                      (if (eq? mode1_0 'string)
68701                                                        (void)
68702                                                        (unknown-error_0))
68703                                                      (let ((pos_0
68704                                                             (begin-unsafe
68705                                                              (accum-string-pos
68706                                                               accum-str_0))))
68707                                                        (let ((v_0
68708                                                               (read-digits.1
68709                                                                16
68710                                                                0
68711                                                                4
68712                                                                #f
68713                                                                in3_0
68714                                                                config4_0
68715                                                                accum-str_0)))
68716                                                          (begin
68717                                                            (if (integer? v_0)
68718                                                              (void)
68719                                                              (no-hex-digits
68720                                                               in3_0
68721                                                               config4_0
68722                                                               v_0
68723                                                               c_0
68724                                                               escaped-c_0))
68725                                                            (if (let ((or-part_0
68726                                                                       (<
68727                                                                        v_0
68728                                                                        55296)))
68729                                                                  (if or-part_0
68730                                                                    or-part_0
68731                                                                    (>
68732                                                                     v_0
68733                                                                     57343)))
68734                                                              (begin
68735                                                                (begin-unsafe
68736                                                                 (set-accum-string-pos!
68737                                                                  accum-str_0
68738                                                                  pos_0))
68739                                                                (accum-string-add!
68740                                                                 accum-str_0
68741                                                                 (integer->char
68742                                                                  v_0)))
68743                                                              (let ((next!_0
68744                                                                     (|#%name|
68745                                                                      next!
68746                                                                      (lambda ()
68747                                                                        (begin
68748                                                                          (let ((next-c_0
68749                                                                                 (read-char-or-special
68750                                                                                  in3_0
68751                                                                                  special1.1
68752                                                                                  source_0)))
68753                                                                            (begin
68754                                                                              (if (char?
68755                                                                                   next-c_0)
68756                                                                                (accum-string-add!
68757                                                                                 accum-str_0
68758                                                                                 next-c_0)
68759                                                                                (void))
68760                                                                              next-c_0)))))))
68761                                                                (let ((v2_0
68762                                                                       (let ((next-c_0
68763                                                                              (next!_0)))
68764                                                                         (if (char=?
68765                                                                              next-c_0
68766                                                                              '#\x5c)
68767                                                                           (let ((next-c_1
68768                                                                                  (next!_0)))
68769                                                                             (if (char=?
68770                                                                                  next-c_1
68771                                                                                  '#\x75)
68772                                                                               (let ((v2_0
68773                                                                                      (read-digits.1
68774                                                                                       16
68775                                                                                       0
68776                                                                                       4
68777                                                                                       #f
68778                                                                                       in3_0
68779                                                                                       config4_0
68780                                                                                       accum-str_0)))
68781                                                                                 (if (integer?
68782                                                                                      v2_0)
68783                                                                                   (if (>=
68784                                                                                        v2_0
68785                                                                                        56320)
68786                                                                                     (if (<=
68787                                                                                          v2_0
68788                                                                                          57343)
68789                                                                                       v2_0
68790                                                                                       #f)
68791                                                                                     #f)
68792                                                                                   v2_0))
68793                                                                               next-c_1))
68794                                                                           next-c_0))))
68795                                                                  (if (integer?
68796                                                                       v2_0)
68797                                                                    (let ((combined-v_0
68798                                                                           (let ((app_0
68799                                                                                  (arithmetic-shift
68800                                                                                   (-
68801                                                                                    v_0
68802                                                                                    55296)
68803                                                                                   10)))
68804                                                                             (+
68805                                                                              app_0
68806                                                                              (-
68807                                                                               v2_0
68808                                                                               56320)
68809                                                                              65536))))
68810                                                                      (if (>
68811                                                                           combined-v_0
68812                                                                           1114111)
68813                                                                        (let ((temp55_0
68814                                                                               "escape sequence `~au~a` is out of range in string"))
68815                                                                          (let ((temp57_0
68816                                                                                 (accum-string-get!.1
68817                                                                                  pos_0
68818                                                                                  accum-str_0
68819                                                                                  config4_0)))
68820                                                                            (let ((temp55_1
68821                                                                                   temp55_0))
68822                                                                              (reader-error.1
68823                                                                               unsafe-undefined
68824                                                                               '#\x78
68825                                                                               #f
68826                                                                               unsafe-undefined
68827                                                                               in3_0
68828                                                                               config4_0
68829                                                                               temp55_1
68830                                                                               (list
68831                                                                                c_0
68832                                                                                temp57_0)))))
68833                                                                        (begin
68834                                                                          (begin-unsafe
68835                                                                           (set-accum-string-pos!
68836                                                                            accum-str_0
68837                                                                            pos_0))
68838                                                                          (accum-string-add!
68839                                                                           accum-str_0
68840                                                                           (integer->char
68841                                                                            combined-v_0)))))
68842                                                                    (let ((temp64_0
68843                                                                           "bad or incomplete surrogate-style encoding at `~au~a`"))
68844                                                                      (let ((temp66_0
68845                                                                             (accum-string-get!.1
68846                                                                              pos_0
68847                                                                              accum-str_0
68848                                                                              config4_0)))
68849                                                                        (let ((temp64_1
68850                                                                               temp64_0))
68851                                                                          (reader-error.1
68852                                                                           unsafe-undefined
68853                                                                           v2_0
68854                                                                           #f
68855                                                                           unsafe-undefined
68856                                                                           in3_0
68857                                                                           config4_0
68858                                                                           temp64_1
68859                                                                           (list
68860                                                                            c_0
68861                                                                            temp66_0)))))))))))))
68862                                                    (begin
68863                                                      (if (eq? mode1_0 'string)
68864                                                        (void)
68865                                                        (unknown-error_0))
68866                                                      (let ((pos_0
68867                                                             (begin-unsafe
68868                                                              (accum-string-pos
68869                                                               accum-str_0))))
68870                                                        (let ((v_0
68871                                                               (read-digits.1
68872                                                                16
68873                                                                0
68874                                                                8
68875                                                                #f
68876                                                                in3_0
68877                                                                config4_0
68878                                                                accum-str_0)))
68879                                                          (begin
68880                                                            (if (integer? v_0)
68881                                                              (void)
68882                                                              (no-hex-digits
68883                                                               in3_0
68884                                                               config4_0
68885                                                               v_0
68886                                                               c_0
68887                                                               escaped-c_0))
68888                                                            (if (if (let ((or-part_0
68889                                                                           (<
68890                                                                            v_0
68891                                                                            55296)))
68892                                                                      (if or-part_0
68893                                                                        or-part_0
68894                                                                        (>
68895                                                                         v_0
68896                                                                         57343)))
68897                                                                  (<=
68898                                                                   v_0
68899                                                                   1114111)
68900                                                                  #f)
68901                                                              (begin
68902                                                                (begin-unsafe
68903                                                                 (set-accum-string-pos!
68904                                                                  accum-str_0
68905                                                                  pos_0))
68906                                                                (accum-string-add!
68907                                                                 accum-str_0
68908                                                                 (integer->char
68909                                                                  v_0)))
68910                                                              (let ((temp77_0
68911                                                                     "escape sequence `~aU~a` is out of range in string"))
68912                                                                (let ((temp79_0
68913                                                                       (accum-string-get!.1
68914                                                                        pos_0
68915                                                                        accum-str_0
68916                                                                        config4_0)))
68917                                                                  (let ((temp77_1
68918                                                                         temp77_0))
68919                                                                    (reader-error.1
68920                                                                     unsafe-undefined
68921                                                                     '#\x78
68922                                                                     #f
68923                                                                     unsafe-undefined
68924                                                                     in3_0
68925                                                                     config4_0
68926                                                                     temp77_1
68927                                                                     (list
68928                                                                      c_0
68929                                                                      temp79_0))))))))))))))))
68930                                        (loop_0)))))
68931                                (if (char=? '#\x22 c_0)
68932                                  null
68933                                  (begin
68934                                    (if (eq? mode1_0 '|byte string|)
68935                                      (if (byte? (char->integer c_0))
68936                                        (void)
68937                                        (let ((temp85_0
68938                                               "character `~a` is out of range in byte string"))
68939                                          (reader-error.1
68940                                           unsafe-undefined
68941                                           '#\x78
68942                                           #f
68943                                           unsafe-undefined
68944                                           in3_0
68945                                           config4_0
68946                                           temp85_0
68947                                           (list c_0))))
68948                                      (void))
68949                                    (accum-string-add! accum-str_0 c_0)
68950                                    (loop_0)))))))))))
68951                   (loop_0))
68952                  (let ((str_0
68953                         (if (eq? mode1_0 '|byte string|)
68954                           (accum-string-get-bytes!.1 0 accum-str_0 config4_0)
68955                           (accum-string-get!.1 0 accum-str_0 config4_0))))
68956                    (wrap str_0 in3_0 config4_0 str_0))))))
68957           (args (raise-binding-result-arity-error 3 args)))))))))
68958(define read-here-string
68959  (lambda (in_0 config_0)
68960    (let ((source_0
68961           (begin-unsafe
68962            (read-config/inner-source (read-config/outer-inner config_0)))))
68963      (call-with-values
68964       (lambda () (port-next-location in_0))
68965       (case-lambda
68966        ((open-end-line_0 open-end-col_0 open-end-pos_0)
68967         (let ((accum-str_0 (accum-string-init! config_0)))
68968           (let ((full-terminator_0
68969                  (cons
68970                   '#\xa
68971                   (letrec*
68972                    ((loop_0
68973                      (|#%name|
68974                       loop
68975                       (lambda ()
68976                         (begin
68977                           (let ((c_0
68978                                  (read-char-or-special
68979                                   in_0
68980                                   special1.1
68981                                   source_0)))
68982                             (if (eof-object? c_0)
68983                               (let ((temp94_0
68984                                      "found end-of-file after `#<<` and before a newline"))
68985                                 (reader-error.1
68986                                  unsafe-undefined
68987                                  c_0
68988                                  #f
68989                                  unsafe-undefined
68990                                  in_0
68991                                  config_0
68992                                  temp94_0
68993                                  (list)))
68994                               (if (not (char? c_0))
68995                                 (let ((temp98_0
68996                                        "found non-character while reading `#<<`"))
68997                                   (reader-error.1
68998                                    unsafe-undefined
68999                                    c_0
69000                                    #f
69001                                    unsafe-undefined
69002                                    in_0
69003                                    config_0
69004                                    temp98_0
69005                                    (list)))
69006                                 (if (char=? c_0 '#\xa)
69007                                   null
69008                                   (cons c_0 (loop_0)))))))))))
69009                    (loop_0)))))
69010             (begin
69011               (letrec*
69012                ((loop_0
69013                  (|#%name|
69014                   loop
69015                   (lambda (terminator_0 terminator-accum_0)
69016                     (begin
69017                       (let ((c_0
69018                              (read-char-or-special in_0 special1.1 source_0)))
69019                         (if (eof-object? c_0)
69020                           (if (null? terminator_0)
69021                             (void)
69022                             (let ((temp103_0
69023                                    "found end-of-file before terminating `~a`"))
69024                               (let ((temp104_0
69025                                      (list->string (cdr full-terminator_0))))
69026                                 (let ((temp103_1 temp103_0))
69027                                   (reader-error.1
69028                                    unsafe-undefined
69029                                    c_0
69030                                    open-end-pos_0
69031                                    unsafe-undefined
69032                                    in_0
69033                                    config_0
69034                                    temp103_1
69035                                    (list temp104_0))))))
69036                           (if (not (char? c_0))
69037                             (let ((temp108_0
69038                                    "found non-character while reading `#<<`"))
69039                               (reader-error.1
69040                                unsafe-undefined
69041                                c_0
69042                                #f
69043                                unsafe-undefined
69044                                in_0
69045                                config_0
69046                                temp108_0
69047                                (list)))
69048                             (if (if (pair? terminator_0)
69049                                   (char=? c_0 (car terminator_0))
69050                                   #f)
69051                               (let ((app_0 (cdr terminator_0)))
69052                                 (loop_0
69053                                  app_0
69054                                  (cons
69055                                   (car terminator_0)
69056                                   terminator-accum_0)))
69057                               (if (if (null? terminator_0)
69058                                     (char=? c_0 '#\xa)
69059                                     #f)
69060                                 (void)
69061                                 (begin
69062                                   (if (null? terminator-accum_0)
69063                                     (void)
69064                                     (begin
69065                                       (let ((lst_0
69066                                              (reverse$1 terminator-accum_0)))
69067                                         (begin
69068                                           (letrec*
69069                                            ((for-loop_0
69070                                              (|#%name|
69071                                               for-loop
69072                                               (lambda (lst_1)
69073                                                 (begin
69074                                                   (if (pair? lst_1)
69075                                                     (let ((c_1
69076                                                            (unsafe-car
69077                                                             lst_1)))
69078                                                       (let ((rest_0
69079                                                              (unsafe-cdr
69080                                                               lst_1)))
69081                                                         (begin
69082                                                           (accum-string-add!
69083                                                            accum-str_0
69084                                                            c_1)
69085                                                           (for-loop_0
69086                                                            rest_0))))
69087                                                     (values)))))))
69088                                            (for-loop_0 lst_0))))
69089                                       (void)))
69090                                   (if (char=? c_0 '#\xa)
69091                                     (let ((app_0 (cdr full-terminator_0)))
69092                                       (loop_0 app_0 (list '#\xa)))
69093                                     (begin
69094                                       (accum-string-add! accum-str_0 c_0)
69095                                       (loop_0
69096                                        full-terminator_0
69097                                        null))))))))))))))
69098                (loop_0 (cdr full-terminator_0) null))
69099               (let ((str_0 (accum-string-get!.1 0 accum-str_0 config_0)))
69100                 (wrap str_0 in_0 config_0 str_0))))))
69101        (args (raise-binding-result-arity-error 3 args)))))))
69102(define no-hex-digits
69103  (lambda (in_0 config_0 c_0 escaping-c_0 escaped-c_0)
69104    (let ((temp114_0 "no hex digit following `~a~a`"))
69105      (reader-error.1
69106       unsafe-undefined
69107       c_0
69108       #f
69109       unsafe-undefined
69110       in_0
69111       config_0
69112       temp114_0
69113       (list escaping-c_0 escaped-c_0)))))
69114(define read-character
69115  (lambda (in_0 config_0)
69116    (let ((source_0
69117           (begin-unsafe
69118            (read-config/inner-source (read-config/outer-inner config_0)))))
69119      (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
69120        (let ((char_0
69121               (if (eof-object? c_0)
69122                 (let ((temp4_0 "expected a character after `#\\`"))
69123                   (reader-error.1
69124                    unsafe-undefined
69125                    c_0
69126                    #f
69127                    unsafe-undefined
69128                    in_0
69129                    config_0
69130                    temp4_0
69131                    (list)))
69132                 (if (not (char? c_0))
69133                   (let ((temp8_0 "found non-character after `#\\`"))
69134                     (reader-error.1
69135                      unsafe-undefined
69136                      c_0
69137                      #f
69138                      unsafe-undefined
69139                      in_0
69140                      config_0
69141                      temp8_0
69142                      (list)))
69143                   (if (octal-digit? c_0)
69144                     (let ((source_1
69145                            (begin-unsafe
69146                             (read-config/inner-source
69147                              (read-config/outer-inner config_0)))))
69148                       (let ((c2_0
69149                              (let ((c_1
69150                                     (peek-char-or-special
69151                                      in_0
69152                                      0
69153                                      'special
69154                                      source_1)))
69155                                (if (eq? c_1 'special)
69156                                  (special1.1 'special)
69157                                  c_1))))
69158                         (if (if (char? c2_0) (octal-digit? c2_0) #f)
69159                           (begin
69160                             (begin-unsafe (begin (read-char in_0) (void)))
69161                             (let ((source_2
69162                                    (begin-unsafe
69163                                     (read-config/inner-source
69164                                      (read-config/outer-inner config_0)))))
69165                               (let ((c3_0
69166                                      (read-char-or-special
69167                                       in_0
69168                                       special1.1
69169                                       source_2)))
69170                                 (let ((v_0
69171                                        (if (if (char? c3_0)
69172                                              (octal-digit? c3_0)
69173                                              #f)
69174                                          (let ((app_0
69175                                                 (arithmetic-shift
69176                                                  (digit->number c_0)
69177                                                  6)))
69178                                            (let ((app_1
69179                                                   (arithmetic-shift
69180                                                    (digit->number c2_0)
69181                                                    3)))
69182                                              (+
69183                                               app_0
69184                                               app_1
69185                                               (digit->number c3_0))))
69186                                          #f)))
69187                                   (begin
69188                                     (if (if v_0 (<= v_0 255) #f)
69189                                       (void)
69190                                       (let ((temp12_0
69191                                              "bad character constant `#\\~a~a~a`"))
69192                                         (let ((temp15_0
69193                                                (if (char? c3_0) c3_0 "")))
69194                                           (let ((temp12_1 temp12_0))
69195                                             (reader-error.1
69196                                              unsafe-undefined
69197                                              c3_0
69198                                              #f
69199                                              unsafe-undefined
69200                                              in_0
69201                                              config_0
69202                                              temp12_1
69203                                              (list c_0 c2_0 temp15_0))))))
69204                                     (integer->char v_0))))))
69205                           c_0)))
69206                     (if (let ((or-part_0 (char=? c_0 '#\x75)))
69207                           (if or-part_0 or-part_0 (char=? c_0 '#\x55)))
69208                       (let ((accum-str_0 (accum-string-init! config_0)))
69209                         (let ((v_0
69210                                (let ((temp20_0 (if (char=? c_0 '#\x75) 4 8)))
69211                                  (read-digits.1
69212                                   16
69213                                   0
69214                                   temp20_0
69215                                   #f
69216                                   in_0
69217                                   config_0
69218                                   accum-str_0))))
69219                           (if (integer? v_0)
69220                             (if (if (let ((or-part_0 (< v_0 55296)))
69221                                       (if or-part_0 or-part_0 (> v_0 57343)))
69222                                   (<= v_0 1114111)
69223                                   #f)
69224                               (begin
69225                                 (begin-unsafe
69226                                  (set-read-config-state-accum-str!
69227                                   (begin-unsafe
69228                                    (read-config/inner-st
69229                                     (read-config/outer-inner config_0)))
69230                                   accum-str_0))
69231                                 (integer->char v_0))
69232                               (let ((temp23_0
69233                                      "bad character constant `#\\u~a`"))
69234                                 (let ((temp24_0
69235                                        (accum-string-get!.1
69236                                         0
69237                                         accum-str_0
69238                                         config_0)))
69239                                   (let ((temp23_1 temp23_0))
69240                                     (reader-error.1
69241                                      unsafe-undefined
69242                                      '#\x78
69243                                      #f
69244                                      unsafe-undefined
69245                                      in_0
69246                                      config_0
69247                                      temp23_1
69248                                      (list temp24_0))))))
69249                             (begin
69250                               (begin-unsafe
69251                                (set-read-config-state-accum-str!
69252                                 (begin-unsafe
69253                                  (read-config/inner-st
69254                                   (read-config/outer-inner config_0)))
69255                                 accum-str_0))
69256                               c_0))))
69257                       (if (char-alphabetic? c_0)
69258                         (let ((source_1
69259                                (begin-unsafe
69260                                 (read-config/inner-source
69261                                  (read-config/outer-inner config_0)))))
69262                           (let ((next-c_0
69263                                  (let ((c_1
69264                                         (peek-char-or-special
69265                                          in_0
69266                                          0
69267                                          'special
69268                                          source_1)))
69269                                    (if (eq? c_1 'special)
69270                                      (special1.1 'special)
69271                                      c_1))))
69272                             (if (if (char? next-c_0)
69273                                   (char-alphabetic? next-c_0)
69274                                   #f)
69275                               (let ((accum-str_0
69276                                      (accum-string-init! config_0)))
69277                                 (begin
69278                                   (accum-string-add! accum-str_0 c_0)
69279                                   (begin
69280                                     (accum-string-add! accum-str_0 next-c_0)
69281                                     (begin
69282                                       (begin-unsafe
69283                                        (begin (read-char in_0) (void)))
69284                                       (begin
69285                                         (letrec*
69286                                          ((loop_0
69287                                            (|#%name|
69288                                             loop
69289                                             (lambda ()
69290                                               (begin
69291                                                 (let ((source_2
69292                                                        (begin-unsafe
69293                                                         (read-config/inner-source
69294                                                          (read-config/outer-inner
69295                                                           config_0)))))
69296                                                   (let ((next-c_1
69297                                                          (let ((c_1
69298                                                                 (peek-char-or-special
69299                                                                  in_0
69300                                                                  0
69301                                                                  'special
69302                                                                  source_2)))
69303                                                            (if (eq?
69304                                                                 c_1
69305                                                                 'special)
69306                                                              (special1.1
69307                                                               'special)
69308                                                              c_1))))
69309                                                     (if (if (char? next-c_1)
69310                                                           (char-alphabetic?
69311                                                            next-c_1)
69312                                                           #f)
69313                                                       (begin
69314                                                         (accum-string-add!
69315                                                          accum-str_0
69316                                                          next-c_1)
69317                                                         (begin-unsafe
69318                                                          (begin
69319                                                            (read-char in_0)
69320                                                            (void)))
69321                                                         (loop_0))
69322                                                       (void)))))))))
69323                                          (loop_0))
69324                                         (let ((name_0
69325                                                (string-foldcase
69326                                                 (accum-string-get!.1
69327                                                  0
69328                                                  accum-str_0
69329                                                  config_0))))
69330                                           (if (if (equal? name_0 "nul")
69331                                                 #t
69332                                                 (equal? name_0 "null"))
69333                                             '#\x0
69334                                             (if (equal? name_0 "backspace")
69335                                               '#\x8
69336                                               (if (equal? name_0 "tab")
69337                                                 '#\x9
69338                                                 (if (if (equal?
69339                                                          name_0
69340                                                          "newline")
69341                                                       #t
69342                                                       (equal?
69343                                                        name_0
69344                                                        "linefeed"))
69345                                                   '#\xa
69346                                                   (if (equal? name_0 "vtab")
69347                                                     '#\xb
69348                                                     (if (equal? name_0 "page")
69349                                                       '#\xc
69350                                                       (if (equal?
69351                                                            name_0
69352                                                            "return")
69353                                                         '#\xd
69354                                                         (if (equal?
69355                                                              name_0
69356                                                              "space")
69357                                                           '#\x20
69358                                                           (if (equal?
69359                                                                name_0
69360                                                                "rubout")
69361                                                             '#\x7f
69362                                                             (let ((temp31_0
69363                                                                    "bad character constant `#\\~a`"))
69364                                                               (reader-error.1
69365                                                                unsafe-undefined
69366                                                                '#\x78
69367                                                                #f
69368                                                                unsafe-undefined
69369                                                                in_0
69370                                                                config_0
69371                                                                temp31_0
69372                                                                (list
69373                                                                 name_0))))))))))))))))))
69374                               c_0)))
69375                         c_0)))))))
69376          (wrap char_0 in_0 config_0 char_0))))))
69377(define read-quote
69378  (lambda (read-one_0 sym_0 desc_0 c_0 in_0 config_0)
69379    (let ((wrapped-sym_0 (wrap sym_0 in_0 config_0 c_0)))
69380      (call-with-values
69381       (lambda () (port-next-location in_0))
69382       (case-lambda
69383        ((end-line_0 end-col_0 end-pos_0)
69384         (let ((e_0 (|#%app| read-one_0 #f in_0 config_0)))
69385           (begin
69386             (if (eof-object? e_0)
69387               (let ((temp5_0 "expected an element for ~a, found end-of-file"))
69388                 (reader-error.1
69389                  unsafe-undefined
69390                  e_0
69391                  end-pos_0
69392                  unsafe-undefined
69393                  in_0
69394                  config_0
69395                  temp5_0
69396                  (list desc_0)))
69397               (void))
69398             (wrap (list wrapped-sym_0 e_0) in_0 config_0 #f))))
69399        (args (raise-binding-result-arity-error 3 args)))))))
69400(define read-delimited-constant
69401  (lambda (init-c_0 can-match?_0 chars_0 val_0 in_0 config_0)
69402    (let ((accum-str_0 (accum-string-init! config_0)))
69403      (begin
69404        (accum-string-add! accum-str_0 init-c_0)
69405        (letrec*
69406         ((loop_0
69407           (|#%name|
69408            loop
69409            (lambda (chars_1)
69410              (begin
69411                (let ((source_0
69412                       (begin-unsafe
69413                        (read-config/inner-source
69414                         (read-config/outer-inner config_0)))))
69415                  (let ((c_0
69416                         (let ((c_0
69417                                (peek-char-or-special
69418                                 in_0
69419                                 0
69420                                 'special
69421                                 source_0)))
69422                           (if (eq? c_0 'special) (special1.1 'special) c_0))))
69423                    (if (begin-unsafe
69424                         (readtable-char-delimiter?
69425                          (begin-unsafe
69426                           (read-config/inner-readtable
69427                            (read-config/outer-inner config_0)))
69428                          c_0
69429                          config_0))
69430                      (if (null? chars_1)
69431                        (void)
69432                        (let ((temp4_0 "bad syntax `#~a`"))
69433                          (let ((temp5_0
69434                                 (accum-string-get!.1 0 accum-str_0 config_0)))
69435                            (let ((temp4_1 temp4_0))
69436                              (reader-error.1
69437                               unsafe-undefined
69438                               c_0
69439                               #f
69440                               unsafe-undefined
69441                               in_0
69442                               config_0
69443                               temp4_1
69444                               (list temp5_0))))))
69445                      (if (null? chars_1)
69446                        (begin
69447                          (accum-string-add! accum-str_0 c_0)
69448                          (let ((temp10_0 "bad syntax `#~a`"))
69449                            (let ((temp11_0
69450                                   (accum-string-get!.1
69451                                    0
69452                                    accum-str_0
69453                                    config_0)))
69454                              (let ((temp10_1 temp10_0))
69455                                (reader-error.1
69456                                 unsafe-undefined
69457                                 '#\x78
69458                                 #f
69459                                 unsafe-undefined
69460                                 in_0
69461                                 config_0
69462                                 temp10_1
69463                                 (list temp11_0))))))
69464                        (if (if can-match?_0 (char=? c_0 (car chars_1)) #f)
69465                          (begin
69466                            (begin-unsafe (begin (read-char in_0) (void)))
69467                            (accum-string-add! accum-str_0 c_0)
69468                            (loop_0 (cdr chars_1)))
69469                          (begin
69470                            (begin-unsafe
69471                             (begin
69472                               (read-char-or-special
69473                                in_0
69474                                special1.1
69475                                (begin-unsafe
69476                                 (read-config/inner-source
69477                                  (read-config/outer-inner config_0))))
69478                               (void)))
69479                            (accum-string-add! accum-str_0 c_0)
69480                            (let ((temp16_0 "bad syntax `#~a`"))
69481                              (let ((temp17_0
69482                                     (accum-string-get!.1
69483                                      0
69484                                      accum-str_0
69485                                      config_0)))
69486                                (let ((temp16_1 temp16_0))
69487                                  (reader-error.1
69488                                   unsafe-undefined
69489                                   '#\x78
69490                                   #f
69491                                   unsafe-undefined
69492                                   in_0
69493                                   config_0
69494                                   temp16_1
69495                                   (list temp17_0))))))))))))))))
69496         (loop_0 chars_0))
69497        (wrap
69498         val_0
69499         in_0
69500         config_0
69501         (accum-string-get!.1 0 accum-str_0 config_0))))))
69502(define read-box
69503  (lambda (read-one_0 dispatch-c_0 in_0 config_0)
69504    (begin
69505      (if (check-parameter 1/read-accept-box config_0)
69506        (void)
69507        (let ((temp3_0 "`~a&` forms not enabled"))
69508          (reader-error.1
69509           unsafe-undefined
69510           '#\x78
69511           #f
69512           unsafe-undefined
69513           in_0
69514           config_0
69515           temp3_0
69516           (list dispatch-c_0))))
69517      (call-with-values
69518       (lambda () (port-next-location in_0))
69519       (case-lambda
69520        ((open-end-line_0 open-end-col_0 open-end-pos_0)
69521         (let ((e_0 (|#%app| read-one_0 #f in_0 (next-readtable config_0))))
69522           (begin
69523             (if (eof-object? e_0)
69524               (let ((temp9_0
69525                      "expected an element for `~a&` box, found end-of-file"))
69526                 (reader-error.1
69527                  unsafe-undefined
69528                  e_0
69529                  open-end-pos_0
69530                  unsafe-undefined
69531                  in_0
69532                  config_0
69533                  temp9_0
69534                  (list dispatch-c_0)))
69535               (void))
69536             (wrap
69537              (if (begin-unsafe
69538                   (read-config/inner-for-syntax?
69539                    (read-config/outer-inner config_0)))
69540                (box-immutable e_0)
69541                (box e_0))
69542              in_0
69543              config_0
69544              #f))))
69545        (args (raise-binding-result-arity-error 3 args)))))))
69546(define read-regexp
69547  (lambda (mode-c_0 accum-str_0 in_0 config_0)
69548    (let ((source_0
69549           (begin-unsafe
69550            (read-config/inner-source (read-config/outer-inner config_0)))))
69551      (let ((c3_0 (read-char-or-special in_0 special1.1 source_0)))
69552        (let ((no-wrap-config_0 (disable-wrapping config_0)))
69553          (let ((rx_0
69554                 (if (eqv? c3_0 '#\x22)
69555                   (begin
69556                     (begin-unsafe
69557                      (set-read-config-state-accum-str!
69558                       (begin-unsafe
69559                        (read-config/inner-st
69560                         (read-config/outer-inner config_0)))
69561                       accum-str_0))
69562                     (let ((str_0
69563                            (read-string.1 'string in_0 no-wrap-config_0)))
69564                       (catch-and-reraise-as-reader/proc
69565                        in_0
69566                        config_0
69567                        (lambda ()
69568                          (|#%app|
69569                           (if (char=? mode-c_0 '#\x72) regexp pregexp)
69570                           str_0)))))
69571                   (if (eqv? c3_0 '#\x23)
69572                     (begin
69573                       (accum-string-add! accum-str_0 c3_0)
69574                       (let ((source_1
69575                              (begin-unsafe
69576                               (read-config/inner-source
69577                                (read-config/outer-inner config_0)))))
69578                         (let ((c4_0
69579                                (read-char-or-special
69580                                 in_0
69581                                 special1.1
69582                                 source_1)))
69583                           (if (eqv? c4_0 '#\x22)
69584                             (begin
69585                               (begin-unsafe
69586                                (set-read-config-state-accum-str!
69587                                 (begin-unsafe
69588                                  (read-config/inner-st
69589                                   (read-config/outer-inner config_0)))
69590                                 accum-str_0))
69591                               (let ((bstr_0
69592                                      (read-string.1
69593                                       '|byte string|
69594                                       in_0
69595                                       no-wrap-config_0)))
69596                                 (catch-and-reraise-as-reader/proc
69597                                  in_0
69598                                  config_0
69599                                  (lambda ()
69600                                    (|#%app|
69601                                     (if (char=? mode-c_0 '#\x72)
69602                                       byte-regexp
69603                                       byte-pregexp)
69604                                     bstr_0)))))
69605                             (let ((temp9_0 "expected `\"` after `~a`"))
69606                               (let ((temp10_0
69607                                      (accum-string-get!.1
69608                                       0
69609                                       accum-str_0
69610                                       config_0)))
69611                                 (let ((temp9_1 temp9_0))
69612                                   (reader-error.1
69613                                    unsafe-undefined
69614                                    c4_0
69615                                    #f
69616                                    unsafe-undefined
69617                                    in_0
69618                                    config_0
69619                                    temp9_1
69620                                    (list temp10_0)))))))))
69621                     (let ((temp16_0 "expected `\"` or `#` after `~a`"))
69622                       (let ((temp17_0
69623                              (accum-string-get!.1 0 accum-str_0 config_0)))
69624                         (let ((temp16_1 temp16_0))
69625                           (reader-error.1
69626                            unsafe-undefined
69627                            c3_0
69628                            #f
69629                            unsafe-undefined
69630                            in_0
69631                            config_0
69632                            temp16_1
69633                            (list temp17_0)))))))))
69634            (wrap rx_0 in_0 config_0 #f)))))))
69635(define read-extension-reader
69636  (lambda (read-one_0 read-recur_0 dispatch-c_0 in_0 config_0)
69637    (let ((extend-str_0
69638           (read-extension-prefix
69639            (cons dispatch-c_0 '(#\x72 #\x65))
69640            '(#\x61 #\x64 #\x65 #\x72)
69641            in_0
69642            config_0)))
69643      (begin
69644        (if (check-parameter 1/read-accept-reader config_0)
69645          (void)
69646          (let ((temp48_0 "`~a` not enabled"))
69647            (reader-error.1
69648             unsafe-undefined
69649             '#\x78
69650             #f
69651             unsafe-undefined
69652             in_0
69653             config_0
69654             temp48_0
69655             (list extend-str_0))))
69656        (let ((mod-path-wrapped_0
69657               (|#%app| read-one_0 #f in_0 (next-readtable config_0))))
69658          (begin
69659            (if (eof-object? mod-path-wrapped_0)
69660              (let ((temp53_0
69661                     "expected a datum after `~a`, found end-of-file"))
69662                (reader-error.1
69663                 unsafe-undefined
69664                 mod-path-wrapped_0
69665                 #f
69666                 unsafe-undefined
69667                 in_0
69668                 config_0
69669                 temp53_0
69670                 (list extend-str_0)))
69671              (void))
69672            (let ((temp41_0
69673                   (|#%app|
69674                    (begin-unsafe
69675                     (read-config/inner-coerce
69676                      (read-config/outer-inner config_0)))
69677                    #f
69678                    mod-path-wrapped_0
69679                    #f)))
69680              (read-extension.1
69681               #f
69682               mod-path-wrapped_0
69683               #f
69684               '|#reader|
69685               temp41_0
69686               read-recur_0
69687               in_0
69688               config_0))))))))
69689(define read-extension-lang.1
69690  (|#%name|
69691   read-extension-lang
69692   (lambda (get-info?1_0 read-recur3_0 dispatch-c4_0 in5_0 config6_0)
69693     (begin
69694       (let ((extend-str_0
69695              (read-extension-prefix
69696               (cons dispatch-c4_0 '(#\x6c))
69697               '(#\x61 #\x6e #\x67)
69698               in5_0
69699               config6_0)))
69700         (let ((source_0
69701                (begin-unsafe
69702                 (read-config/inner-source
69703                  (read-config/outer-inner config6_0)))))
69704           (let ((c_0 (read-char-or-special in5_0 special1.1 source_0)))
69705             (begin
69706               (if (eqv? c_0 '#\x20)
69707                 (void)
69708                 (let ((temp64_0 "expected a single space after `~a`"))
69709                   (reader-error.1
69710                    unsafe-undefined
69711                    '#\x78
69712                    #f
69713                    unsafe-undefined
69714                    in5_0
69715                    config6_0
69716                    temp64_0
69717                    (list extend-str_0))))
69718               (read-lang.1
69719                get-info?1_0
69720                #f
69721                #t
69722                '|#lang|
69723                extend-str_0
69724                read-recur3_0
69725                in5_0
69726                config6_0)))))))))
69727(define |read-extension-#!.1|
69728  (|#%name|
69729   |read-extension-#!|
69730   (lambda (get-info?8_0 read-recur10_0 dispatch-c11_0 in12_0 config13_0)
69731     (begin
69732       (let ((source_0
69733              (begin-unsafe
69734               (read-config/inner-source
69735                (read-config/outer-inner config13_0)))))
69736         (let ((c_0 (read-char-or-special in12_0 special1.1 source_0)))
69737           (begin
69738             (if (if (char? c_0) (char-lang-nonsep? c_0) #f)
69739               (void)
69740               (let ((temp75_0
69741                      (if (char? c_0)
69742                        (string dispatch-c11_0 '#\x21 c_0)
69743                        (string dispatch-c11_0 '#\x21))))
69744                 (bad-syntax-error.1 '#\x78 in12_0 config13_0 temp75_0)))
69745             (let ((temp66_0 (string dispatch-c11_0 '#\x21)))
69746               (read-lang.1
69747                get-info?8_0
69748                c_0
69749                #f
69750                '|#!|
69751                temp66_0
69752                read-recur10_0
69753                in12_0
69754                config13_0)))))))))
69755(define read-lang.1
69756  (|#%name|
69757   read-lang
69758   (lambda (get-info?17_0
69759            init-c15_0
69760            one-space?16_0
69761            who18_0
69762            extend-str23_0
69763            read-recur24_0
69764            in25_0
69765            config26_0)
69766     (begin
69767       (begin
69768         (if (if (check-parameter 1/read-accept-reader config26_0)
69769               (check-parameter 1/read-accept-lang config26_0)
69770               #f)
69771           (void)
69772           (let ((temp85_0 "`~a` not enabled\n  possible reason: ~a"))
69773             (let ((temp87_0
69774                    (string-append
69775                     "not allowed again inside a module that already starts `#lang`,"
69776                     " or not enabled for interactive evaluation")))
69777               (let ((temp85_1 temp85_0))
69778                 (reader-error.1
69779                  unsafe-undefined
69780                  '#\x78
69781                  #f
69782                  unsafe-undefined
69783                  in25_0
69784                  config26_0
69785                  temp85_1
69786                  (list extend-str23_0 temp87_0))))))
69787         (call-with-values
69788          (lambda () (port-next-location in25_0))
69789          (case-lambda
69790           ((line_0 col_0 pos_0)
69791            (let ((accum-str_0 (accum-string-init! config26_0)))
69792              (begin
69793                (if init-c15_0
69794                  (accum-string-add! accum-str_0 init-c15_0)
69795                  (void))
69796                (begin
69797                  (letrec*
69798                   ((loop_0
69799                     (|#%name|
69800                      loop
69801                      (lambda ()
69802                        (begin
69803                          (let ((source_0
69804                                 (begin-unsafe
69805                                  (read-config/inner-source
69806                                   (read-config/outer-inner config26_0)))))
69807                            (let ((c_0
69808                                   (let ((c_0
69809                                          (peek-char-or-special
69810                                           in25_0
69811                                           0
69812                                           'special
69813                                           source_0)))
69814                                     (if (eq? c_0 'special)
69815                                       (special1.1 'special)
69816                                       c_0))))
69817                              (if (eof-object? c_0)
69818                                (void)
69819                                (if (not (char? c_0))
69820                                  (begin
69821                                    (begin-unsafe
69822                                     (begin
69823                                       (read-char-or-special
69824                                        in25_0
69825                                        special1.1
69826                                        (begin-unsafe
69827                                         (read-config/inner-source
69828                                          (read-config/outer-inner
69829                                           config26_0))))
69830                                       (void)))
69831                                    (let ((temp91_0
69832                                           "found non-character while reading `#~a`"))
69833                                      (reader-error.1
69834                                       unsafe-undefined
69835                                       c_0
69836                                       #f
69837                                       unsafe-undefined
69838                                       in25_0
69839                                       config26_0
69840                                       temp91_0
69841                                       (list extend-str23_0))))
69842                                  (if (if (char-whitespace? c_0)
69843                                        (positive?
69844                                         (begin-unsafe
69845                                          (accum-string-pos accum-str_0)))
69846                                        #f)
69847                                    (void)
69848                                    (if (if one-space?16_0
69849                                          (char=? c_0 '#\x20)
69850                                          #f)
69851                                      (let ((temp95_0
69852                                             "expected a single space after `~a`"))
69853                                        (reader-error.1
69854                                         unsafe-undefined
69855                                         '#\x78
69856                                         #f
69857                                         unsafe-undefined
69858                                         in25_0
69859                                         config26_0
69860                                         temp95_0
69861                                         (list extend-str23_0)))
69862                                      (if (let ((or-part_0
69863                                                 (char-lang-nonsep? c_0)))
69864                                            (if or-part_0
69865                                              or-part_0
69866                                              (char=? '#\x2f c_0)))
69867                                        (begin
69868                                          (begin-unsafe
69869                                           (begin (read-char in25_0) (void)))
69870                                          (accum-string-add! accum-str_0 c_0)
69871                                          (loop_0))
69872                                        (begin
69873                                          (begin-unsafe
69874                                           (begin (read-char in25_0) (void)))
69875                                          (let ((temp99_0
69876                                                 (string-append
69877                                                  "expected only alphanumeric, `-`, `+`, `_`, or `/`"
69878                                                  " characters for `~a`, found `~a`")))
69879                                            (reader-error.1
69880                                             unsafe-undefined
69881                                             '#\x78
69882                                             #f
69883                                             unsafe-undefined
69884                                             in25_0
69885                                             config26_0
69886                                             temp99_0
69887                                             (list
69888                                              extend-str23_0
69889                                              c_0))))))))))))))))
69890                   (loop_0))
69891                  (let ((lang-str_0
69892                         (accum-string-get!.1 0 accum-str_0 config26_0)))
69893                    (begin
69894                      (if (equal? lang-str_0 "")
69895                        (let ((temp106_0
69896                               "expected a non-empty sequence of alphanumeric, `-`, `+`, `_`, or `/` after `~a~a`"))
69897                          (let ((temp108_0 (if one-space?16_0 " " "")))
69898                            (let ((temp106_1 temp106_0))
69899                              (reader-error.1
69900                               unsafe-undefined
69901                               '#\x78
69902                               #f
69903                               unsafe-undefined
69904                               in25_0
69905                               config26_0
69906                               temp106_1
69907                               (list extend-str23_0 temp108_0)))))
69908                        (void))
69909                      (begin
69910                        (if (char=? '#\x2f (string-ref lang-str_0 0))
69911                          (let ((temp111_0
69912                                 "expected a name that does not start `/` after `~a`"))
69913                            (reader-error.1
69914                             unsafe-undefined
69915                             '#\x78
69916                             #f
69917                             unsafe-undefined
69918                             in25_0
69919                             config26_0
69920                             temp111_0
69921                             (list extend-str23_0)))
69922                          (void))
69923                        (begin
69924                          (if (char=?
69925                               '#\x2f
69926                               (string-ref
69927                                lang-str_0
69928                                (sub1 (string-length lang-str_0))))
69929                            (let ((temp115_0
69930                                   "expected a name that does not end `/` after `~a`"))
69931                              (reader-error.1
69932                               unsafe-undefined
69933                               '#\x78
69934                               #f
69935                               unsafe-undefined
69936                               in25_0
69937                               config26_0
69938                               temp115_0
69939                               (list extend-str23_0)))
69940                            (void))
69941                          (let ((submod-path_0
69942                                 (list*
69943                                  'submod
69944                                  (string->symbol lang-str_0)
69945                                  '(reader))))
69946                            (let ((reader-path_0
69947                                   (string->symbol
69948                                    (string-append
69949                                     lang-str_0
69950                                     "/lang/reader"))))
69951                              (let ((temp80_0
69952                                     (reading-at
69953                                      config26_0
69954                                      line_0
69955                                      col_0
69956                                      pos_0)))
69957                                (read-extension.1
69958                                 get-info?17_0
69959                                 unsafe-undefined
69960                                 submod-path_0
69961                                 who18_0
69962                                 reader-path_0
69963                                 read-recur24_0
69964                                 in25_0
69965                                 temp80_0))))))))))))
69966           (args (raise-binding-result-arity-error 3 args)))))))))
69967(define char-lang-nonsep?
69968  (lambda (c_0)
69969    (if (< (char->integer c_0) 128)
69970      (let ((or-part_0 (char-alphabetic? c_0)))
69971        (if or-part_0
69972          or-part_0
69973          (let ((or-part_1 (char-numeric? c_0)))
69974            (if or-part_1
69975              or-part_1
69976              (let ((or-part_2 (char=? '#\x2d c_0)))
69977                (if or-part_2
69978                  or-part_2
69979                  (let ((or-part_3 (char=? '#\x2b c_0)))
69980                    (if or-part_3 or-part_3 (char=? '#\x5f c_0)))))))))
69981      #f)))
69982(define read-extension-prefix
69983  (lambda (already_0 wanted_0 in_0 config_0)
69984    (let ((accum-str_0 (accum-string-init! config_0)))
69985      (begin
69986        (begin
69987          (letrec*
69988           ((for-loop_0
69989             (|#%name|
69990              for-loop
69991              (lambda (lst_0)
69992                (begin
69993                  (if (pair? lst_0)
69994                    (let ((c_0 (unsafe-car lst_0)))
69995                      (let ((rest_0 (unsafe-cdr lst_0)))
69996                        (begin
69997                          (accum-string-add! accum-str_0 c_0)
69998                          (for-loop_0 rest_0))))
69999                    (values)))))))
70000           (for-loop_0 already_0)))
70001        (void)
70002        (letrec*
70003         ((loop_0
70004           (|#%name|
70005            loop
70006            (lambda (wanted_1)
70007              (begin
70008                (if (null? wanted_1)
70009                  (void)
70010                  (let ((source_0
70011                         (begin-unsafe
70012                          (read-config/inner-source
70013                           (read-config/outer-inner config_0)))))
70014                    (let ((c_0
70015                           (read-char-or-special in_0 special1.1 source_0)))
70016                      (begin
70017                        (if (char? c_0)
70018                          (accum-string-add! accum-str_0 c_0)
70019                          (void))
70020                        (if (eqv? c_0 (car wanted_1))
70021                          (void)
70022                          (let ((temp121_0
70023                                 (accum-string-get!.1 0 accum-str_0 config_0)))
70024                            (bad-syntax-error.1 c_0 in_0 config_0 temp121_0)))
70025                        (loop_0 (cdr wanted_1)))))))))))
70026         (loop_0 wanted_0))
70027        (accum-string-get!.1 0 accum-str_0 config_0)))))
70028(define read-extension.1
70029  (|#%name|
70030   read-extension
70031   (lambda (get-info?30_0
70032            mod-path-wrapped29_0
70033            try-first-mod-path28_0
70034            who31_0
70035            mod-path-datum36_0
70036            read-recur37_0
70037            in38_0
70038            config39_0)
70039     (begin
70040       (let ((mod-path-wrapped_0
70041              (if (eq? mod-path-wrapped29_0 unsafe-undefined)
70042                (|#%app|
70043                 (begin-unsafe
70044                  (read-config/inner-coerce
70045                   (read-config/outer-inner config39_0)))
70046                 #t
70047                 mod-path-datum36_0
70048                 (port+config->srcloc.1 #f in38_0 config39_0))
70049                mod-path-wrapped29_0)))
70050         (begin
70051           (force-parameters! config39_0)
70052           (let ((guard_0 (1/current-reader-guard)))
70053             (let ((mod-path_0
70054                    (let ((or-part_0
70055                           (if try-first-mod-path28_0
70056                             (let ((mod-path_0
70057                                    (|#%app| guard_0 try-first-mod-path28_0)))
70058                               (if (|#%app|
70059                                    (begin-unsafe
70060                                     (read-config/inner-module-declared?
70061                                      (read-config/outer-inner config39_0)))
70062                                    try-first-mod-path28_0)
70063                                 mod-path_0
70064                                 #f))
70065                             #f)))
70066                      (if or-part_0
70067                        or-part_0
70068                        (|#%app| guard_0 mod-path-datum36_0)))))
70069               (|#%app|
70070                (begin-unsafe
70071                 (read-config/inner-call-with-root-namespace
70072                  (read-config/outer-inner config39_0)))
70073                (lambda ()
70074                  (let ((for-syntax?_0
70075                         (begin-unsafe
70076                          (read-config/inner-for-syntax?
70077                           (read-config/outer-inner config39_0)))))
70078                    (let ((dynamic-require_0
70079                           (begin-unsafe
70080                            (read-config/inner-dynamic-require
70081                             (read-config/outer-inner config39_0)))))
70082                      (let ((no-value_0 (gensym)))
70083                        (let ((extension_0
70084                               (if get-info?30_0
70085                                 (|#%app|
70086                                  dynamic-require_0
70087                                  mod-path_0
70088                                  'get-info
70089                                  (lambda () no-value_0))
70090                                 (|#%app|
70091                                  dynamic-require_0
70092                                  mod-path_0
70093                                  (if for-syntax?_0 'read-syntax 'read)))))
70094                          (if (eq? extension_0 no-value_0)
70095                            #f
70096                            (let ((result-v_0
70097                                   (if (if for-syntax?_0
70098                                         (not get-info?30_0)
70099                                         #f)
70100                                     (if (procedure-arity-includes?
70101                                          extension_0
70102                                          6)
70103                                       (with-continuation-mark*
70104                                        push-authentic
70105                                        current-read-config
70106                                        config39_0
70107                                        (|#%app|
70108                                         extension_0
70109                                         (begin-unsafe
70110                                          (read-config/inner-source
70111                                           (read-config/outer-inner
70112                                            config39_0)))
70113                                         in38_0
70114                                         mod-path-wrapped_0
70115                                         (begin-unsafe
70116                                          (read-config/outer-line config39_0))
70117                                         (begin-unsafe
70118                                          (read-config/outer-col config39_0))
70119                                         (begin-unsafe
70120                                          (read-config/outer-pos config39_0))))
70121                                       (if (procedure-arity-includes?
70122                                            extension_0
70123                                            2)
70124                                         (with-continuation-mark*
70125                                          push-authentic
70126                                          current-read-config
70127                                          config39_0
70128                                          (|#%app|
70129                                           extension_0
70130                                           (begin-unsafe
70131                                            (read-config/inner-source
70132                                             (read-config/outer-inner
70133                                              config39_0)))
70134                                           in38_0))
70135                                         (raise-argument-error
70136                                          who31_0
70137                                          "(or/c (procedure-arity-includes?/c 2) (procedure-arity-includes?/c 6))"
70138                                          extension_0)))
70139                                     (if (procedure-arity-includes?
70140                                          extension_0
70141                                          5)
70142                                       (with-continuation-mark*
70143                                        push-authentic
70144                                        current-read-config
70145                                        config39_0
70146                                        (|#%app|
70147                                         extension_0
70148                                         in38_0
70149                                         mod-path-wrapped_0
70150                                         (begin-unsafe
70151                                          (read-config/outer-line config39_0))
70152                                         (begin-unsafe
70153                                          (read-config/outer-col config39_0))
70154                                         (begin-unsafe
70155                                          (read-config/outer-pos config39_0))))
70156                                       (if get-info?30_0
70157                                         (raise-argument-error
70158                                          who31_0
70159                                          "(procedure-arity-includes?/c 5)"
70160                                          extension_0)
70161                                         (if (procedure-arity-includes?
70162                                              extension_0
70163                                              1)
70164                                           (with-continuation-mark*
70165                                            push-authentic
70166                                            current-read-config
70167                                            config39_0
70168                                            (|#%app| extension_0 in38_0))
70169                                           (raise-argument-error
70170                                            who31_0
70171                                            "(or/c (procedure-arity-includes?/c 1) (procedure-arity-includes?/c 5))"
70172                                            extension_0)))))))
70173                              (if get-info?30_0
70174                                (begin
70175                                  (if (if (procedure? result-v_0)
70176                                        (procedure-arity-includes?
70177                                         result-v_0
70178                                         2)
70179                                        #f)
70180                                    (void)
70181                                    (raise-result-error
70182                                     'read-language
70183                                     "(procedure-arity-includes?/c 2)"
70184                                     result-v_0))
70185                                  result-v_0)
70186                                (if (1/special-comment? result-v_0)
70187                                  (|#%app| read-recur37_0 #f in38_0 config39_0)
70188                                  (coerce
70189                                   result-v_0
70190                                   in38_0
70191                                   config39_0)))))))))))))))))))
70192(define read-language/get-info
70193  (lambda (read-one_0 in_0 config_0 fail-k_0)
70194    (let ((c_0
70195           (read-char/skip-whitespace-and-comments
70196            #f
70197            read-one_0
70198            in_0
70199            config_0)))
70200      (call-with-values
70201       (lambda () (port-next-location* in_0 c_0))
70202       (case-lambda
70203        ((line_0 col_0 pos_0)
70204         (let ((l-config_0
70205                (override-parameter
70206                 1/read-accept-reader
70207                 (reading-at config_0 line_0 col_0 pos_0)
70208                 #t)))
70209           (if (not (eqv? c_0 '#\x23))
70210             (if fail-k_0
70211               (|#%app| fail-k_0)
70212               (lang-error in_0 l-config_0 "" c_0))
70213             (let ((source_0
70214                    (begin-unsafe
70215                     (read-config/inner-source
70216                      (read-config/outer-inner l-config_0)))))
70217               (let ((c2_0 (read-char-or-special in_0 special1.1 source_0)))
70218                 (if (eqv? c2_0 '#\x6c)
70219                   (read-extension-lang.1 #t read-one_0 c_0 in_0 l-config_0)
70220                   (if (eqv? c2_0 '#\x21)
70221                     (|read-extension-#!.1| #t read-one_0 c_0 in_0 l-config_0)
70222                     (if fail-k_0
70223                       (|#%app| fail-k_0)
70224                       (lang-error in_0 l-config_0 (string c_0) c2_0)))))))))
70225        (args (raise-binding-result-arity-error 3 args)))))))
70226(define lang-error
70227  (lambda (in_0 config_0 prefix_0 c_0)
70228    (let ((add-prefix_0
70229           (|#%name|
70230            add-prefix
70231            (lambda (s_0)
70232              (begin
70233                (if (string=? prefix_0 "")
70234                  (format "`~a` followed by ~a" prefix_0 s_0)
70235                  s_0))))))
70236      (let ((temp15_0
70237             (string-append
70238              "expected (after whitespace and comments) `#lang ` or `#!` followed"
70239              " immediately by a language name, found ~a")))
70240        (let ((temp16_0
70241               (if (eof-object? c_0)
70242                 (add-prefix_0 "end-of-file")
70243                 (if (not (char? c_0))
70244                   (add-prefix_0 "non-character")
70245                   (format "`~a~a`" prefix_0 c_0)))))
70246          (let ((temp15_1 temp15_0))
70247            (reader-error.1
70248             unsafe-undefined
70249             c_0
70250             #f
70251             'read-language
70252             in_0
70253             config_0
70254             temp15_1
70255             (list temp16_0))))))))
70256(define read.1
70257  (|#%name|
70258   read
70259   (lambda (call-with-root-namespace10_0
70260            coerce13_0
70261            coerce-key14_0
70262            dynamic-require11_0
70263            for-syntax?8_0
70264            init-c2_0
70265            keep-comment?15_0
70266            local-graph?6_0
70267            module-declared?12_0
70268            next-readtable3_0
70269            read-compiled9_0
70270            readtable4_0
70271            recursive?5_0
70272            source7_0
70273            wrap1_0
70274            in31_0)
70275     (begin
70276       (let ((next-readtable_0
70277              (if (eq? next-readtable3_0 unsafe-undefined)
70278                (1/current-readtable)
70279                next-readtable3_0)))
70280         (let ((readtable_0
70281                (if (eq? readtable4_0 unsafe-undefined)
70282                  next-readtable_0
70283                  readtable4_0)))
70284           (let ((keep-comment?_0
70285                  (if (eq? keep-comment?15_0 unsafe-undefined)
70286                    recursive?5_0
70287                    keep-comment?15_0)))
70288             (let ((config_0
70289                    (let ((c1_0 (if recursive?5_0 (current-read-config) #f)))
70290                      (if c1_0
70291                        (read-config-update.1
70292                         for-syntax?8_0
70293                         keep-comment?_0
70294                         next-readtable_0
70295                         readtable_0
70296                         local-graph?6_0
70297                         wrap1_0
70298                         c1_0)
70299                        (make-read-config.1
70300                         call-with-root-namespace10_0
70301                         coerce13_0
70302                         coerce-key14_0
70303                         dynamic-require11_0
70304                         for-syntax?8_0
70305                         keep-comment?_0
70306                         module-declared?12_0
70307                         next-readtable_0
70308                         read-compiled9_0
70309                         readtable_0
70310                         source7_0
70311                         wrap1_0)))))
70312               (let ((v_0 (read-one init-c2_0 in31_0 config_0)))
70313                 (if (if (let ((or-part_0 (not recursive?5_0)))
70314                           (if or-part_0 or-part_0 local-graph?6_0))
70315                       (read-config-state-graph
70316                        (begin-unsafe
70317                         (read-config/inner-st
70318                          (read-config/outer-inner config_0))))
70319                       #f)
70320                   (catch-and-reraise-as-reader/proc
70321                    #f
70322                    config_0
70323                    (lambda () (make-reader-graph v_0)))
70324                   (if (if recursive?5_0
70325                         (if (not local-graph?6_0)
70326                           (if (not for-syntax?8_0)
70327                             (if (not (eof-object? v_0))
70328                               (not (1/special-comment? v_0))
70329                               #f)
70330                             #f)
70331                           #f)
70332                         #f)
70333                     (begin (get-graph-hash config_0) v_0)
70334                     v_0)))))))))))
70335(define read-language.1
70336  (|#%name|
70337   read-language
70338   (lambda (call-with-root-namespace37_0
70339            coerce39_0
70340            coerce-key40_0
70341            dynamic-require36_0
70342            for-syntax?33_0
70343            module-declared?38_0
70344            read-compiled35_0
70345            wrap34_0
70346            in49_0
70347            fail-k50_0)
70348     (begin
70349       (let ((config_0
70350              (make-read-config.1
70351               call-with-root-namespace37_0
70352               coerce39_0
70353               coerce-key40_0
70354               dynamic-require36_0
70355               for-syntax?33_0
70356               #f
70357               module-declared?38_0
70358               #f
70359               read-compiled35_0
70360               #f
70361               #f
70362               wrap34_0)))
70363         (let ((l-config_0
70364                (override-parameter 1/read-accept-reader config_0 #f)))
70365           (read-language/get-info
70366            read-undotted
70367            in49_0
70368            config_0
70369            fail-k50_0)))))))
70370(define read-one
70371  (lambda (init-c_0 in_0 config_0)
70372    (if (not (check-parameter 1/read-cdot config_0))
70373      (read-undotted init-c_0 in_0 config_0)
70374      (if (check-parameter 1/read-cdot config_0)
70375        (call-with-values
70376         (lambda () (port-next-location in_0))
70377         (case-lambda
70378          ((line_0 col_0 pos_0)
70379           (let ((v_0 (read-undotted init-c_0 in_0 config_0)))
70380             (if (1/special-comment? v_0)
70381               v_0
70382               (letrec*
70383                ((loop_0
70384                  (|#%name|
70385                   loop
70386                   (lambda (v_1)
70387                     (begin
70388                       (let ((source_0
70389                              (begin-unsafe
70390                               (read-config/inner-source
70391                                (read-config/outer-inner config_0)))))
70392                         (let ((c_0
70393                                (let ((c_0
70394                                       (peek-char-or-special
70395                                        in_0
70396                                        0
70397                                        'special
70398                                        source_0)))
70399                                  (if (eq? c_0 'special)
70400                                    (special1.1 'special)
70401                                    c_0))))
70402                           (let ((ec_0 (effective-char c_0 config_0)))
70403                             (if (not (char? ec_0))
70404                               v_1
70405                               (if (char-whitespace? ec_0)
70406                                 (begin
70407                                   (begin-unsafe
70408                                    (begin (read-char in_0) (void)))
70409                                   (loop_0 v_1))
70410                                 (if (char=? ec_0 '#\x2e)
70411                                   (call-with-values
70412                                    (lambda () (port-next-location in_0))
70413                                    (case-lambda
70414                                     ((dot-line_0 dot-col_0 dot-pos_0)
70415                                      (begin
70416                                        (begin-unsafe
70417                                         (begin (read-char in_0) (void)))
70418                                        (let ((pos-config_0
70419                                               (reading-at
70420                                                config_0
70421                                                dot-line_0
70422                                                dot-col_0
70423                                                dot-pos_0)))
70424                                          (let ((cdot_0
70425                                                 (wrap
70426                                                  '|#%dot|
70427                                                  in_0
70428                                                  pos-config_0
70429                                                  '#\x2e)))
70430                                            (let ((post-v_0
70431                                                   (read-undotted
70432                                                    #f
70433                                                    in_0
70434                                                    config_0)))
70435                                              (begin
70436                                                (if (eof-object? post-v_0)
70437                                                  (let ((temp84_0
70438                                                         "expected a datum after cdot, found end-of-file"))
70439                                                    (reader-error.1
70440                                                     unsafe-undefined
70441                                                     eof
70442                                                     #f
70443                                                     unsafe-undefined
70444                                                     in_0
70445                                                     pos-config_0
70446                                                     temp84_0
70447                                                     (list)))
70448                                                  (void))
70449                                                (loop_0
70450                                                 (let ((app_0
70451                                                        (list
70452                                                         cdot_0
70453                                                         v_1
70454                                                         post-v_0)))
70455                                                   (wrap
70456                                                    app_0
70457                                                    in_0
70458                                                    (reading-at
70459                                                     config_0
70460                                                     line_0
70461                                                     col_0
70462                                                     pos_0)
70463                                                    '#\x2e)))))))))
70464                                     (args
70465                                      (raise-binding-result-arity-error
70466                                       3
70467                                       args))))
70468                                   v_1)))))))))))
70469                (loop_0 v_0)))))
70470          (args (raise-binding-result-arity-error 3 args))))
70471        (void)))))
70472(define read-undotted
70473  (lambda (init-c_0 in_0 config_0)
70474    (let ((c_0
70475           (read-char/skip-whitespace-and-comments
70476            init-c_0
70477            read-one
70478            in_0
70479            config_0)))
70480      (call-with-values
70481       (lambda () (port-next-location* in_0 c_0))
70482       (case-lambda
70483        ((line_0 col_0 pos_0)
70484         (if (eof-object? c_0)
70485           eof
70486           (if (not (char? c_0))
70487             (let ((v_0 (special-value c_0)))
70488               (if (1/special-comment? v_0)
70489                 (if (begin-unsafe (read-config/outer-keep-comment? config_0))
70490                   v_0
70491                   (read-undotted #f in_0 config_0))
70492                 (coerce v_0 in_0 (reading-at config_0 line_0 col_0 pos_0))))
70493             (let ((c2_0 (readtable-handler config_0 c_0)))
70494               (if c2_0
70495                 (let ((v_0
70496                        (readtable-apply
70497                         c2_0
70498                         c_0
70499                         in_0
70500                         config_0
70501                         line_0
70502                         col_0
70503                         pos_0)))
70504                   (retry-special-comment v_0 in_0 config_0))
70505                 (let ((ec_0 (effective-char c_0 config_0)))
70506                   (begin
70507                     (if (not (char-closer? ec_0 config_0))
70508                       (track-indentation! config_0 line_0 col_0)
70509                       (void))
70510                     (let ((r-config_0
70511                            (reading-at
70512                             (discard-comment config_0)
70513                             line_0
70514                             col_0
70515                             pos_0)))
70516                       (let ((index_0
70517                              (if (char? ec_0)
70518                                (let ((codepoint_0 (char->integer ec_0)))
70519                                  (if (if (unsafe-fx>= codepoint_0 34)
70520                                        (unsafe-fx< codepoint_0 126)
70521                                        #f)
70522                                    (if (unsafe-fx< codepoint_0 91)
70523                                      (if (unsafe-fx< codepoint_0 40)
70524                                        (let ((tbl_0 '#(11 1 0 0 0 2)))
70525                                          (unsafe-vector*-ref
70526                                           tbl_0
70527                                           (unsafe-fx- codepoint_0 34)))
70528                                        (if (unsafe-fx< codepoint_0 42)
70529                                          (let ((tbl_0 '#(5 6)))
70530                                            (unsafe-vector*-ref
70531                                             tbl_0
70532                                             (unsafe-fx- codepoint_0 40)))
70533                                          (if (unsafe-fx< codepoint_0 44)
70534                                            0
70535                                            (if (unsafe-fx< codepoint_0 45)
70536                                              4
70537                                              0))))
70538                                      (let ((tbl_0
70539                                             '#(7
70540                                                0
70541                                                8
70542                                                0
70543                                                0
70544                                                3
70545                                                0
70546                                                0
70547                                                0
70548                                                0
70549                                                0
70550                                                0
70551                                                0
70552                                                0
70553                                                0
70554                                                0
70555                                                0
70556                                                0
70557                                                0
70558                                                0
70559                                                0
70560                                                0
70561                                                0
70562                                                0
70563                                                0
70564                                                0
70565                                                0
70566                                                0
70567                                                0
70568                                                0
70569                                                0
70570                                                0
70571                                                9
70572                                                12
70573                                                10)))
70574                                        (unsafe-vector*-ref
70575                                         tbl_0
70576                                         (unsafe-fx- codepoint_0 91))))
70577                                    0))
70578                                0)))
70579                         (if (unsafe-fx< index_0 6)
70580                           (if (unsafe-fx< index_0 2)
70581                             (if (unsafe-fx< index_0 1)
70582                               (let ((v_0
70583                                      (let ((temp88_0
70584                                             (if (let ((or-part_0
70585                                                        (eq? c_0 ec_0)))
70586                                                   (if or-part_0
70587                                                     or-part_0
70588                                                     (if (<
70589                                                          (char->integer ec_0)
70590                                                          128)
70591                                                       (char-numeric? ec_0)
70592                                                       #f)))
70593                                               'symbol-or-number
70594                                               'symbol/indirect)))
70595                                        (read-symbol-or-number.1
70596                                         #f
70597                                         temp88_0
70598                                         c_0
70599                                         in_0
70600                                         r-config_0))))
70601                                 (retry-special-comment v_0 in_0 config_0))
70602                               (read-dispatch c_0 in_0 r-config_0 config_0))
70603                             (if (unsafe-fx< index_0 3)
70604                               (read-quote
70605                                read-one
70606                                'quote
70607                                "quoting \"'\""
70608                                c_0
70609                                in_0
70610                                r-config_0)
70611                               (if (unsafe-fx< index_0 4)
70612                                 (if (check-parameter
70613                                      1/read-accept-quasiquote
70614                                      config_0)
70615                                   (read-quote
70616                                    read-one
70617                                    'quasiquote
70618                                    "quasiquoting \"`\""
70619                                    c_0
70620                                    in_0
70621                                    r-config_0)
70622                                   (let ((temp91_0 "illegal use of `~a`"))
70623                                     (reader-error.1
70624                                      unsafe-undefined
70625                                      '#\x78
70626                                      #f
70627                                      unsafe-undefined
70628                                      in_0
70629                                      r-config_0
70630                                      temp91_0
70631                                      (list c_0))))
70632                                 (if (unsafe-fx< index_0 5)
70633                                   (if (check-parameter
70634                                        1/read-accept-quasiquote
70635                                        config_0)
70636                                     (let ((source_0
70637                                            (begin-unsafe
70638                                             (read-config/inner-source
70639                                              (read-config/outer-inner
70640                                               config_0)))))
70641                                       (let ((c2_1
70642                                              (let ((c_1
70643                                                     (peek-char-or-special
70644                                                      in_0
70645                                                      0
70646                                                      'special
70647                                                      source_0)))
70648                                                (if (eq? c_1 'special)
70649                                                  (special1.1 'special)
70650                                                  c_1))))
70651                                         (if (eqv? c2_1 '#\x40)
70652                                           (begin
70653                                             (begin-unsafe
70654                                              (begin (read-char in_0) (void)))
70655                                             (read-quote
70656                                              read-one
70657                                              'unquote-splicing
70658                                              "unquoting `,@`"
70659                                              c_0
70660                                              in_0
70661                                              r-config_0))
70662                                           (read-quote
70663                                            read-one
70664                                            'unquote
70665                                            "unquoting `,`"
70666                                            c_0
70667                                            in_0
70668                                            r-config_0))))
70669                                     (let ((temp95_0 "illegal use of `~a`"))
70670                                       (reader-error.1
70671                                        unsafe-undefined
70672                                        '#\x78
70673                                        #f
70674                                        unsafe-undefined
70675                                        in_0
70676                                        r-config_0
70677                                        temp95_0
70678                                        (list c_0))))
70679                                   (wrap
70680                                    (read-unwrapped-sequence.1
70681                                     'all
70682                                     unsafe-undefined
70683                                     unsafe-undefined
70684                                     #t
70685                                     unsafe-undefined
70686                                     read-one
70687                                     ec_0
70688                                     '#\x28
70689                                     '#\x29
70690                                     in_0
70691                                     r-config_0)
70692                                    in_0
70693                                    r-config_0
70694                                    ec_0)))))
70695                           (if (unsafe-fx< index_0 9)
70696                             (if (unsafe-fx< index_0 7)
70697                               (let ((temp106_0 "~a"))
70698                                 (let ((temp107_0
70699                                        (indentation-unexpected-closer-message
70700                                         ec_0
70701                                         c_0
70702                                         r-config_0)))
70703                                   (let ((temp106_1 temp106_0))
70704                                     (reader-error.1
70705                                      unsafe-undefined
70706                                      '#\x78
70707                                      #f
70708                                      unsafe-undefined
70709                                      in_0
70710                                      r-config_0
70711                                      temp106_1
70712                                      (list temp107_0)))))
70713                               (if (unsafe-fx< index_0 8)
70714                                 (if (let ((or-part_0
70715                                            (check-parameter
70716                                             1/read-square-bracket-as-paren
70717                                             config_0)))
70718                                       (if or-part_0
70719                                         or-part_0
70720                                         (check-parameter
70721                                          1/read-square-bracket-with-tag
70722                                          config_0)))
70723                                   (wrap
70724                                    (read-unwrapped-sequence.1
70725                                     'all
70726                                     unsafe-undefined
70727                                     unsafe-undefined
70728                                     #t
70729                                     unsafe-undefined
70730                                     read-one
70731                                     ec_0
70732                                     '#\x5b
70733                                     '#\x5d
70734                                     in_0
70735                                     r-config_0)
70736                                    in_0
70737                                    r-config_0
70738                                    ec_0)
70739                                   (let ((temp117_0 "illegal use of `~a`"))
70740                                     (reader-error.1
70741                                      unsafe-undefined
70742                                      '#\x78
70743                                      #f
70744                                      unsafe-undefined
70745                                      in_0
70746                                      r-config_0
70747                                      temp117_0
70748                                      (list c_0))))
70749                                 (if (let ((or-part_0
70750                                            (check-parameter
70751                                             1/read-square-bracket-as-paren
70752                                             config_0)))
70753                                       (if or-part_0
70754                                         or-part_0
70755                                         (check-parameter
70756                                          1/read-square-bracket-with-tag
70757                                          config_0)))
70758                                   (let ((temp121_0 "~a"))
70759                                     (let ((temp122_0
70760                                            (indentation-unexpected-closer-message
70761                                             ec_0
70762                                             c_0
70763                                             r-config_0)))
70764                                       (let ((temp121_1 temp121_0))
70765                                         (reader-error.1
70766                                          unsafe-undefined
70767                                          '#\x78
70768                                          #f
70769                                          unsafe-undefined
70770                                          in_0
70771                                          r-config_0
70772                                          temp121_1
70773                                          (list temp122_0)))))
70774                                   (let ((temp125_0 "illegal use of `~a`"))
70775                                     (reader-error.1
70776                                      unsafe-undefined
70777                                      '#\x78
70778                                      #f
70779                                      unsafe-undefined
70780                                      in_0
70781                                      r-config_0
70782                                      temp125_0
70783                                      (list c_0))))))
70784                             (if (unsafe-fx< index_0 10)
70785                               (if (let ((or-part_0
70786                                          (check-parameter
70787                                           1/read-curly-brace-as-paren
70788                                           config_0)))
70789                                     (if or-part_0
70790                                       or-part_0
70791                                       (check-parameter
70792                                        1/read-curly-brace-with-tag
70793                                        config_0)))
70794                                 (wrap
70795                                  (read-unwrapped-sequence.1
70796                                   'all
70797                                   unsafe-undefined
70798                                   unsafe-undefined
70799                                   #t
70800                                   unsafe-undefined
70801                                   read-one
70802                                   ec_0
70803                                   '#\x7b
70804                                   '#\x7d
70805                                   in_0
70806                                   r-config_0)
70807                                  in_0
70808                                  r-config_0
70809                                  ec_0)
70810                                 (let ((temp136_0 "illegal use of `~a`"))
70811                                   (reader-error.1
70812                                    unsafe-undefined
70813                                    '#\x78
70814                                    #f
70815                                    unsafe-undefined
70816                                    in_0
70817                                    r-config_0
70818                                    temp136_0
70819                                    (list c_0))))
70820                               (if (unsafe-fx< index_0 11)
70821                                 (if (let ((or-part_0
70822                                            (check-parameter
70823                                             1/read-curly-brace-as-paren
70824                                             config_0)))
70825                                       (if or-part_0
70826                                         or-part_0
70827                                         (check-parameter
70828                                          1/read-curly-brace-with-tag
70829                                          config_0)))
70830                                   (let ((temp140_0 "~a"))
70831                                     (let ((temp141_0
70832                                            (indentation-unexpected-closer-message
70833                                             ec_0
70834                                             c_0
70835                                             r-config_0)))
70836                                       (let ((temp140_1 temp140_0))
70837                                         (reader-error.1
70838                                          unsafe-undefined
70839                                          '#\x78
70840                                          #f
70841                                          unsafe-undefined
70842                                          in_0
70843                                          r-config_0
70844                                          temp140_1
70845                                          (list temp141_0)))))
70846                                   (let ((temp144_0 "illegal use of `~a`"))
70847                                     (reader-error.1
70848                                      unsafe-undefined
70849                                      '#\x78
70850                                      #f
70851                                      unsafe-undefined
70852                                      in_0
70853                                      r-config_0
70854                                      temp144_0
70855                                      (list c_0))))
70856                                 (if (unsafe-fx< index_0 12)
70857                                   (read-string.1 'string in_0 r-config_0)
70858                                   (read-symbol-or-number.1
70859                                    #f
70860                                    'symbol
70861                                    c_0
70862                                    in_0
70863                                    r-config_0)))))))))))))))
70864        (args (raise-binding-result-arity-error 3 args)))))))
70865(define read-dispatch
70866  (lambda (dispatch-c_0 in_0 config_0 orig-config_0)
70867    (let ((source_0
70868           (begin-unsafe
70869            (read-config/inner-source (read-config/outer-inner config_0)))))
70870      (let ((c_0 (read-char-or-special in_0 special1.1 source_0)))
70871        (if (eof-object? c_0)
70872          (let ((temp155_0 "bad syntax `~a`"))
70873            (reader-error.1
70874             unsafe-undefined
70875             c_0
70876             #f
70877             unsafe-undefined
70878             in_0
70879             config_0
70880             temp155_0
70881             (list dispatch-c_0)))
70882          (if (not (char? c_0))
70883            (let ((temp160_0 "bad syntax `~a`"))
70884              (reader-error.1
70885               unsafe-undefined
70886               c_0
70887               #f
70888               unsafe-undefined
70889               in_0
70890               config_0
70891               temp160_0
70892               (list dispatch-c_0)))
70893            (let ((c3_0 (readtable-dispatch-handler orig-config_0 c_0)))
70894              (if c3_0
70895                (let ((line_0
70896                       (begin-unsafe (read-config/outer-line config_0))))
70897                  (let ((col_0
70898                         (begin-unsafe (read-config/outer-col config_0))))
70899                    (let ((pos_0
70900                           (begin-unsafe (read-config/outer-pos config_0))))
70901                      (let ((v_0
70902                             (readtable-apply
70903                              c3_0
70904                              c_0
70905                              in_0
70906                              config_0
70907                              line_0
70908                              col_0
70909                              pos_0)))
70910                        (retry-special-comment v_0 in_0 orig-config_0)))))
70911                (let ((index_0
70912                       (if (char? c_0)
70913                         (let ((codepoint_0 (char->integer c_0)))
70914                           (if (if (unsafe-fx>= codepoint_0 33)
70915                                 (unsafe-fx< codepoint_0 127)
70916                                 #f)
70917                             (let ((tbl_0
70918                                    '#(34
70919                                       11
70920                                       0
70921                                       0
70922                                       13
70923                                       6
70924                                       7
70925                                       2
70926                                       0
70927                                       0
70928                                       0
70929                                       9
70930                                       0
70931                                       0
70932                                       0
70933                                       1
70934                                       1
70935                                       1
70936                                       1
70937                                       1
70938                                       1
70939                                       1
70940                                       1
70941                                       1
70942                                       1
70943                                       14
70944                                       0
70945                                       12
70946                                       0
70947                                       0
70948                                       0
70949                                       0
70950                                       0
70951                                       22
70952                                       29
70953                                       25
70954                                       18
70955                                       16
70956                                       0
70957                                       30
70958                                       20
70959                                       0
70960                                       0
70961                                       0
70962                                       0
70963                                       0
70964                                       24
70965                                       0
70966                                       0
70967                                       0
70968                                       0
70969                                       15
70970                                       0
70971                                       0
70972                                       0
70973                                       28
70974                                       0
70975                                       0
70976                                       3
70977                                       10
70978                                       0
70979                                       0
70980                                       0
70981                                       8
70982                                       0
70983                                       26
70984                                       29
70985                                       21
70986                                       17
70987                                       16
70988                                       0
70989                                       30
70990                                       19
70991                                       0
70992                                       0
70993                                       33
70994                                       0
70995                                       0
70996                                       23
70997                                       32
70998                                       0
70999                                       31
71000                                       5
71001                                       15
71002                                       0
71003                                       0
71004                                       0
71005                                       27
71006                                       0
71007                                       0
71008                                       4
71009                                       0
71010                                       0
71011                                       35)))
71012                               (unsafe-vector*-ref
71013                                tbl_0
71014                                (unsafe-fx- codepoint_0 33)))
71015                             0))
71016                         0)))
71017                  (if (unsafe-fx< index_0 17)
71018                    (if (unsafe-fx< index_0 8)
71019                      (if (unsafe-fx< index_0 3)
71020                        (if (unsafe-fx< index_0 1)
71021                          (let ((temp164_0 "bad syntax `~a~a`"))
71022                            (reader-error.1
71023                             unsafe-undefined
71024                             '#\x78
71025                             #f
71026                             unsafe-undefined
71027                             in_0
71028                             config_0
71029                             temp164_0
71030                             (list dispatch-c_0 c_0)))
71031                          (if (unsafe-fx< index_0 2)
71032                            (read-vector-or-graph
71033                             read-one
71034                             dispatch-c_0
71035                             c_0
71036                             in_0
71037                             config_0)
71038                            (read-vector.1
71039                             #f
71040                             'any
71041                             read-one
71042                             '#\x28
71043                             '#\x28
71044                             '#\x29
71045                             in_0
71046                             config_0)))
71047                        (if (unsafe-fx< index_0 5)
71048                          (if (unsafe-fx< index_0 4)
71049                            (if (check-parameter
71050                                 1/read-square-bracket-as-paren
71051                                 config_0)
71052                              (read-vector.1
71053                               #f
71054                               'any
71055                               read-one
71056                               '#\x5b
71057                               '#\x5b
71058                               '#\x5d
71059                               in_0
71060                               config_0)
71061                              (let ((temp181_0
71062                                     (format "~a~a" dispatch-c_0 c_0)))
71063                                (bad-syntax-error.1
71064                                 '#\x78
71065                                 in_0
71066                                 config_0
71067                                 temp181_0)))
71068                            (if (check-parameter
71069                                 1/read-curly-brace-as-paren
71070                                 config_0)
71071                              (read-vector.1
71072                               #f
71073                               'any
71074                               read-one
71075                               '#\x7b
71076                               '#\x7b
71077                               '#\x7d
71078                               in_0
71079                               config_0)
71080                              (let ((temp190_0
71081                                     (format "~a~a" dispatch-c_0 c_0)))
71082                                (bad-syntax-error.1
71083                                 '#\x78
71084                                 in_0
71085                                 config_0
71086                                 temp190_0))))
71087                          (if (unsafe-fx< index_0 6)
71088                            (read-struct read-one dispatch-c_0 in_0 config_0)
71089                            (if (unsafe-fx< index_0 7)
71090                              (read-box read-one dispatch-c_0 in_0 config_0)
71091                              (read-quote
71092                               read-one
71093                               'syntax
71094                               "quoting #'"
71095                               c_0
71096                               in_0
71097                               config_0)))))
71098                      (if (unsafe-fx< index_0 12)
71099                        (if (unsafe-fx< index_0 9)
71100                          (read-quote
71101                           read-one
71102                           'quasisyntax
71103                           "quasiquoting #`"
71104                           c_0
71105                           in_0
71106                           config_0)
71107                          (if (unsafe-fx< index_0 10)
71108                            (let ((source_1
71109                                   (begin-unsafe
71110                                    (read-config/inner-source
71111                                     (read-config/outer-inner config_0)))))
71112                              (let ((c2_0
71113                                     (let ((c_1
71114                                            (peek-char-or-special
71115                                             in_0
71116                                             0
71117                                             'special
71118                                             source_1)))
71119                                       (if (eq? c_1 'special)
71120                                         (special1.1 'special)
71121                                         c_1))))
71122                                (if (eqv? c2_0 '#\x40)
71123                                  (begin
71124                                    (begin-unsafe
71125                                     (begin (read-char in_0) (void)))
71126                                    (read-quote
71127                                     read-one
71128                                     'unsyntax-splicing
71129                                     "unquoting #,@"
71130                                     c_0
71131                                     in_0
71132                                     config_0))
71133                                  (read-quote
71134                                   read-one
71135                                   'unsyntax
71136                                   "unquoting #,"
71137                                   c_0
71138                                   in_0
71139                                   config_0))))
71140                            (if (unsafe-fx< index_0 11)
71141                              (read-character in_0 config_0)
71142                              (read-string.1 '|byte string| in_0 config_0))))
71143                        (if (unsafe-fx< index_0 14)
71144                          (if (unsafe-fx< index_0 13)
71145                            (let ((source_1
71146                                   (begin-unsafe
71147                                    (read-config/inner-source
71148                                     (read-config/outer-inner config_0)))))
71149                              (let ((c2_0
71150                                     (let ((c_1
71151                                            (peek-char-or-special
71152                                             in_0
71153                                             0
71154                                             'special
71155                                             source_1)))
71156                                       (if (eq? c_1 'special)
71157                                         (special1.1 'special)
71158                                         c_1))))
71159                                (if (eqv? '#\x3c c2_0)
71160                                  (begin
71161                                    (begin-unsafe
71162                                     (begin (read-char in_0) (void)))
71163                                    (read-here-string in_0 config_0))
71164                                  (let ((temp197_0 "bad syntax `~a<`"))
71165                                    (reader-error.1
71166                                     unsafe-undefined
71167                                     c2_0
71168                                     #f
71169                                     unsafe-undefined
71170                                     in_0
71171                                     config_0
71172                                     temp197_0
71173                                     (list dispatch-c_0))))))
71174                            (read-symbol-or-number.1
71175                             dispatch-c_0
71176                             'symbol
71177                             c_0
71178                             in_0
71179                             config_0))
71180                          (if (unsafe-fx< index_0 15)
71181                            (read-symbol-or-number.1
71182                             #f
71183                             'keyword
71184                             #f
71185                             in_0
71186                             config_0)
71187                            (if (unsafe-fx< index_0 16)
71188                              (let ((source_1
71189                                     (begin-unsafe
71190                                      (read-config/inner-source
71191                                       (read-config/outer-inner config_0)))))
71192                                (let ((c2_0
71193                                       (let ((c_1
71194                                              (peek-char-or-special
71195                                               in_0
71196                                               0
71197                                               'special
71198                                               source_1)))
71199                                         (if (eq? c_1 'special)
71200                                           (special1.1 'special)
71201                                           c_1))))
71202                                  (if (begin-unsafe
71203                                       (readtable-char-delimiter?
71204                                        (begin-unsafe
71205                                         (read-config/inner-readtable
71206                                          (read-config/outer-inner config_0)))
71207                                        c2_0
71208                                        config_0))
71209                                    (wrap #t in_0 config_0 c_0)
71210                                    (read-delimited-constant
71211                                     c_0
71212                                     (char=? c_0 '#\x74)
71213                                     '(#\x72 #\x75 #\x65)
71214                                     #t
71215                                     in_0
71216                                     config_0))))
71217                              (let ((source_1
71218                                     (begin-unsafe
71219                                      (read-config/inner-source
71220                                       (read-config/outer-inner config_0)))))
71221                                (let ((c2_0
71222                                       (let ((c_1
71223                                              (peek-char-or-special
71224                                               in_0
71225                                               0
71226                                               'special
71227                                               source_1)))
71228                                         (if (eq? c_1 'special)
71229                                           (special1.1 'special)
71230                                           c_1))))
71231                                  (if (begin-unsafe
71232                                       (readtable-char-delimiter?
71233                                        (begin-unsafe
71234                                         (read-config/inner-readtable
71235                                          (read-config/outer-inner config_0)))
71236                                        c2_0
71237                                        config_0))
71238                                    (wrap #f in_0 config_0 c_0)
71239                                    (if (let ((or-part_0 (char=? c2_0 '#\x78)))
71240                                          (if or-part_0
71241                                            or-part_0
71242                                            (char=? c2_0 '#\x6c)))
71243                                      (read-fixnum-or-flonum-vector
71244                                       read-one
71245                                       dispatch-c_0
71246                                       c_0
71247                                       c2_0
71248                                       in_0
71249                                       config_0)
71250                                      (read-delimited-constant
71251                                       c_0
71252                                       (char=? c_0 '#\x66)
71253                                       '(#\x61 #\x6c #\x73 #\x65)
71254                                       #f
71255                                       in_0
71256                                       config_0))))))))))
71257                    (if (unsafe-fx< index_0 26)
71258                      (if (unsafe-fx< index_0 21)
71259                        (if (unsafe-fx< index_0 18)
71260                          (let ((temp211_0 "#e"))
71261                            (read-symbol-or-number.1
71262                             #f
71263                             temp211_0
71264                             #f
71265                             in_0
71266                             config_0))
71267                          (if (unsafe-fx< index_0 19)
71268                            (let ((temp215_0 "#E"))
71269                              (read-symbol-or-number.1
71270                               #f
71271                               temp215_0
71272                               #f
71273                               in_0
71274                               config_0))
71275                            (if (unsafe-fx< index_0 20)
71276                              (let ((temp219_0 "#i"))
71277                                (read-symbol-or-number.1
71278                                 #f
71279                                 temp219_0
71280                                 #f
71281                                 in_0
71282                                 config_0))
71283                              (let ((temp223_0 "#I"))
71284                                (read-symbol-or-number.1
71285                                 #f
71286                                 temp223_0
71287                                 #f
71288                                 in_0
71289                                 config_0)))))
71290                        (if (unsafe-fx< index_0 23)
71291                          (if (unsafe-fx< index_0 22)
71292                            (let ((temp227_0 "#d"))
71293                              (read-symbol-or-number.1
71294                               #f
71295                               temp227_0
71296                               #f
71297                               in_0
71298                               config_0))
71299                            (let ((temp231_0 "#B"))
71300                              (read-symbol-or-number.1
71301                               #f
71302                               temp231_0
71303                               #f
71304                               in_0
71305                               config_0)))
71306                          (if (unsafe-fx< index_0 24)
71307                            (let ((temp235_0 "#o"))
71308                              (read-symbol-or-number.1
71309                               #f
71310                               temp235_0
71311                               #f
71312                               in_0
71313                               config_0))
71314                            (if (unsafe-fx< index_0 25)
71315                              (let ((temp239_0 "#O"))
71316                                (read-symbol-or-number.1
71317                                 #f
71318                                 temp239_0
71319                                 #f
71320                                 in_0
71321                                 config_0))
71322                              (let ((temp243_0 "#D"))
71323                                (read-symbol-or-number.1
71324                                 #f
71325                                 temp243_0
71326                                 #f
71327                                 in_0
71328                                 config_0))))))
71329                      (if (unsafe-fx< index_0 30)
71330                        (if (unsafe-fx< index_0 27)
71331                          (let ((temp247_0 "#b"))
71332                            (read-symbol-or-number.1
71333                             #f
71334                             temp247_0
71335                             #f
71336                             in_0
71337                             config_0))
71338                          (if (unsafe-fx< index_0 28)
71339                            (let ((temp251_0 "#x"))
71340                              (read-symbol-or-number.1
71341                               #f
71342                               temp251_0
71343                               #f
71344                               in_0
71345                               config_0))
71346                            (if (unsafe-fx< index_0 29)
71347                              (let ((temp255_0 "#X"))
71348                                (read-symbol-or-number.1
71349                                 #f
71350                                 temp255_0
71351                                 #f
71352                                 in_0
71353                                 config_0))
71354                              (let ((source_1
71355                                     (begin-unsafe
71356                                      (read-config/inner-source
71357                                       (read-config/outer-inner config_0)))))
71358                                (let ((c2_0
71359                                       (read-char-or-special
71360                                        in_0
71361                                        special1.1
71362                                        source_1)))
71363                                  (if (if (eqv? c2_0 '#\x73)
71364                                        #t
71365                                        (eqv? c2_0 '#\x53))
71366                                    (read-one
71367                                     #f
71368                                     in_0
71369                                     (override-parameter
71370                                      read-case-sensitive
71371                                      config_0
71372                                      #t))
71373                                    (if (if (eqv? c2_0 '#\x69)
71374                                          #t
71375                                          (eqv? c2_0 '#\x49))
71376                                      (read-one
71377                                       #f
71378                                       in_0
71379                                       (override-parameter
71380                                        read-case-sensitive
71381                                        config_0
71382                                        #f))
71383                                      (let ((temp259_0
71384                                             "expected `s', `S`, `i`, or `I` after `~a~a`"))
71385                                        (reader-error.1
71386                                         unsafe-undefined
71387                                         c2_0
71388                                         #f
71389                                         unsafe-undefined
71390                                         in_0
71391                                         config_0
71392                                         temp259_0
71393                                         (list dispatch-c_0 c_0))))))))))
71394                        (if (unsafe-fx< index_0 32)
71395                          (if (unsafe-fx< index_0 31)
71396                            (read-hash read-one dispatch-c_0 c_0 in_0 config_0)
71397                            (let ((accum-str_0 (accum-string-init! config_0)))
71398                              (begin
71399                                (accum-string-add! accum-str_0 dispatch-c_0)
71400                                (begin
71401                                  (accum-string-add! accum-str_0 c_0)
71402                                  (let ((source_1
71403                                         (begin-unsafe
71404                                          (read-config/inner-source
71405                                           (read-config/outer-inner
71406                                            config_0)))))
71407                                    (let ((c2_0
71408                                           (read-char-or-special
71409                                            in_0
71410                                            special1.1
71411                                            source_1)))
71412                                      (begin
71413                                        (if (char? c2_0)
71414                                          (accum-string-add! accum-str_0 c2_0)
71415                                          (void))
71416                                        (if (eqv? c2_0 '#\x78)
71417                                          (read-regexp
71418                                           c_0
71419                                           accum-str_0
71420                                           in_0
71421                                           config_0)
71422                                          (if (eqv? c2_0 '#\x65)
71423                                            (read-extension-reader
71424                                             read-one
71425                                             read-undotted
71426                                             dispatch-c_0
71427                                             in_0
71428                                             config_0)
71429                                            (let ((temp265_0
71430                                                   (accum-string-get!.1
71431                                                    0
71432                                                    accum-str_0
71433                                                    config_0)))
71434                                              (bad-syntax-error.1
71435                                               c2_0
71436                                               in_0
71437                                               config_0
71438                                               temp265_0)))))))))))
71439                          (if (unsafe-fx< index_0 33)
71440                            (let ((accum-str_0 (accum-string-init! config_0)))
71441                              (begin
71442                                (accum-string-add! accum-str_0 dispatch-c_0)
71443                                (begin
71444                                  (accum-string-add! accum-str_0 c_0)
71445                                  (let ((source_1
71446                                         (begin-unsafe
71447                                          (read-config/inner-source
71448                                           (read-config/outer-inner
71449                                            config_0)))))
71450                                    (let ((c2_0
71451                                           (read-char-or-special
71452                                            in_0
71453                                            special1.1
71454                                            source_1)))
71455                                      (begin
71456                                        (if (char? c2_0)
71457                                          (accum-string-add! accum-str_0 c2_0)
71458                                          (void))
71459                                        (if (eqv? c2_0 '#\x78)
71460                                          (read-regexp
71461                                           c_0
71462                                           accum-str_0
71463                                           in_0
71464                                           config_0)
71465                                          (let ((temp271_0
71466                                                 (accum-string-get!.1
71467                                                  0
71468                                                  accum-str_0
71469                                                  config_0)))
71470                                            (bad-syntax-error.1
71471                                             c2_0
71472                                             in_0
71473                                             config_0
71474                                             temp271_0)))))))))
71475                            (if (unsafe-fx< index_0 34)
71476                              (read-extension-lang.1
71477                               #f
71478                               read-undotted
71479                               dispatch-c_0
71480                               in_0
71481                               config_0)
71482                              (if (unsafe-fx< index_0 35)
71483                                (|read-extension-#!.1|
71484                                 #f
71485                                 read-undotted
71486                                 dispatch-c_0
71487                                 in_0
71488                                 config_0)
71489                                (if (check-parameter
71490                                     1/read-accept-compiled
71491                                     config_0)
71492                                  (wrap
71493                                   (|#%app|
71494                                    (begin-unsafe
71495                                     (read-config/inner-read-compiled
71496                                      (read-config/outer-inner config_0)))
71497                                    in_0)
71498                                   in_0
71499                                   config_0
71500                                   c_0)
71501                                  (let ((temp284_0
71502                                         "`~a~~` compiled expressions not enabled"))
71503                                    (reader-error.1
71504                                     unsafe-undefined
71505                                     '#\x78
71506                                     #f
71507                                     unsafe-undefined
71508                                     in_0
71509                                     config_0
71510                                     temp284_0
71511                                     (list dispatch-c_0))))))))))))))))))))
71512(define retry-special-comment
71513  (lambda (v_0 in_0 config_0)
71514    (if (1/special-comment? v_0)
71515      (if (begin-unsafe (read-config/outer-keep-comment? config_0))
71516        v_0
71517        (read-undotted #f in_0 config_0))
71518      v_0)))
71519(define 1/module-declared?
71520  (let ((module-declared?_0
71521         (|#%name|
71522          module-declared?
71523          (lambda (mod2_0 load?1_0)
71524            (begin
71525              (begin
71526                (if (module-reference? mod2_0)
71527                  (void)
71528                  (raise-argument-error
71529                   'module-declared?
71530                   module-reference-str
71531                   mod2_0))
71532                (let ((ns_0 (1/current-namespace)))
71533                  (let ((name_0
71534                         (reference->resolved-module-path.1 load?1_0 mod2_0)))
71535                    (if (namespace->module ns_0 name_0) #t #f)))))))))
71536    (|#%name|
71537     module-declared?
71538     (case-lambda
71539      ((mod_0) (begin (module-declared?_0 mod_0 #f)))
71540      ((mod_0 load?1_0) (module-declared?_0 mod_0 load?1_0))))))
71541(define 1/module-predefined?
71542  (|#%name|
71543   module-predefined?
71544   (lambda (mod_0)
71545     (begin
71546       (begin
71547         (if (module-reference? mod_0)
71548           (void)
71549           (raise-argument-error
71550            'module-predefined?
71551            module-reference-str
71552            mod_0))
71553         (let ((ns_0 (1/current-namespace)))
71554           (let ((name_0 (reference->resolved-module-path.1 #f mod_0)))
71555             (let ((m_0 (namespace->module ns_0 name_0)))
71556               (if m_0 (module-is-predefined? m_0) #f)))))))))
71557(define module->.1
71558  (|#%name|
71559   module->
71560   (lambda (extra-checks3_0 extract6_0 who7_0 mod8_0 load?5_0)
71561     (begin
71562       (begin
71563         (if (module-reference? mod8_0)
71564           (void)
71565           (raise-argument-error who7_0 module-reference-str mod8_0))
71566         (begin
71567           (|#%app| extra-checks3_0)
71568           (let ((m_0
71569                  (let ((app_0 (1/current-namespace)))
71570                    (namespace->module/complain
71571                     who7_0
71572                     app_0
71573                     (reference->resolved-module-path.1 load?5_0 mod8_0)))))
71574             (|#%app| extract6_0 m_0))))))))
71575(define 1/module->language-info
71576  (let ((module->language-info_0
71577         (|#%name|
71578          module->language-info
71579          (lambda (mod11_0 load?10_0)
71580            (begin
71581              (module->.1
71582               void
71583               module-language-info
71584               'module->language-info
71585               mod11_0
71586               load?10_0))))))
71587    (|#%name|
71588     module->language-info
71589     (case-lambda
71590      ((mod_0) (begin (module->language-info_0 mod_0 #f)))
71591      ((mod_0 load?10_0) (module->language-info_0 mod_0 load?10_0))))))
71592(define 1/module->imports
71593  (|#%name|
71594   module->imports
71595   (lambda (mod_0)
71596     (begin (module->.1 void module-requires 'module->imports mod_0 #f)))))
71597(define 1/module->exports
71598  (let ((module->exports_0
71599         (|#%name|
71600          module->exports
71601          (lambda (mod13_0 verbosity12_0)
71602            (begin
71603              (call-with-values
71604               (lambda ()
71605                 (let ((temp41_0
71606                        (lambda (m_0)
71607                          (values (module-provides m_0) (module-self m_0)))))
71608                   (let ((temp44_0
71609                          (lambda ()
71610                            (check-provides-verbosity
71611                             'module->exports
71612                             verbosity12_0))))
71613                     (module->.1
71614                      temp44_0
71615                      temp41_0
71616                      'module->exports
71617                      mod13_0
71618                      #f))))
71619               (case-lambda
71620                ((provides_0 self_0)
71621                 (provides->api-provides provides_0 self_0 verbosity12_0))
71622                (args (raise-binding-result-arity-error 2 args)))))))))
71623    (|#%name|
71624     module->exports
71625     (case-lambda
71626      ((mod_0) (begin (module->exports_0 mod_0 #f)))
71627      ((mod_0 verbosity12_0) (module->exports_0 mod_0 verbosity12_0))))))
71628(define 1/module->indirect-exports
71629  (|#%name|
71630   module->indirect-exports
71631   (lambda (mod_0)
71632     (begin
71633       (let ((temp45_0
71634              (lambda (m_0)
71635                (variables->api-nonprovides
71636                 (module-provides m_0)
71637                 (|#%app| (module-get-all-variables m_0))))))
71638         (module->.1 void temp45_0 'module->indirect-exports mod_0 #f))))))
71639(define 1/module-provide-protected?
71640  (|#%name|
71641   module-provide-protected?
71642   (lambda (mod_0 sym_0)
71643     (begin
71644       (let ((temp48_0
71645              (lambda (m_0)
71646                (let ((b/p_0 (hash-ref (module-provides m_0) sym_0 #f)))
71647                  (let ((or-part_0 (not b/p_0)))
71648                    (if or-part_0
71649                      or-part_0
71650                      (provided-as-protected? b/p_0)))))))
71651         (module->.1 void temp48_0 'module-provide-protected? mod_0 #f))))))
71652(define 1/module->namespace
71653  (let ((module->namespace_0
71654         (|#%name|
71655          module->namespace
71656          (lambda (mod15_0 ns14_0)
71657            (begin
71658              (let ((ns_0
71659                     (if (eq? ns14_0 unsafe-undefined)
71660                       (1/current-namespace)
71661                       ns14_0)))
71662                (begin
71663                  (if (module-reference? mod15_0)
71664                    (void)
71665                    (raise-argument-error
71666                     'module->namespace
71667                     module-reference-str
71668                     mod15_0))
71669                  (begin
71670                    (if (1/namespace? ns_0)
71671                      (void)
71672                      (raise-argument-error
71673                       'module->namespace
71674                       "namespace?"
71675                       ns_0))
71676                    (let ((name_0
71677                           (reference->resolved-module-path.1 #t mod15_0)))
71678                      (let ((phase_0 (namespace-phase ns_0)))
71679                        (let ((m-ns_0
71680                               (namespace->module-namespace.1
71681                                #f
71682                                #f
71683                                void
71684                                ns_0
71685                                name_0
71686                                phase_0)))
71687                          (begin
71688                            (if m-ns_0
71689                              (void)
71690                              (begin
71691                                (namespace->module/complain
71692                                 'module->namespace
71693                                 ns_0
71694                                 name_0)
71695                                (raise-arguments-error
71696                                 'module->namespace
71697                                 "module not instantiated in the current namespace"
71698                                 "name"
71699                                 name_0)))
71700                            (if (let ((app_0 (current-code-inspector)))
71701                                  (inspector-superior?
71702                                   app_0
71703                                   (namespace-inspector m-ns_0)))
71704                              (void)
71705                              (raise-arguments-error
71706                               'module->namespace
71707                               "current code inspector cannot access namespace of module"
71708                               "module name"
71709                               name_0))
71710                            (if (namespace-get-root-expand-ctx m-ns_0)
71711                              (void)
71712                              (let ((temp60_0 (namespace-mpi m-ns_0)))
71713                                (let ((root-ctx_0
71714                                       (make-root-expand-context.1
71715                                        #f
71716                                        null
71717                                        unsafe-undefined
71718                                        unsafe-undefined
71719                                        temp60_0)))
71720                                  (begin-unsafe
71721                                   (set-box!
71722                                    (namespace-root-expand-ctx m-ns_0)
71723                                    root-ctx_0)))))
71724                            (let ((temp53_0 (namespace-mpi m-ns_0)))
71725                              (namespace-module-make-available!.1
71726                               unsafe-undefined
71727                               ns_0
71728                               temp53_0
71729                               phase_0))
71730                            m-ns_0))))))))))))
71731    (|#%name|
71732     module->namespace
71733     (case-lambda
71734      ((mod_0) (begin (module->namespace_0 mod_0 unsafe-undefined)))
71735      ((mod_0 ns14_0) (module->namespace_0 mod_0 ns14_0))))))
71736(define 1/namespace-unprotect-module
71737  (let ((namespace-unprotect-module_0
71738         (|#%name|
71739          namespace-unprotect-module
71740          (lambda (insp17_0 mod18_0 ns16_0)
71741            (begin
71742              (let ((ns_0
71743                     (if (eq? ns16_0 unsafe-undefined)
71744                       (1/current-namespace)
71745                       ns16_0)))
71746                (begin
71747                  (if (inspector? insp17_0)
71748                    (void)
71749                    (raise-argument-error
71750                     'namespace-unprotect-module
71751                     "inspector?"
71752                     insp17_0))
71753                  (begin
71754                    (if (1/module-path? mod18_0)
71755                      (void)
71756                      (raise-argument-error
71757                       'namespace-unprotect-module
71758                       "module-path?"
71759                       mod18_0))
71760                    (begin
71761                      (if (1/namespace? ns_0)
71762                        (void)
71763                        (raise-argument-error
71764                         'namespace-unprotect-module
71765                         "namespace?"
71766                         ns_0))
71767                      (let ((name_0
71768                             (reference->resolved-module-path.1 #f mod18_0)))
71769                        (let ((phase_0 (namespace-phase ns_0)))
71770                          (let ((m-ns_0
71771                                 (namespace->module-namespace.1
71772                                  #f
71773                                  #f
71774                                  void
71775                                  ns_0
71776                                  name_0
71777                                  phase_0)))
71778                            (begin
71779                              (if m-ns_0
71780                                (void)
71781                                (raise-arguments-error
71782                                 'namespace-unprotect-module
71783                                 "module not instantiated"
71784                                 "module name"
71785                                 name_0))
71786                              (if (inspector-superior?
71787                                   insp17_0
71788                                   (namespace-inspector m-ns_0))
71789                                (set-namespace-inspector!
71790                                 m-ns_0
71791                                 (make-inspector (current-code-inspector)))
71792                                (void)))))))))))))))
71793    (|#%name|
71794     namespace-unprotect-module
71795     (case-lambda
71796      ((insp_0 mod_0)
71797       (begin (namespace-unprotect-module_0 insp_0 mod_0 unsafe-undefined)))
71798      ((insp_0 mod_0 ns16_0)
71799       (namespace-unprotect-module_0 insp_0 mod_0 ns16_0))))))
71800(define namespace->module/complain
71801  (lambda (who_0 ns_0 name_0)
71802    (let ((or-part_0 (namespace->module ns_0 name_0)))
71803      (if or-part_0
71804        or-part_0
71805        (raise-arguments-error
71806         who_0
71807         "unknown module in the current namespace"
71808         "name"
71809         name_0)))))
71810(define module-reference?
71811  (lambda (mod_0)
71812    (let ((or-part_0 (1/module-path? mod_0)))
71813      (if or-part_0
71814        or-part_0
71815        (let ((or-part_1 (1/module-path-index? mod_0)))
71816          (if or-part_1 or-part_1 (1/resolved-module-path? mod_0)))))))
71817(define module-reference-str
71818  "(or/c module-path? module-path-index? resolved-module-path?)")
71819(define reference->resolved-module-path.1
71820  (|#%name|
71821   reference->resolved-module-path
71822   (lambda (load?19_0 mod21_0)
71823     (begin
71824       (if (1/resolved-module-path? mod21_0)
71825         mod21_0
71826         (let ((mpi_0
71827                (if (1/module-path-index? mod21_0)
71828                  mod21_0
71829                  (1/module-path-index-join mod21_0 #f))))
71830           (1/module-path-index-resolve mpi_0 load?19_0)))))))
71831(define read-linklet-bundle-or-directory
71832  (lambda (in_0)
71833    (letrec*
71834     ((read-linklet-or-directory_0
71835       (|#%name|
71836        read-linklet-or-directory
71837        (lambda (initial?_0)
71838          (begin
71839            (let ((start-pos_0 (- (file-position in_0) 2)))
71840              (let ((vers-len_0 (min 63 (read-byte in_0))))
71841                (let ((vers_0 (read-bytes vers-len_0 in_0)))
71842                  (begin
71843                    (if (equal? vers_0 version-bytes$1)
71844                      (void)
71845                      (let ((app_0 (bytes->string/utf-8 vers_0 '#\x3f)))
71846                        (raise-read-error
71847                         '|loading code|
71848                         "version mismatch"
71849                         "expected"
71850                         (version)
71851                         "found"
71852                         app_0
71853                         "in"
71854                         (let ((n_0 (object-name in_0)))
71855                           (if (path? n_0)
71856                             (unquoted-printing-string (path->string n_0))
71857                             in_0)))))
71858                    (let ((vm-len_0 (min 63 (read-byte in_0))))
71859                      (let ((vm_0 (read-bytes vm-len_0 in_0)))
71860                        (let ((as-correlated-linklet?_0
71861                               (equal? vm_0 correlated-linklet-vm-bytes)))
71862                          (begin
71863                            (if (if as-correlated-linklet?_0
71864                                  as-correlated-linklet?_0
71865                                  (equal? vm_0 vm-bytes$1))
71866                              (void)
71867                              (let ((app_0 (bytes->string/utf-8 vm-bytes$1)))
71868                                (let ((app_1
71869                                       (bytes->string/utf-8 vm_0 '#\x3f)))
71870                                  (raise-read-error
71871                                   '|loading code|
71872                                   "virtual-machine mismatch"
71873                                   "expected"
71874                                   app_0
71875                                   "found"
71876                                   app_1
71877                                   "in"
71878                                   (let ((n_0 (object-name in_0)))
71879                                     (if (path? n_0)
71880                                       (unquoted-printing-string
71881                                        (path->string n_0))
71882                                       in_0))))))
71883                            (let ((tag_0 (read-byte in_0)))
71884                              (if (eqv? tag_0 66)
71885                                (let ((sha-1_0 (read-bytes 20 in_0)))
71886                                  (let ((b-ht_0
71887                                         (if as-correlated-linklet?_0
71888                                           (read-correlated-linklet-bundle-hash
71889                                            in_0)
71890                                           (read-linklet-bundle-hash in_0))))
71891                                    (begin
71892                                      (if (hash? b-ht_0)
71893                                        (void)
71894                                        (let ((app_0 (format "~s" b-ht_0)))
71895                                          (raise-read-error
71896                                           'read-linklet-bundle-hash
71897                                           "bad read result"
71898                                           "expected"
71899                                           "hash/c"
71900                                           "found"
71901                                           app_0
71902                                           "in"
71903                                           (let ((n_0 (object-name in_0)))
71904                                             (if (path? n_0)
71905                                               (path->string n_0)
71906                                               in_0)))))
71907                                      (1/hash->linklet-bundle
71908                                       (add-hash-code
71909                                        (if initial?_0
71910                                          (strip-submodule-references b-ht_0)
71911                                          b-ht_0)
71912                                        sha-1_0)))))
71913                                (if (eqv? tag_0 68)
71914                                  (begin
71915                                    (if initial?_0
71916                                      (void)
71917                                      (raise-read-error
71918                                       'read-compiled-linklet
71919                                       "expected a linklet bundle"))
71920                                    (read-bundle-directory_0 start-pos_0))
71921                                  (raise-read-error
71922                                   'read-compiled-linklet
71923                                   "expected a `B` or `D`"))))))))))))))))
71924      (read-bundle-directory_0
71925       (|#%name|
71926        read-bundle-directory
71927        (lambda (pos_0)
71928          (begin
71929            (let ((count_0 (read-int in_0)))
71930              (let ((position-to-name_0
71931                     (letrec*
71932                      ((loop_0
71933                        (|#%name|
71934                         loop
71935                         (lambda (count_1 accum_0)
71936                           (begin
71937                             (if (zero? count_1)
71938                               accum_0
71939                               (let ((bstr_0
71940                                      (read-bytes (read-int in_0) in_0)))
71941                                 (let ((offset_0 (read-int in_0)))
71942                                   (let ((len_0 (read-int in_0)))
71943                                     (begin
71944                                       (read-int in_0)
71945                                       (read-int in_0)
71946                                       (let ((app_0 (sub1 count_1)))
71947                                         (loop_0
71948                                          app_0
71949                                          (hash-set
71950                                           accum_0
71951                                           offset_0
71952                                           bstr_0)))))))))))))
71953                      (loop_0 count_0 (hasheqv)))))
71954                (letrec*
71955                 ((loop_0
71956                   (|#%name|
71957                    loop
71958                    (lambda (count_1 accum_0)
71959                      (begin
71960                        (if (zero? count_1)
71961                          (list->bundle-directory
71962                           accum_0
71963                           1/hash->linklet-directory)
71964                          (let ((name_0
71965                                 (hash-ref
71966                                  position-to-name_0
71967                                  (- (file-position in_0) pos_0)
71968                                  #f)))
71969                            (begin
71970                              (if name_0
71971                                (void)
71972                                (raise-read-error
71973                                 'read-compiled-linklet
71974                                 "bundle not at an expected file position"))
71975                              (let ((bstr_0 (read-bytes 2 in_0)))
71976                                (let ((bundle_0
71977                                       (if (equal? #vu8(35 126) bstr_0)
71978                                         (read-linklet-or-directory_0 #f)
71979                                         (if (equal? #vu8(35 102) bstr_0)
71980                                           #f
71981                                           (raise-read-error
71982                                            'read-compiled-linklet
71983                                            "expected a `#~` or `#f` for a bundle")))))
71984                                  (let ((app_0 (sub1 count_1)))
71985                                    (loop_0
71986                                     app_0
71987                                     (cons
71988                                      (cons (decode-name name_0 0) bundle_0)
71989                                      accum_0)))))))))))))
71990                 (loop_0 count_0 '())))))))))
71991     (read-linklet-or-directory_0 #t))))
71992(define read-int
71993  (lambda (in_0) (integer-bytes->integer (read-bytes 4 in_0) #f #f)))
71994(define decode-name
71995  (lambda (bstr_0 pos_0)
71996    (let ((blen_0 (unsafe-bytes-length bstr_0)))
71997      (let ((bad-bundle_0
71998             (|#%name|
71999              bad-bundle
72000              (lambda ()
72001                (begin
72002                  (raise-read-error
72003                   'read-compiled-linklet
72004                   "malformed bundle"))))))
72005        (if (= pos_0 blen_0)
72006          '()
72007          (if (> pos_0 blen_0)
72008            (bad-bundle_0)
72009            (let ((len_0 (unsafe-bytes-ref bstr_0 pos_0)))
72010              (begin
72011                (if (> (+ pos_0 len_0 1) blen_0) (bad-bundle_0) (void))
72012                (if (= len_0 255)
72013                  (let ((len_1
72014                         (let ((app_0 (add1 pos_0)))
72015                           (integer-bytes->integer
72016                            bstr_0
72017                            #f
72018                            #f
72019                            app_0
72020                            (+ pos_0 5)))))
72021                    (begin
72022                      (if (> (+ pos_0 len_1 1) blen_0) (bad-bundle_0) (void))
72023                      (let ((app_0
72024                             (string->symbol
72025                              (bytes->string/utf-8
72026                               (let ((app_0 (+ pos_0 5)))
72027                                 (subbytes bstr_0 app_0 (+ pos_0 5 len_1)))
72028                               '#\x3f))))
72029                        (cons app_0 (decode-name bstr_0 (+ pos_0 5 len_1))))))
72030                  (let ((app_0
72031                         (string->symbol
72032                          (bytes->string/utf-8
72033                           (let ((app_0 (add1 pos_0)))
72034                             (subbytes bstr_0 app_0 (+ pos_0 1 len_0)))
72035                           '#\x3f))))
72036                    (cons
72037                     app_0
72038                     (decode-name bstr_0 (+ pos_0 1 len_0)))))))))))))
72039(define list->bundle-directory
72040  (lambda (l_0 hash->linklet-directory_0)
72041    (letrec*
72042     ((loop_0
72043       (|#%name|
72044        loop
72045        (lambda (l_1 prev-len_0 stack_0 accum_0)
72046          (begin
72047            (begin
72048              (if (null? l_1)
72049                (raise-read-error
72050                 'read-compiled-linklet
72051                 "invalid bundle sequence")
72052                (void))
72053              (let ((p_0 (car l_1)))
72054                (let ((path_0 (car p_0)))
72055                  (let ((v_0 (cdr p_0)))
72056                    (let ((len_0 (length path_0)))
72057                      (begin
72058                        (if (< len_0 prev-len_0)
72059                          (raise-read-error
72060                           'read-compiled-linklet
72061                           "invalid bundle sequence")
72062                          (void))
72063                        (letrec*
72064                         ((sloop_0
72065                           (|#%name|
72066                            sloop
72067                            (lambda (prev-len_1 stack_1 accum_1)
72068                              (begin
72069                                (if (> len_0 (add1 prev-len_1))
72070                                  (let ((app_0 (add1 prev-len_1)))
72071                                    (let ((app_1 (cons accum_1 stack_1)))
72072                                      (sloop_0 app_0 app_1 (hasheq))))
72073                                  (let ((path_1
72074                                         (list-tail
72075                                          path_0
72076                                          (max 0 (sub1 prev-len_1)))))
72077                                    (if (= len_0 prev-len_1)
72078                                      (let ((accum_2
72079                                             (if v_0
72080                                               (hash-set accum_1 #f v_0)
72081                                               accum_1)))
72082                                        (if (zero? len_0)
72083                                          (|#%app|
72084                                           hash->linklet-directory_0
72085                                           accum_2)
72086                                          (let ((app_0 (cdr l_1)))
72087                                            (let ((app_1 (sub1 prev-len_1)))
72088                                              (let ((app_2 (cdr stack_1)))
72089                                                (loop_0
72090                                                 app_0
72091                                                 app_1
72092                                                 app_2
72093                                                 (let ((app_3 (car stack_1)))
72094                                                   (let ((app_4 (car path_1)))
72095                                                     (hash-set
72096                                                      app_3
72097                                                      app_4
72098                                                      (|#%app|
72099                                                       hash->linklet-directory_0
72100                                                       accum_2))))))))))
72101                                      (let ((path_2
72102                                             (if (positive? prev-len_1)
72103                                               (cdr path_1)
72104                                               path_1)))
72105                                        (let ((app_0 (cdr l_1)))
72106                                          (loop_0
72107                                           app_0
72108                                           prev-len_1
72109                                           stack_1
72110                                           (let ((app_1 (car path_2)))
72111                                             (hash-set
72112                                              accum_1
72113                                              app_1
72114                                              (|#%app|
72115                                               hash->linklet-directory_0
72116                                               (if v_0
72117                                                 (hasheq #f v_0)
72118                                                 (hasheq))))))))))))))))
72119                         (sloop_0 prev-len_0 stack_0 accum_0)))))))))))))
72120     (loop_0 l_0 0 '() (hasheq)))))
72121(define strip-submodule-references
72122  (lambda (b-ht_0) (hash-remove (hash-remove b-ht_0 'pre) 'post)))
72123(define add-hash-code
72124  (lambda (b-ht_0 sha-1_0)
72125    (if (bytes=?
72126         sha-1_0
72127         #vu8(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
72128      b-ht_0
72129      (hash-set b-ht_0 'hash-code sha-1_0))))
72130(define raise-read-error
72131  (lambda (who_0 msg_0 . details_0)
72132    (raise
72133     (let ((app_0
72134            (let ((app_0 (format "~a: ~a" who_0 msg_0)))
72135              (apply
72136               string-append
72137               app_0
72138               (letrec*
72139                ((loop_0
72140                  (|#%name|
72141                   loop
72142                   (lambda (details_1)
72143                     (begin
72144                       (if (null? details_1)
72145                         null
72146                         (let ((app_1 (car details_1)))
72147                           (let ((app_2 (format "~v" (cadr details_1))))
72148                             (list*
72149                              "\n  "
72150                              app_1
72151                              ": "
72152                              app_2
72153                              (loop_0 (cddr details_1)))))))))))
72154                (loop_0 details_0))))))
72155       (|#%app| exn:fail:read app_0 (current-continuation-marks) null)))))
72156(define read-syntax$1
72157  (|#%name|
72158   read-syntax
72159   (lambda (src_0 in_0)
72160     (begin
72161       (if (default-read-handler? in_0)
72162         (begin
72163           (maybe-flush-stdout in_0)
72164           (read*.1 #t #f #f unsafe-undefined #f src_0 in_0))
72165         (values (|#%app| (port-read-handler in_0) in_0 src_0)))))))
72166(define read-syntax/recursive$1
72167  (|#%name|
72168   read-syntax/recursive
72169   (lambda (src_0 in_0 start_0 readtable_0 graph?_0)
72170     (begin
72171       (let ((temp27_0 (not graph?_0)))
72172         (read*.1 #t start_0 temp27_0 readtable_0 #t src_0 in_0))))))
72173(define read$1
72174  (|#%name|
72175   read
72176   (lambda (in_0)
72177     (begin
72178       (if (default-read-handler? in_0)
72179         (begin
72180           (maybe-flush-stdout in_0)
72181           (read*.1 #f #f #f unsafe-undefined #f #f in_0))
72182         (values (|#%app| (port-read-handler in_0) in_0)))))))
72183(define read/recursive$1
72184  (|#%name|
72185   read/recursive
72186   (lambda (in_0 start_0 readtable_0 graph?_0)
72187     (begin
72188       (let ((temp35_0 (not graph?_0)))
72189         (read*.1 #f start_0 temp35_0 readtable_0 #t #f in_0))))))
72190(define read*.1
72191  (|#%name|
72192   read*
72193   (lambda (for-syntax?1_0
72194            init-c4_0
72195            local-graph?6_0
72196            readtable5_0
72197            recursive?2_0
72198            source3_0
72199            in13_0)
72200     (begin
72201       (let ((readtable_0
72202              (if (eq? readtable5_0 unsafe-undefined)
72203                (1/current-readtable)
72204                readtable5_0)))
72205         (begin
72206           (if log-performance? (start-performance-region 'read) (void))
72207           (begin0
72208             (let ((temp40_0 (if for-syntax?1_0 read-to-syntax #f)))
72209               (let ((read-module-declared?47_0 read-module-declared?))
72210                 (let ((temp40_1 temp40_0))
72211                   (read.1
72212                    call-with-root-namespace
72213                    read-coerce
72214                    read-coerce-key
72215                    locked-dynamic-require
72216                    for-syntax?1_0
72217                    init-c4_0
72218                    unsafe-undefined
72219                    local-graph?6_0
72220                    read-module-declared?47_0
72221                    unsafe-undefined
72222                    read-linklet-bundle-or-directory
72223                    readtable_0
72224                    recursive?2_0
72225                    source3_0
72226                    temp40_1
72227                    in13_0))))
72228             (if log-performance? (end-performance-region) (void)))))))))
72229(define read-language$1
72230  (|#%name|
72231   read-language
72232   (lambda (in_0 fail-thunk_0)
72233     (begin
72234       (let ((read-module-declared?57_0 read-module-declared?))
72235         (read-language.1
72236          call-with-root-namespace
72237          read-coerce
72238          read-coerce-key
72239          locked-dynamic-require
72240          #t
72241          read-module-declared?57_0
72242          read-linklet-bundle-or-directory
72243          read-to-syntax
72244          in_0
72245          fail-thunk_0))))))
72246(define read-to-syntax
72247  (lambda (s-exp_0 srcloc_0 rep_0)
72248    (if (syntax?$1 empty-syntax)
72249      (let ((content*60_0 (datum-intern-literal s-exp_0)))
72250        (let ((props62_0
72251               (if (eqv? rep_0 '#\x5b)
72252                 original-square-props
72253                 (if (eqv? rep_0 '#\x7b)
72254                   original-curly-props
72255                   original-props))))
72256          (let ((content*60_1 content*60_0))
72257            (syntax2.1
72258             content*60_1
72259             (syntax-scopes empty-syntax)
72260             (syntax-shifted-multi-scopes empty-syntax)
72261             (syntax-mpi-shifts empty-syntax)
72262             srcloc_0
72263             props62_0
72264             (syntax-inspector empty-syntax)))))
72265      (raise-argument-error 'struct-copy "syntax?" empty-syntax))))
72266(define original-props
72267  (syntax-props (syntax-property$1 empty-syntax original-property-sym #t)))
72268(define original-square-props
72269  (syntax-props
72270   (syntax-property$1
72271    (syntax-property$1 empty-syntax original-property-sym #t)
72272    'paren-shape
72273    '#\x5b)))
72274(define original-curly-props
72275  (syntax-props
72276   (syntax-property$1
72277    (syntax-property$1 empty-syntax original-property-sym #t)
72278    'paren-shape
72279    '#\x7b)))
72280(define read-module-declared?
72281  (lambda (mod-path_0) (1/module-declared? mod-path_0 #t)))
72282(define read-coerce
72283  (lambda (for-syntax?_0 v_0 srcloc_0)
72284    (if (not for-syntax?_0)
72285      (if (syntax?$1 v_0) (syntax->datum$1 v_0) v_0)
72286      (if (syntax?$1 v_0)
72287        v_0
72288        (if (list? v_0)
72289          (read-to-syntax
72290           (reverse$1
72291            (begin
72292              (letrec*
72293               ((for-loop_0
72294                 (|#%name|
72295                  for-loop
72296                  (lambda (fold-var_0 lst_0)
72297                    (begin
72298                      (if (pair? lst_0)
72299                        (let ((e_0 (unsafe-car lst_0)))
72300                          (let ((rest_0 (unsafe-cdr lst_0)))
72301                            (let ((fold-var_1
72302                                   (let ((fold-var_1
72303                                          (cons
72304                                           (read-coerce #t e_0 srcloc_0)
72305                                           fold-var_0)))
72306                                     (values fold-var_1))))
72307                              (for-loop_0 fold-var_1 rest_0))))
72308                        fold-var_0))))))
72309               (for-loop_0 null v_0))))
72310           srcloc_0
72311           #f)
72312          (if (pair? v_0)
72313            (read-to-syntax
72314             (let ((app_0 (read-coerce #t (car v_0) srcloc_0)))
72315               (cons app_0 (read-coerce #t (cdr v_0) srcloc_0)))
72316             srcloc_0
72317             #f)
72318            (read-to-syntax v_0 srcloc_0 #f)))))))
72319(define read-coerce-key
72320  (lambda (for-syntax?_0 k_0)
72321    (if for-syntax?_0 (datum-intern-literal k_0) k_0)))
72322(define default-read-handler #f)
72323(define default-read-handler?
72324  (lambda (in_0)
72325    (if (not default-read-handler)
72326      (begin (set! default-read-handler (port-read-handler in_0)) #t)
72327      (let ((app_0 default-read-handler))
72328        (eq? app_0 (port-read-handler in_0))))))
72329(define orig-input-port (current-input-port))
72330(define orig-output-port (current-output-port))
72331(define orig-error-port (current-error-port))
72332(define maybe-flush-stdout
72333  (lambda (in_0)
72334    (if (eq? in_0 orig-input-port)
72335      (begin (flush-output orig-output-port) (flush-output orig-error-port))
72336      (void))))
72337(define call-with-root-namespace
72338  (lambda (thunk_0)
72339    (let ((root-ns_0 (namespace-root-namespace (1/current-namespace))))
72340      (if root-ns_0
72341        (with-continuation-mark*
72342         authentic
72343         parameterization-key
72344         (extend-parameterization
72345          (continuation-mark-set-first #f parameterization-key)
72346          1/current-namespace
72347          root-ns_0)
72348         (|#%app| thunk_0))
72349        (|#%app| thunk_0)))))
72350(define locked-dynamic-require
72351  (let ((locked-dynamic-require_0
72352         (|#%name|
72353          locked-dynamic-require
72354          (lambda (mod16_0 sym17_0 fail-thunk15_0)
72355            (begin
72356              (registry-call-with-lock
72357               (namespace-module-registry$1 (1/current-namespace))
72358               (lambda ()
72359                 (if fail-thunk15_0
72360                   (1/dynamic-require mod16_0 sym17_0 fail-thunk15_0)
72361                   (1/dynamic-require mod16_0 sym17_0)))))))))
72362    (case-lambda
72363     ((mod_0 sym_0) (locked-dynamic-require_0 mod_0 sym_0 #f))
72364     ((mod_0 sym_0 fail-thunk15_0)
72365      (locked-dynamic-require_0 mod_0 sym_0 fail-thunk15_0)))))
72366(define 1/read-syntax
72367  (let ((read-syntax_0
72368         (|#%name|
72369          read-syntax
72370          (lambda (src1_0 in2_0)
72371            (begin
72372              (let ((src_0
72373                     (if (eq? src1_0 unsafe-undefined)
72374                       (object-name (current-input-port))
72375                       src1_0)))
72376                (let ((in_0
72377                       (if (eq? in2_0 unsafe-undefined)
72378                         (current-input-port)
72379                         in2_0)))
72380                  (begin
72381                    (if (input-port? in_0)
72382                      (void)
72383                      (raise-argument-error 'read-syntax "input-port?" in_0))
72384                    (read-syntax$1 src_0 in_0)))))))))
72385    (|#%name|
72386     read-syntax
72387     (case-lambda
72388      (() (begin (read-syntax_0 unsafe-undefined unsafe-undefined)))
72389      ((src_0 in2_0) (read-syntax_0 src_0 in2_0))
72390      ((src1_0) (read-syntax_0 src1_0 unsafe-undefined))))))
72391(define 1/read-syntax/recursive
72392  (let ((read-syntax/recursive_0
72393         (|#%name|
72394          read-syntax/recursive
72395          (lambda (src3_0 in4_0 start5_0 readtable6_0 graph?7_0)
72396            (begin
72397              (let ((src_0
72398                     (if (eq? src3_0 unsafe-undefined)
72399                       (object-name (current-input-port))
72400                       src3_0)))
72401                (let ((in_0
72402                       (if (eq? in4_0 unsafe-undefined)
72403                         (current-input-port)
72404                         in4_0)))
72405                  (let ((readtable_0
72406                         (if (eq? readtable6_0 unsafe-undefined)
72407                           (1/current-readtable)
72408                           readtable6_0)))
72409                    (begin
72410                      (if (input-port? in_0)
72411                        (void)
72412                        (raise-argument-error
72413                         'read-syntax/recursive
72414                         "input-port?"
72415                         in_0))
72416                      (if (let ((or-part_0 (not start5_0)))
72417                            (if or-part_0 or-part_0 (char? start5_0)))
72418                        (void)
72419                        (raise-argument-error
72420                         'read-syntax/recursive
72421                         "(or/c char? #f)"
72422                         start5_0))
72423                      (if (let ((or-part_0 (not readtable_0)))
72424                            (if or-part_0
72425                              or-part_0
72426                              (1/readtable? readtable_0)))
72427                        (void)
72428                        (raise-argument-error
72429                         'read-syntax/recursive
72430                         "(or/c readtable? #f)"
72431                         readtable_0))
72432                      (read-syntax/recursive$1
72433                       src_0
72434                       in_0
72435                       start5_0
72436                       readtable_0
72437                       graph?7_0))))))))))
72438    (|#%name|
72439     read-syntax/recursive
72440     (case-lambda
72441      (()
72442       (begin
72443         (read-syntax/recursive_0
72444          unsafe-undefined
72445          unsafe-undefined
72446          #f
72447          unsafe-undefined
72448          #t)))
72449      ((src_0 in_0 start_0 readtable_0 graph?7_0)
72450       (read-syntax/recursive_0 src_0 in_0 start_0 readtable_0 graph?7_0))
72451      ((src_0 in_0 start_0 readtable6_0)
72452       (read-syntax/recursive_0 src_0 in_0 start_0 readtable6_0 #t))
72453      ((src_0 in_0 start5_0)
72454       (read-syntax/recursive_0 src_0 in_0 start5_0 unsafe-undefined #t))
72455      ((src_0 in4_0)
72456       (read-syntax/recursive_0 src_0 in4_0 #f unsafe-undefined #t))
72457      ((src3_0)
72458       (read-syntax/recursive_0
72459        src3_0
72460        unsafe-undefined
72461        #f
72462        unsafe-undefined
72463        #t))))))
72464(define 1/read
72465  (let ((read_0
72466         (|#%name|
72467          read
72468          (lambda (in8_0)
72469            (begin
72470              (let ((in_0
72471                     (if (eq? in8_0 unsafe-undefined)
72472                       (current-input-port)
72473                       in8_0)))
72474                (begin
72475                  (if (input-port? in_0)
72476                    (void)
72477                    (raise-argument-error 'read "input-port?" in_0))
72478                  (read$1 in_0))))))))
72479    (|#%name|
72480     read
72481     (case-lambda
72482      (() (begin (read_0 unsafe-undefined)))
72483      ((in8_0) (read_0 in8_0))))))
72484(define 1/read/recursive
72485  (let ((read/recursive_0
72486         (|#%name|
72487          read/recursive
72488          (lambda (in9_0 start10_0 readtable11_0 graph?12_0)
72489            (begin
72490              (let ((in_0
72491                     (if (eq? in9_0 unsafe-undefined)
72492                       (current-input-port)
72493                       in9_0)))
72494                (let ((readtable_0
72495                       (if (eq? readtable11_0 unsafe-undefined)
72496                         (1/current-readtable)
72497                         readtable11_0)))
72498                  (begin
72499                    (if (input-port? in_0)
72500                      (void)
72501                      (raise-argument-error
72502                       'read/recursive
72503                       "input-port?"
72504                       in_0))
72505                    (if (let ((or-part_0 (not start10_0)))
72506                          (if or-part_0 or-part_0 (char? start10_0)))
72507                      (void)
72508                      (raise-argument-error
72509                       'read/recursive
72510                       "(or/c char? #f)"
72511                       start10_0))
72512                    (if (let ((or-part_0 (not readtable_0)))
72513                          (if or-part_0 or-part_0 (1/readtable? readtable_0)))
72514                      (void)
72515                      (raise-argument-error
72516                       'read/recursive
72517                       "(or/c readtable? #f)"
72518                       readtable_0))
72519                    (read/recursive$1
72520                     in_0
72521                     start10_0
72522                     readtable_0
72523                     graph?12_0)))))))))
72524    (|#%name|
72525     read/recursive
72526     (case-lambda
72527      (() (begin (read/recursive_0 unsafe-undefined #f unsafe-undefined #t)))
72528      ((in_0 start_0 readtable_0 graph?12_0)
72529       (read/recursive_0 in_0 start_0 readtable_0 graph?12_0))
72530      ((in_0 start_0 readtable11_0)
72531       (read/recursive_0 in_0 start_0 readtable11_0 #t))
72532      ((in_0 start10_0) (read/recursive_0 in_0 start10_0 unsafe-undefined #t))
72533      ((in9_0) (read/recursive_0 in9_0 #f unsafe-undefined #t))))))
72534(define 1/read-language
72535  (let ((read-language_0
72536         (|#%name|
72537          read-language
72538          (lambda (in13_0 fail-thunk14_0)
72539            (begin
72540              (let ((in_0
72541                     (if (eq? in13_0 unsafe-undefined)
72542                       (current-input-port)
72543                       in13_0)))
72544                (let ((fail-thunk_0
72545                       (if (eq? fail-thunk14_0 unsafe-undefined)
72546                         read-language-fail-thunk
72547                         fail-thunk14_0)))
72548                  (begin
72549                    (if (input-port? in_0)
72550                      (void)
72551                      (raise-argument-error 'read-language "input-port?" in_0))
72552                    (if (if (procedure? fail-thunk_0)
72553                          (procedure-arity-includes? fail-thunk_0 0)
72554                          #f)
72555                      (void)
72556                      (raise-argument-error
72557                       'read-language
72558                       "(procedure-arity-includes/c 0)"
72559                       fail-thunk_0))
72560                    (read-language$1
72561                     in_0
72562                     (if (eq? fail-thunk_0 read-language-fail-thunk)
72563                       #f
72564                       fail-thunk_0))))))))))
72565    (|#%name|
72566     read-language
72567     (case-lambda
72568      (() (begin (read-language_0 unsafe-undefined unsafe-undefined)))
72569      ((in_0 fail-thunk14_0) (read-language_0 in_0 fail-thunk14_0))
72570      ((in13_0) (read-language_0 in13_0 unsafe-undefined))))))
72571(define read-language-fail-thunk (lambda () (error "fail")))
72572(define declare-primitive-module!
72573  (lambda (name_0 inst_0 in-ns_0 protected_0 cross-phase-persistent?_0)
72574    (let ((mpi_0 (1/module-path-index-join (list 'quote name_0) #f)))
72575      (let ((temp2_0
72576             (let ((temp4_0 (1/current-module-declare-source)))
72577               (let ((temp6_0 (zero? (hash-count protected_0))))
72578                 (let ((temp8_0
72579                        (hasheqv
72580                         0
72581                         (let ((lst_0 (instance-variable-names inst_0)))
72582                           (begin
72583                             (letrec*
72584                              ((for-loop_0
72585                                (|#%name|
72586                                 for-loop
72587                                 (lambda (table_0 lst_1)
72588                                   (begin
72589                                     (if (pair? lst_1)
72590                                       (let ((sym_0 (unsafe-car lst_1)))
72591                                         (let ((rest_0 (unsafe-cdr lst_1)))
72592                                           (let ((table_1
72593                                                  (let ((table_1
72594                                                         (call-with-values
72595                                                          (lambda ()
72596                                                            (let ((binding_0
72597                                                                   (make-module-binding.1
72598                                                                    #f
72599                                                                    null
72600                                                                    #f
72601                                                                    #f
72602                                                                    unsafe-undefined
72603                                                                    unsafe-undefined
72604                                                                    0
72605                                                                    unsafe-undefined
72606                                                                    mpi_0
72607                                                                    0
72608                                                                    sym_0)))
72609                                                              (values
72610                                                               sym_0
72611                                                               (if (hash-ref
72612                                                                    protected_0
72613                                                                    sym_0
72614                                                                    #f)
72615                                                                 (provided1.1
72616                                                                  binding_0
72617                                                                  #t
72618                                                                  #f)
72619                                                                 binding_0))))
72620                                                          (case-lambda
72621                                                           ((key_0 val_0)
72622                                                            (hash-set
72623                                                             table_0
72624                                                             key_0
72625                                                             val_0))
72626                                                           (args
72627                                                            (raise-binding-result-arity-error
72628                                                             2
72629                                                             args))))))
72630                                                    (values table_1))))
72631                                             (for-loop_0 table_1 rest_0))))
72632                                       table_0))))))
72633                              (for-loop_0 hash2725 lst_0)))))))
72634                   (let ((temp9_0
72635                          (lambda (data-box_0
72636                                   ns_0
72637                                   phase-shift_0
72638                                   phase-level_0
72639                                   self_0
72640                                   bulk-binding-registry_0
72641                                   insp_0)
72642                            (if (= 0 phase-level_0)
72643                              (begin
72644                                (let ((lst_0 (instance-variable-names inst_0)))
72645                                  (begin
72646                                    (letrec*
72647                                     ((for-loop_0
72648                                       (|#%name|
72649                                        for-loop
72650                                        (lambda (lst_1)
72651                                          (begin
72652                                            (if (pair? lst_1)
72653                                              (let ((sym_0 (unsafe-car lst_1)))
72654                                                (let ((rest_0
72655                                                       (unsafe-cdr lst_1)))
72656                                                  (begin
72657                                                    (let ((val_0
72658                                                           (instance-variable-value
72659                                                            inst_0
72660                                                            sym_0)))
72661                                                      (namespace-set-variable!
72662                                                       ns_0
72663                                                       0
72664                                                       sym_0
72665                                                       val_0))
72666                                                    (for-loop_0 rest_0))))
72667                                              (values)))))))
72668                                     (for-loop_0 lst_0))))
72669                                (void))
72670                              (void)))))
72671                     (let ((temp8_1 temp8_0)
72672                           (temp6_1 temp6_0)
72673                           (temp4_1 temp4_0))
72674                       (make-module.1
72675                        cross-phase-persistent?_0
72676                        void
72677                        unsafe-undefined
72678                        temp9_0
72679                        #f
72680                        0
72681                        0
72682                        temp6_1
72683                        unsafe-undefined
72684                        #f
72685                        void
72686                        #f
72687                        temp8_1
72688                        null
72689                        mpi_0
72690                        temp4_1
72691                        null
72692                        #f))))))))
72693        (let ((temp3_0 (substitute-module-declare-name name_0)))
72694          (let ((temp2_1 temp2_0))
72695            (declare-module!.1 #t in-ns_0 temp2_1 temp3_0)))))))
72696(define-values
72697 (1/prop:exn:missing-module
72698  1/exn:missing-module?
72699  1/exn:missing-module-accessor)
72700 (make-struct-type-property
72701  'missing-module
72702  (lambda (v_0 info_0)
72703    (begin
72704      (if (if (procedure? v_0) (procedure-arity-includes? v_0 1) #f)
72705        (void)
72706        (raise-argument-error
72707         'guard-for-prop:exn:missing-module
72708         "(procedure-arity-includes/c 1)"
72709         v_0))
72710      v_0))))
72711(define-values
72712 (1/struct:exn:fail:filesystem:missing-module
72713  1/make-exn:fail:filesystem:missing-module
72714  1/exn:fail:filesystem:missing-module?
72715  1/exn:fail:filesystem:missing-module-path)
72716 (call-with-values
72717  (lambda ()
72718    (make-struct-type
72719     'exn:fail:filesystem:missing-module
72720     struct:exn:fail:filesystem
72721     1
72722     0
72723     #f
72724     (list
72725      (cons
72726       1/prop:exn:missing-module
72727       (lambda (e_0)
72728         (|#%app|
72729          (check-not-unsafe-undefined
72730           1/exn:fail:filesystem:missing-module-path
72731           '1/exn:fail:filesystem:missing-module-path)
72732          e_0))))
72733     #f
72734     #f
72735     '(0)
72736     #f
72737     'exn:fail:filesystem:missing-module))
72738  (case-lambda
72739   ((struct:_0 make-_0 ?_0 -ref_0 -set!_0)
72740    (values struct:_0 make-_0 ?_0 (make-struct-field-accessor -ref_0 0 'path)))
72741   (args (raise-binding-result-arity-error 5 args)))))
72742(define-values
72743 (1/struct:exn:fail:syntax:missing-module
72744  1/make-exn:fail:syntax:missing-module
72745  1/exn:fail:syntax:missing-module?
72746  1/exn:fail:syntax:missing-module-path)
72747 (call-with-values
72748  (lambda ()
72749    (make-struct-type
72750     'exn:fail:syntax:missing-module
72751     1/struct:exn:fail:syntax
72752     1
72753     0
72754     #f
72755     (list
72756      (cons
72757       1/prop:exn:missing-module
72758       (lambda (e_0)
72759         (|#%app|
72760          (check-not-unsafe-undefined
72761           1/exn:fail:syntax:missing-module-path
72762           '1/exn:fail:syntax:missing-module-path)
72763          e_0))))
72764     #f
72765     #f
72766     '(0)
72767     #f
72768     'exn:fail:syntax:missing-module))
72769  (case-lambda
72770   ((struct:_0 make-_0 ?_0 -ref_0 -set!_0)
72771    (values struct:_0 make-_0 ?_0 (make-struct-field-accessor -ref_0 0 'path)))
72772   (args (raise-binding-result-arity-error 5 args)))))
72773(define 1/current-module-path-for-load
72774  (make-parameter
72775   #f
72776   (lambda (v_0)
72777     (begin
72778       (if (let ((or-part_0 (not v_0)))
72779             (if or-part_0
72780               or-part_0
72781               (let ((or-part_1 (1/module-path? v_0)))
72782                 (if or-part_1
72783                   or-part_1
72784                   (if (syntax?$1 v_0)
72785                     (1/module-path? (syntax->datum$1 v_0))
72786                     #f)))))
72787         (void)
72788         (raise-argument-error
72789          'current-module-path-for-load
72790          (string-append
72791           "(or/c module-path?"
72792           " (and/c syntax? (lambda (stx) (module-path? (syntax->datum stx))))"
72793           " #f)")
72794          v_0))
72795       v_0))
72796   'current-module-path-for-load))
72797(define maybe-raise-missing-module
72798  (lambda (name_0 filename_0 pre_0 rel_0 post_0 errstr_0)
72799    (let ((path_0 (1/current-module-path-for-load)))
72800      (if path_0
72801        (begin
72802          (if (syntax?$1 path_0)
72803            (raise
72804             (let ((app_0
72805                    (let ((app_0
72806                           (string-append
72807                            "~a: cannot open module file\n"
72808                            "  module path: ~a\n"
72809                            "  path: ~a~a~a~a\n"
72810                            "  system error: ~a")))
72811                      (let ((app_1
72812                             (if (syntax-srcloc$1 path_0)
72813                               (srcloc->string (syntax-srcloc$1 path_0))
72814                               name_0)))
72815                        (format
72816                         app_0
72817                         app_1
72818                         (syntax->datum$1 path_0)
72819                         filename_0
72820                         pre_0
72821                         rel_0
72822                         post_0
72823                         errstr_0)))))
72824               (let ((app_1 (current-continuation-marks)))
72825                 (let ((app_2 (list path_0)))
72826                   (|#%app|
72827                    1/make-exn:fail:syntax:missing-module
72828                    app_0
72829                    app_1
72830                    app_2
72831                    (syntax->datum$1 path_0))))))
72832            (void))
72833          (raise
72834           (let ((app_0
72835                  (format
72836                   (string-append
72837                    "~a: cannot open module file\n"
72838                    "  module path: ~a\n"
72839                    "  path: ~a~a~a~a\n"
72840                    "  system error: ~a")
72841                   name_0
72842                   path_0
72843                   filename_0
72844                   pre_0
72845                   rel_0
72846                   post_0
72847                   errstr_0)))
72848             (|#%app|
72849              1/make-exn:fail:filesystem:missing-module
72850              app_0
72851              (current-continuation-marks)
72852              path_0))))
72853        (void)))))
72854(define 1/local-expand
72855  (let ((local-expand_0
72856         (|#%name|
72857          local-expand
72858          (lambda (s2_0 context3_0 stop-ids4_0 intdefs1_0)
72859            (begin
72860              (do-local-expand.1
72861               #f
72862               #f
72863               #t
72864               unsafe-undefined
72865               #f
72866               #f
72867               #f
72868               'local-expand
72869               s2_0
72870               context3_0
72871               stop-ids4_0
72872               intdefs1_0))))))
72873    (|#%name|
72874     local-expand
72875     (case-lambda
72876      ((s_0 context_0 stop-ids_0)
72877       (begin (local-expand_0 s_0 context_0 stop-ids_0 #f)))
72878      ((s_0 context_0 stop-ids_0 intdefs1_0)
72879       (local-expand_0 s_0 context_0 stop-ids_0 intdefs1_0))))))
72880(define 1/local-expand/capture-lifts
72881  (let ((local-expand/capture-lifts_0
72882         (|#%name|
72883          local-expand/capture-lifts
72884          (lambda (s7_0 context8_0 stop-ids9_0 intdefs5_0 lift-key6_0)
72885            (begin
72886              (let ((lift-key_0
72887                     (if (eq? lift-key6_0 unsafe-undefined)
72888                       (generate-lift-key)
72889                       lift-key6_0)))
72890                (do-local-expand.1
72891                 #f
72892                 #t
72893                 #t
72894                 lift-key_0
72895                 #f
72896                 #f
72897                 #f
72898                 'local-expand
72899                 s7_0
72900                 context8_0
72901                 stop-ids9_0
72902                 intdefs5_0)))))))
72903    (|#%name|
72904     local-expand/capture-lifts
72905     (case-lambda
72906      ((s_0 context_0 stop-ids_0)
72907       (begin
72908         (local-expand/capture-lifts_0
72909          s_0
72910          context_0
72911          stop-ids_0
72912          #f
72913          unsafe-undefined)))
72914      ((s_0 context_0 stop-ids_0 intdefs_0 lift-key6_0)
72915       (local-expand/capture-lifts_0
72916        s_0
72917        context_0
72918        stop-ids_0
72919        intdefs_0
72920        lift-key6_0))
72921      ((s_0 context_0 stop-ids_0 intdefs5_0)
72922       (local-expand/capture-lifts_0
72923        s_0
72924        context_0
72925        stop-ids_0
72926        intdefs5_0
72927        unsafe-undefined))))))
72928(define 1/local-transformer-expand
72929  (let ((local-transformer-expand_0
72930         (|#%name|
72931          local-transformer-expand
72932          (lambda (s11_0 context12_0 stop-ids13_0 intdefs10_0)
72933            (begin
72934              (do-local-expand.1
72935               #t
72936               #f
72937               #t
72938               unsafe-undefined
72939               #f
72940               #f
72941               #f
72942               'local-expand
72943               s11_0
72944               context12_0
72945               stop-ids13_0
72946               intdefs10_0))))))
72947    (|#%name|
72948     local-transformer-expand
72949     (case-lambda
72950      ((s_0 context_0 stop-ids_0)
72951       (begin (local-transformer-expand_0 s_0 context_0 stop-ids_0 #f)))
72952      ((s_0 context_0 stop-ids_0 intdefs10_0)
72953       (local-transformer-expand_0 s_0 context_0 stop-ids_0 intdefs10_0))))))
72954(define 1/local-transformer-expand/capture-lifts
72955  (let ((local-transformer-expand/capture-lifts_0
72956         (|#%name|
72957          local-transformer-expand/capture-lifts
72958          (lambda (s16_0 context17_0 stop-ids18_0 intdefs14_0 lift-key15_0)
72959            (begin
72960              (let ((lift-key_0
72961                     (if (eq? lift-key15_0 unsafe-undefined)
72962                       (generate-lift-key)
72963                       lift-key15_0)))
72964                (do-local-expand.1
72965                 #t
72966                 #t
72967                 #t
72968                 lift-key_0
72969                 #f
72970                 #f
72971                 #f
72972                 'local-expand
72973                 s16_0
72974                 context17_0
72975                 stop-ids18_0
72976                 intdefs14_0)))))))
72977    (|#%name|
72978     local-transformer-expand/capture-lifts
72979     (case-lambda
72980      ((s_0 context_0 stop-ids_0)
72981       (begin
72982         (local-transformer-expand/capture-lifts_0
72983          s_0
72984          context_0
72985          stop-ids_0
72986          #f
72987          unsafe-undefined)))
72988      ((s_0 context_0 stop-ids_0 intdefs_0 lift-key15_0)
72989       (local-transformer-expand/capture-lifts_0
72990        s_0
72991        context_0
72992        stop-ids_0
72993        intdefs_0
72994        lift-key15_0))
72995      ((s_0 context_0 stop-ids_0 intdefs14_0)
72996       (local-transformer-expand/capture-lifts_0
72997        s_0
72998        context_0
72999        stop-ids_0
73000        intdefs14_0
73001        unsafe-undefined))))))
73002(define 1/syntax-local-expand-expression
73003  (let ((syntax-local-expand-expression_0
73004         (|#%name|
73005          syntax-local-expand-expression
73006          (lambda (s20_0 opaque-only?19_0)
73007            (begin
73008              (let ((exp-s_0
73009                     (do-local-expand.1
73010                      #f
73011                      #f
73012                      #f
73013                      unsafe-undefined
73014                      #t
73015                      opaque-only?19_0
73016                      #t
73017                      'syntax-local-expand-expression
73018                      s20_0
73019                      'expression
73020                      null
73021                      #f)))
73022                (let ((ctx_0 (get-current-expand-context.1 #f 'unexpected)))
73023                  (let ((ae_0
73024                         (let ((s_0
73025                                (datum->syntax$1
73026                                 #f
73027                                 (already-expanded1.1
73028                                  (if (parsed? exp-s_0)
73029                                    exp-s_0
73030                                    (begin-unsafe
73031                                     (flip-scopes
73032                                      exp-s_0
73033                                      (begin-unsafe
73034                                       (expand-context/outer-current-introduction-scopes
73035                                        ctx_0)))))
73036                                  (begin-unsafe
73037                                   (expand-context/outer-binding-layer
73038                                    ctx_0))))))
73039                           (begin-unsafe
73040                            (flip-scopes
73041                             s_0
73042                             (begin-unsafe
73043                              (expand-context/outer-current-introduction-scopes
73044                               ctx_0)))))))
73045                    (begin
73046                      (let ((obs_0
73047                             (begin-unsafe
73048                              (expand-context/inner-observer
73049                               (root-expand-context/outer-inner ctx_0)))))
73050                        (if obs_0
73051                          (call-expand-observe obs_0 'opaque-expr ae_0)
73052                          (void)))
73053                      (let ((obs_0
73054                             (begin-unsafe
73055                              (expand-context/inner-observer
73056                               (root-expand-context/outer-inner ctx_0)))))
73057                        (if obs_0
73058                          (call-expand-observe obs_0 'exit-local exp-s_0)
73059                          (void)))
73060                      (values
73061                       (if (not opaque-only?19_0) exp-s_0 #f)
73062                       ae_0))))))))))
73063    (|#%name|
73064     syntax-local-expand-expression
73065     (case-lambda
73066      ((s_0) (begin (syntax-local-expand-expression_0 s_0 #f)))
73067      ((s_0 opaque-only?19_0)
73068       (syntax-local-expand-expression_0 s_0 opaque-only?19_0))))))
73069(define do-local-expand.1
73070  (|#%name|
73071   do-local-expand
73072   (lambda (as-transformer?22_0
73073            capture-lifts?21_0
73074            |keep-#%expression?24_0|
73075            lift-key25_0
73076            skip-log-exit?27_0
73077            to-parsed-ok?23_0
73078            track-to-be-defined?26_0
73079            who36_0
73080            s-or-s-exp37_0
73081            context38_0
73082            stop-ids39_0
73083            intdefs35_0)
73084     (begin
73085       (let ((lift-key_0
73086              (if (eq? lift-key25_0 unsafe-undefined)
73087                (if (if capture-lifts?21_0
73088                      capture-lifts?21_0
73089                      as-transformer?22_0)
73090                  (generate-lift-key)
73091                  #f)
73092                lift-key25_0)))
73093         (begin
73094           (if log-performance?
73095             (start-performance-region 'expand 'local-expand)
73096             (void))
73097           (begin0
73098             (let ((s_0 (datum->syntax$1 #f s-or-s-exp37_0)))
73099               (begin
73100                 (if (let ((or-part_0 (list? context38_0)))
73101                       (if or-part_0
73102                         or-part_0
73103                         (memq
73104                          context38_0
73105                          (if as-transformer?22_0
73106                            '(expression top-level)
73107                            '(expression top-level module module-begin)))))
73108                   (void)
73109                   (raise-argument-error
73110                    who36_0
73111                    (if as-transformer?22_0
73112                      "(or/c 'expression 'top-level list?)"
73113                      "(or/c 'expression 'top-level 'module 'module-begin list?)")
73114                    context38_0))
73115                 (begin
73116                   (if (let ((or-part_0 (not stop-ids39_0)))
73117                         (if or-part_0
73118                           or-part_0
73119                           (if (list? stop-ids39_0)
73120                             (andmap_2344 identifier? stop-ids39_0)
73121                             #f)))
73122                     (void)
73123                     (raise-argument-error
73124                      who36_0
73125                      "(or/c (listof identifier?) #f)"
73126                      stop-ids39_0))
73127                   (begin
73128                     (if (intdefs-or-false? intdefs35_0)
73129                       (void)
73130                       (raise-argument-error
73131                        who36_0
73132                        intdefs-or-false?-string
73133                        intdefs35_0))
73134                     (let ((ctx_0 (get-current-expand-context.1 #f who36_0)))
73135                       (let ((phase_0
73136                              (if as-transformer?22_0
73137                                (add1
73138                                 (begin-unsafe
73139                                  (expand-context/inner-phase
73140                                   (root-expand-context/outer-inner ctx_0))))
73141                                (begin-unsafe
73142                                 (expand-context/inner-phase
73143                                  (root-expand-context/outer-inner ctx_0))))))
73144                         (let ((local-ctx_0
73145                                (let ((temp83_0
73146                                       (if |keep-#%expression?24_0|
73147                                         |keep-#%expression?24_0|
73148                                         (if (begin-unsafe
73149                                              (expand-context/inner-in-local-expand?
73150                                               (root-expand-context/outer-inner
73151                                                ctx_0)))
73152                                           (begin-unsafe
73153                                            (|expand-context/inner-keep-#%expression?|
73154                                             (root-expand-context/outer-inner
73155                                              ctx_0)))
73156                                           #f))))
73157                                  (make-local-expand-context.1
73158                                   context38_0
73159                                   intdefs35_0
73160                                   temp83_0
73161                                   phase_0
73162                                   stop-ids39_0
73163                                   to-parsed-ok?23_0
73164                                   track-to-be-defined?26_0
73165                                   ctx_0))))
73166                           (begin
73167                             (with-continuation-mark*
73168                              push-authentic
73169                              current-expand-context
73170                              #f
73171                              (if (begin-unsafe
73172                                   (expand-context/inner-skip-visit-available?
73173                                    (root-expand-context/outer-inner ctx_0)))
73174                                (void)
73175                                (namespace-visit-available-modules!
73176                                 (begin-unsafe
73177                                  (expand-context/inner-namespace
73178                                   (root-expand-context/outer-inner ctx_0)))
73179                                 phase_0)))
73180                             (begin
73181                               (let ((obs_0
73182                                      (begin-unsafe
73183                                       (expand-context/inner-observer
73184                                        (root-expand-context/outer-inner
73185                                         local-ctx_0)))))
73186                                 (if obs_0
73187                                   (call-expand-observe obs_0 'enter-local s_0)
73188                                   (void)))
73189                               (let ((input-s_0
73190                                      (let ((temp85_0
73191                                             (begin-unsafe
73192                                              (flip-scopes
73193                                               s_0
73194                                               (begin-unsafe
73195                                                (expand-context/outer-current-introduction-scopes
73196                                                 ctx_0))))))
73197                                        (add-intdef-scopes.1
73198                                         unsafe-undefined
73199                                         #f
73200                                         temp85_0
73201                                         intdefs35_0))))
73202                                 (begin
73203                                   (if as-transformer?22_0
73204                                     (let ((obs_0
73205                                            (begin-unsafe
73206                                             (expand-context/inner-observer
73207                                              (root-expand-context/outer-inner
73208                                               local-ctx_0)))))
73209                                       (if obs_0
73210                                         (call-expand-observe obs_0 'phase-up)
73211                                         (void)))
73212                                     (void))
73213                                   (begin
73214                                     (let ((obs_0
73215                                            (begin-unsafe
73216                                             (expand-context/inner-observer
73217                                              (root-expand-context/outer-inner
73218                                               local-ctx_0)))))
73219                                       (if obs_0
73220                                         (call-expand-observe
73221                                          obs_0
73222                                          'local-pre
73223                                          input-s_0)
73224                                         (void)))
73225                                     (begin
73226                                       (if stop-ids39_0
73227                                         (let ((obs_0
73228                                                (begin-unsafe
73229                                                 (expand-context/inner-observer
73230                                                  (root-expand-context/outer-inner
73231                                                   local-ctx_0)))))
73232                                           (if obs_0
73233                                             (call-expand-observe obs_0 'start)
73234                                             (void)))
73235                                         (void))
73236                                       (let ((output-s_0
73237                                              (with-continuation-mark*
73238                                               push-authentic
73239                                               current-expand-context
73240                                               #f
73241                                               (if (if as-transformer?22_0
73242                                                     capture-lifts?21_0
73243                                                     #f)
73244                                                 (expand-transformer.1
73245                                                  #t
73246                                                  #t
73247                                                  context38_0
73248                                                  #f
73249                                                  #t
73250                                                  lift-key_0
73251                                                  input-s_0
73252                                                  local-ctx_0)
73253                                                 (if as-transformer?22_0
73254                                                   (let ((temp99_0
73255                                                          (eq?
73256                                                           'top-level
73257                                                           context38_0)))
73258                                                     (expand-transformer.1
73259                                                      #f
73260                                                      temp99_0
73261                                                      context38_0
73262                                                      #f
73263                                                      #t
73264                                                      lift-key_0
73265                                                      input-s_0
73266                                                      local-ctx_0))
73267                                                   (if capture-lifts?21_0
73268                                                     (expand/capture-lifts.1
73269                                                      #t
73270                                                      #t
73271                                                      #f
73272                                                      lift-key_0
73273                                                      input-s_0
73274                                                      local-ctx_0)
73275                                                     (expand.1
73276                                                      #f
73277                                                      #f
73278                                                      input-s_0
73279                                                      local-ctx_0)))))))
73280                                         (begin
73281                                           (let ((obs_0
73282                                                  (begin-unsafe
73283                                                   (expand-context/inner-observer
73284                                                    (root-expand-context/outer-inner
73285                                                     local-ctx_0)))))
73286                                             (if obs_0
73287                                               (call-expand-observe
73288                                                obs_0
73289                                                'local-post
73290                                                output-s_0)
73291                                               (void)))
73292                                           (let ((result-s_0
73293                                                  (if (parsed? output-s_0)
73294                                                    output-s_0
73295                                                    (begin-unsafe
73296                                                     (flip-scopes
73297                                                      output-s_0
73298                                                      (begin-unsafe
73299                                                       (expand-context/outer-current-introduction-scopes
73300                                                        ctx_0)))))))
73301                                             (begin
73302                                               (if skip-log-exit?27_0
73303                                                 (void)
73304                                                 (let ((obs_0
73305                                                        (begin-unsafe
73306                                                         (expand-context/inner-observer
73307                                                          (root-expand-context/outer-inner
73308                                                           local-ctx_0)))))
73309                                                   (if obs_0
73310                                                     (call-expand-observe
73311                                                      obs_0
73312                                                      'exit-local
73313                                                      result-s_0)
73314                                                     (void))))
73315                                               result-s_0)))))))))))))))))
73316             (if log-performance? (end-performance-region) (void)))))))))
73317(define transform-syntax-vals
73318  (lambda (f_0 vs_0)
73319    (reverse$1
73320     (begin
73321       (letrec*
73322        ((for-loop_0
73323          (|#%name|
73324           for-loop
73325           (lambda (fold-var_0 lst_0)
73326             (begin
73327               (if (pair? lst_0)
73328                 (let ((v_0 (unsafe-car lst_0)))
73329                   (let ((rest_0 (unsafe-cdr lst_0)))
73330                     (let ((fold-var_1
73331                            (let ((fold-var_1
73332                                   (cons
73333                                    (if (syntax?$1 v_0) (|#%app| f_0 v_0) v_0)
73334                                    fold-var_0)))
73335                              (values fold-var_1))))
73336                       (for-loop_0 fold-var_1 rest_0))))
73337                 fold-var_0))))))
73338        (for-loop_0 null vs_0))))))
73339(define 1/syntax-local-apply-transformer
73340  (|#%name|
73341   syntax-local-apply-transformer
73342   (lambda (transformer_0 binding-id_0 context_0 intdef-ctx_0 . args_0)
73343     (begin
73344       (begin
73345         (if (procedure? transformer_0)
73346           (void)
73347           (raise-argument-error
73348            'syntax-local-apply-transformer
73349            "procedure?"
73350            transformer_0))
73351         (begin
73352           (if (let ((or-part_0 (identifier? binding-id_0)))
73353                 (if or-part_0 or-part_0 (eq? binding-id_0 #f)))
73354             (void)
73355             (raise-argument-error
73356              'syntax-local-apply-transformer
73357              "(or/c identifier? #f)"
73358              binding-id_0))
73359           (begin
73360             (if (let ((or-part_0 (list? context_0)))
73361                   (if or-part_0
73362                     or-part_0
73363                     (memq
73364                      context_0
73365                      '(expression top-level module module-begin))))
73366               (void)
73367               (raise-argument-error
73368                'syntax-local-apply-transformer
73369                "(or/c 'expression 'top-level 'module 'module-begin list?)"
73370                context_0))
73371             (begin
73372               (if (let ((or-part_0 (not intdef-ctx_0)))
73373                     (if or-part_0
73374                       or-part_0
73375                       (1/internal-definition-context? intdef-ctx_0)))
73376                 (void)
73377                 (raise-argument-error
73378                  'syntax-local-apply-transformer
73379                  "(or/c internal-definition-context? #f)"
73380                  intdef-ctx_0))
73381               (let ((ctx_0
73382                      (get-current-expand-context.1
73383                       #f
73384                       'syntax-local-apply-transformer)))
73385                 (let ((local-ctx_0
73386                        (make-local-expand-context.1
73387                         context_0
73388                         intdef-ctx_0
73389                         #t
73390                         unsafe-undefined
73391                         #f
73392                         #f
73393                         #f
73394                         ctx_0)))
73395                   (let ((scoped-args_0
73396                          (transform-syntax-vals
73397                           (lambda (s_0)
73398                             (let ((temp6_0
73399                                    (begin-unsafe
73400                                     (flip-scopes
73401                                      s_0
73402                                      (begin-unsafe
73403                                       (expand-context/outer-current-introduction-scopes
73404                                        ctx_0))))))
73405                               (add-intdef-scopes.1
73406                                unsafe-undefined
73407                                #f
73408                                temp6_0
73409                                intdef-ctx_0)))
73410                           args_0)))
73411                     (let ((scoped-binding-id_0
73412                            (if binding-id_0
73413                              (begin-unsafe
73414                               (flip-scopes
73415                                binding-id_0
73416                                (begin-unsafe
73417                                 (expand-context/outer-current-introduction-scopes
73418                                  ctx_0))))
73419                              #f)))
73420                       (let ((output-vals_0
73421                              (with-continuation-mark*
73422                               push-authentic
73423                               current-expand-context
73424                               #f
73425                               (apply-transformer
73426                                'syntax-local-apply-transformer
73427                                transformer_0
73428                                scoped-binding-id_0
73429                                scoped-args_0
73430                                local-ctx_0))))
73431                         (let ((result-vals_0
73432                                (transform-syntax-vals
73433                                 (lambda (s_0)
73434                                   (begin-unsafe
73435                                    (flip-scopes
73436                                     s_0
73437                                     (begin-unsafe
73438                                      (expand-context/outer-current-introduction-scopes
73439                                       ctx_0)))))
73440                                 output-vals_0)))
73441                           (apply values result-vals_0)))))))))))))))
73442(define apply-transformer
73443  (lambda (who_0 transformer_0 binding-id_0 args_0 ctx_0)
73444    (call-with-values
73445     (lambda ()
73446       (if binding-id_0
73447         (let ((temp9_0
73448                (begin-unsafe
73449                 (expand-context/inner-phase
73450                  (root-expand-context/outer-inner ctx_0)))))
73451           (let ((binding_0
73452                  (resolve+shift.1
73453                   'ambiguous
73454                   #f
73455                   null
73456                   #t
73457                   #f
73458                   binding-id_0
73459                   temp9_0)))
73460             (begin
73461               (if (not binding_0)
73462                 (error who_0 "unbound identifier: ~v" binding-id_0)
73463                 (void))
73464               (call-with-values
73465                (lambda () (lookup.1 #f #t binding_0 ctx_0 binding-id_0))
73466                (case-lambda
73467                 ((t_0 primitive?_0 insp-of-t_0 protected?_0)
73468                  (values binding_0 insp-of-t_0))
73469                 (args (raise-binding-result-arity-error 4 args)))))))
73470         (values #f #f)))
73471     (case-lambda
73472      ((binding_0 insp-of-t_0)
73473       (let ((intro-scope_0 (new-scope 'macro)))
73474         (let ((use-scopes_0 (maybe-create-use-site-scope ctx_0 binding_0)))
73475           (let ((scope-arg_0
73476                  (|#%name|
73477                   scope-arg
73478                   (lambda (s_0)
73479                     (begin
73480                       (let ((intro-s_0 (add-scope s_0 intro-scope_0)))
73481                         (let ((use-s_0 (add-scopes intro-s_0 use-scopes_0)))
73482                           use-s_0)))))))
73483             (let ((scoped-args_0 (transform-syntax-vals scope-arg_0 args_0)))
73484               (let ((transformed-vals_0
73485                      (apply-transformer-in-context
73486                       transformer_0
73487                       scoped-args_0
73488                       ctx_0
73489                       intro-scope_0
73490                       use-scopes_0
73491                       binding-id_0
73492                       insp-of-t_0)))
73493                 (let ((scope-res_0
73494                        (|#%name|
73495                         scope-res
73496                         (lambda (s_0)
73497                           (begin
73498                             (let ((result-s_0 (flip-scope s_0 intro-scope_0)))
73499                               (let ((post-s_0
73500                                      (begin-unsafe
73501                                       (apply-post-expansion
73502                                        (begin-unsafe
73503                                         (root-expand-context/outer-post-expansion
73504                                          ctx_0))
73505                                        result-s_0))))
73506                                 post-s_0)))))))
73507                   (let ((result-vals_0
73508                          (transform-syntax-vals
73509                           scope-res_0
73510                           transformed-vals_0)))
73511                     result-vals_0))))))))
73512      (args (raise-binding-result-arity-error 2 args))))))
73513(define apply-transformer-in-context
73514  (lambda (transformer_0
73515           args_0
73516           ctx_0
73517           intro-scope_0
73518           use-scopes_0
73519           binding-id_0
73520           insp-of-t_0)
73521    (let ((m-ctx_0
73522           (if (expand-context/outer? ctx_0)
73523             (let ((current-introduction-scopes16_0 (list intro-scope_0)))
73524               (let ((inner18_0 (root-expand-context/outer-inner ctx_0)))
73525                 (expand-context/outer1.1
73526                  inner18_0
73527                  (root-expand-context/outer-post-expansion ctx_0)
73528                  (root-expand-context/outer-use-site-scopes ctx_0)
73529                  (root-expand-context/outer-frame-id ctx_0)
73530                  (expand-context/outer-context ctx_0)
73531                  (expand-context/outer-env ctx_0)
73532                  (expand-context/outer-scopes ctx_0)
73533                  (expand-context/outer-def-ctx-scopes ctx_0)
73534                  (expand-context/outer-binding-layer ctx_0)
73535                  (expand-context/outer-reference-records ctx_0)
73536                  (expand-context/outer-only-immediate? ctx_0)
73537                  (expand-context/outer-need-eventually-defined ctx_0)
73538                  current-introduction-scopes16_0
73539                  use-scopes_0
73540                  (expand-context/outer-name ctx_0))))
73541             (raise-argument-error
73542              'struct-copy
73543              "expand-context/outer?"
73544              ctx_0))))
73545      (let ((transformed-vals_0
73546             (with-continuation-mark*
73547              push-authentic
73548              parameterization-key
73549              (let ((app_0
73550                     (continuation-mark-set-first #f parameterization-key)))
73551                (extend-parameterization
73552                 app_0
73553                 1/current-namespace
73554                 (namespace->namespace-at-phase
73555                  (begin-unsafe
73556                   (expand-context/inner-namespace
73557                    (root-expand-context/outer-inner ctx_0)))
73558                  (add1
73559                   (begin-unsafe
73560                    (expand-context/inner-phase
73561                     (root-expand-context/outer-inner ctx_0)))))))
73562              (with-continuation-mark*
73563               authentic
73564               current-expand-context
73565               m-ctx_0
73566               (with-continuation-mark*
73567                authentic
73568                current-module-code-inspector
73569                (let ((b_0 (current-module-code-inspector)))
73570                  (if (eq? insp-of-t_0 b_0)
73571                    insp-of-t_0
73572                    (if (not insp-of-t_0)
73573                      #f
73574                      (if (not b_0)
73575                        #f
73576                        (if (inspector-superior? insp-of-t_0 b_0)
73577                          b_0
73578                          (if (inspector-superior? b_0 insp-of-t_0)
73579                            insp-of-t_0
73580                            #f))))))
73581                (call-with-continuation-barrier
73582                 (lambda ()
73583                   (call-with-values
73584                    (lambda () (apply transformer_0 args_0))
73585                    list))))))))
73586        transformed-vals_0))))
73587(define 1/syntax-tainted?
73588  (|#%name|
73589   syntax-tainted?
73590   (lambda (s_0)
73591     (begin
73592       (begin
73593         (if (syntax?$1 s_0)
73594           (void)
73595           (raise-argument-error 'syntax-tainted? "syntax?" s_0))
73596         (syntax-tainted?$1 s_0))))))
73597(define 1/syntax-arm
73598  (let ((syntax-arm_0
73599         (|#%name|
73600          syntax-arm
73601          (lambda (s3_0 maybe-insp1_0 use-mode?2_0)
73602            (begin
73603              (begin
73604                (if (syntax?$1 s3_0)
73605                  (void)
73606                  (raise-argument-error 'syntax-arm "syntax?" s3_0))
73607                (if (let ((or-part_0 (not maybe-insp1_0)))
73608                      (if or-part_0 or-part_0 (inspector? maybe-insp1_0)))
73609                  (void)
73610                  (raise-argument-error
73611                   'syntax-arm
73612                   "(or/c inspector? #f)"
73613                   maybe-insp1_0))
73614                s3_0))))))
73615    (|#%name|
73616     syntax-arm
73617     (case-lambda
73618      ((s_0) (begin (syntax-arm_0 s_0 #f #f)))
73619      ((s_0 maybe-insp_0 use-mode?2_0)
73620       (syntax-arm_0 s_0 maybe-insp_0 use-mode?2_0))
73621      ((s_0 maybe-insp1_0) (syntax-arm_0 s_0 maybe-insp1_0 #f))))))
73622(define 1/syntax-disarm
73623  (|#%name|
73624   syntax-disarm
73625   (lambda (s_0 maybe-insp_0)
73626     (begin
73627       (begin
73628         (if (syntax?$1 s_0)
73629           (void)
73630           (raise-argument-error 'syntax-disarm "syntax?" s_0))
73631         (if (let ((or-part_0 (not maybe-insp_0)))
73632               (if or-part_0 or-part_0 (inspector? maybe-insp_0)))
73633           (void)
73634           (raise-argument-error
73635            'syntax-disarm
73636            "(or/c inspector? #f)"
73637            maybe-insp_0))
73638         s_0)))))
73639(define 1/syntax-rearm
73640  (let ((syntax-rearm_0
73641         (|#%name|
73642          syntax-rearm
73643          (lambda (s5_0 from-s6_0 use-mode?4_0)
73644            (begin
73645              (begin
73646                (if (syntax?$1 s5_0)
73647                  (void)
73648                  (raise-argument-error 'syntax-rearm "syntax?" s5_0))
73649                (if (syntax?$1 from-s6_0)
73650                  (void)
73651                  (raise-argument-error 'syntax-rearm "syntax?" from-s6_0))
73652                s5_0))))))
73653    (|#%name|
73654     syntax-rearm
73655     (case-lambda
73656      ((s_0 from-s_0) (begin (syntax-rearm_0 s_0 from-s_0 #f)))
73657      ((s_0 from-s_0 use-mode?4_0)
73658       (syntax-rearm_0 s_0 from-s_0 use-mode?4_0))))))
73659(define 1/syntax-taint
73660  (|#%name|
73661   syntax-taint
73662   (lambda (s_0)
73663     (begin
73664       (begin
73665         (if (syntax?$1 s_0)
73666           (void)
73667           (raise-argument-error 'syntax-taint "syntax?" s_0))
73668         (syntax-taint$1 s_0))))))
73669(define finish_2681
73670  (make-struct-type-install-properties
73671   '(serialized-syntax)
73672   5
73673   0
73674   #f
73675   null
73676   'prefab
73677   #f
73678   '(0 1 2 3 4)
73679   #f
73680   'serialized-syntax))
73681(define struct:serialized-syntax
73682  (make-record-type-descriptor*
73683   'serialized-syntax
73684   #f
73685   (structure-type-lookup-prefab-uid 'serialized-syntax #f 5 0 #f '(0 1 2 3 4))
73686   #f
73687   #f
73688   5
73689   31))
73690(define effect_2423 (finish_2681 struct:serialized-syntax))
73691(define serialized-syntax1.1
73692  (|#%name|
73693   serialized-syntax
73694   (record-constructor
73695    (make-record-constructor-descriptor struct:serialized-syntax #f #f))))
73696(define serialized-syntax?_2448
73697  (|#%name| serialized-syntax? (record-predicate struct:serialized-syntax)))
73698(define serialized-syntax?
73699  (|#%name|
73700   serialized-syntax?
73701   (lambda (v)
73702     (if (serialized-syntax?_2448 v)
73703       #t
73704       ($value
73705        (if (impersonator? v)
73706          (serialized-syntax?_2448 (impersonator-val v))
73707          #f))))))
73708(define serialized-syntax-version_3038
73709  (|#%name|
73710   serialized-syntax-version
73711   (record-accessor struct:serialized-syntax 0)))
73712(define serialized-syntax-version
73713  (|#%name|
73714   serialized-syntax-version
73715   (lambda (s)
73716     (if (serialized-syntax?_2448 s)
73717       (serialized-syntax-version_3038 s)
73718       ($value
73719        (impersonate-ref
73720         serialized-syntax-version_3038
73721         struct:serialized-syntax
73722         0
73723         s
73724         'serialized-syntax
73725         'version))))))
73726(define serialized-syntax-mpis_2591
73727  (|#%name|
73728   serialized-syntax-mpis
73729   (record-accessor struct:serialized-syntax 1)))
73730(define serialized-syntax-mpis
73731  (|#%name|
73732   serialized-syntax-mpis
73733   (lambda (s)
73734     (if (serialized-syntax?_2448 s)
73735       (serialized-syntax-mpis_2591 s)
73736       ($value
73737        (impersonate-ref
73738         serialized-syntax-mpis_2591
73739         struct:serialized-syntax
73740         1
73741         s
73742         'serialized-syntax
73743         'mpis))))))
73744(define serialized-syntax-base-mpi-pos_2382
73745  (|#%name|
73746   serialized-syntax-base-mpi-pos
73747   (record-accessor struct:serialized-syntax 2)))
73748(define serialized-syntax-base-mpi-pos
73749  (|#%name|
73750   serialized-syntax-base-mpi-pos
73751   (lambda (s)
73752     (if (serialized-syntax?_2448 s)
73753       (serialized-syntax-base-mpi-pos_2382 s)
73754       ($value
73755        (impersonate-ref
73756         serialized-syntax-base-mpi-pos_2382
73757         struct:serialized-syntax
73758         2
73759         s
73760         'serialized-syntax
73761         'base-mpi-pos))))))
73762(define serialized-syntax-data_2598
73763  (|#%name|
73764   serialized-syntax-data
73765   (record-accessor struct:serialized-syntax 3)))
73766(define serialized-syntax-data
73767  (|#%name|
73768   serialized-syntax-data
73769   (lambda (s)
73770     (if (serialized-syntax?_2448 s)
73771       (serialized-syntax-data_2598 s)
73772       ($value
73773        (impersonate-ref
73774         serialized-syntax-data_2598
73775         struct:serialized-syntax
73776         3
73777         s
73778         'serialized-syntax
73779         'data))))))
73780(define serialized-syntax-need-registry?_3073
73781  (|#%name|
73782   serialized-syntax-need-registry?
73783   (record-accessor struct:serialized-syntax 4)))
73784(define serialized-syntax-need-registry?
73785  (|#%name|
73786   serialized-syntax-need-registry?
73787   (lambda (s)
73788     (if (serialized-syntax?_2448 s)
73789       (serialized-syntax-need-registry?_3073 s)
73790       ($value
73791        (impersonate-ref
73792         serialized-syntax-need-registry?_3073
73793         struct:serialized-syntax
73794         4
73795         s
73796         'serialized-syntax
73797         'need-registry?))))))
73798(define 1/syntax-serialize
73799  (let ((syntax-serialize_0
73800         (|#%name|
73801          syntax-serialize
73802          (lambda (stx5_0
73803                   base-mpi2_0
73804                   preserve-prop-keys3_0
73805                   provides-namespace4_0)
73806            (begin
73807              (let ((provides-namespace_0
73808                     (if (eq? provides-namespace4_0 unsafe-undefined)
73809                       (1/current-namespace)
73810                       provides-namespace4_0)))
73811                (begin
73812                  (if (syntax?$1 stx5_0)
73813                    (void)
73814                    (raise-argument-error 'syntax-serialize "syntax?" stx5_0))
73815                  (begin
73816                    (if (let ((or-part_0 (not base-mpi2_0)))
73817                          (if or-part_0
73818                            or-part_0
73819                            (1/module-path-index? base-mpi2_0)))
73820                      (void)
73821                      (raise-argument-error
73822                       'syntax-serialize
73823                       "(or/c module-path-index? #f)"
73824                       base-mpi2_0))
73825                    (begin
73826                      (if (if (list? preserve-prop-keys3_0)
73827                            (andmap_2344 symbol? preserve-prop-keys3_0)
73828                            #f)
73829                        (void)
73830                        (raise-argument-error
73831                         'syntax-serialize
73832                         "(listof symbol?)"
73833                         preserve-prop-keys3_0))
73834                      (begin
73835                        (if (let ((or-part_0 (not provides-namespace_0)))
73836                              (if or-part_0
73837                                or-part_0
73838                                (1/namespace? provides-namespace_0)))
73839                          (void)
73840                          (raise-argument-error
73841                           'syntax-serialize
73842                           "(or/c namespace? #f)"
73843                           provides-namespace_0))
73844                        (let ((mpis_0 (make-module-path-index-table)))
73845                          (let ((base-mpi-pos_0
73846                                 (if base-mpi2_0
73847                                   (add-module-path-index!/pos
73848                                    mpis_0
73849                                    base-mpi2_0)
73850                                   #f)))
73851                            (let ((data_0
73852                                   (let ((temp13_0
73853                                          (begin
73854                                            (letrec*
73855                                             ((for-loop_0
73856                                               (|#%name|
73857                                                for-loop
73858                                                (lambda (table_0 lst_0)
73859                                                  (begin
73860                                                    (if (pair? lst_0)
73861                                                      (let ((k_0
73862                                                             (unsafe-car
73863                                                              lst_0)))
73864                                                        (let ((rest_0
73865                                                               (unsafe-cdr
73866                                                                lst_0)))
73867                                                          (let ((table_1
73868                                                                 (let ((table_1
73869                                                                        (call-with-values
73870                                                                         (lambda ()
73871                                                                           (values
73872                                                                            k_0
73873                                                                            #t))
73874                                                                         (case-lambda
73875                                                                          ((key_0
73876                                                                            val_0)
73877                                                                           (hash-set
73878                                                                            table_0
73879                                                                            key_0
73880                                                                            val_0))
73881                                                                          (args
73882                                                                           (raise-binding-result-arity-error
73883                                                                            2
73884                                                                            args))))))
73885                                                                   (values
73886                                                                    table_1))))
73887                                                            (for-loop_0
73888                                                             table_1
73889                                                             rest_0))))
73890                                                      table_0))))))
73891                                             (for-loop_0
73892                                              hash2610
73893                                              preserve-prop-keys3_0)))))
73894                                     (let ((temp14_0
73895                                            (if provides-namespace_0
73896                                              (|#%name|
73897                                               temp14
73898                                               (lambda (modname_0)
73899                                                 (begin
73900                                                   (not
73901                                                    (namespace->module
73902                                                     provides-namespace_0
73903                                                     modname_0)))))
73904                                              (|#%name|
73905                                               temp14
73906                                               (lambda (modname_0)
73907                                                 (begin #t))))))
73908                                       (let ((temp13_1 temp13_0))
73909                                         (generate-deserialize.1
73910                                          #t
73911                                          temp14_0
73912                                          mpis_0
73913                                          temp13_1
73914                                          #t
73915                                          stx5_0))))))
73916                              (let ((app_0
73917                                     (generate-module-path-index-deserialize.1
73918                                      #t
73919                                      mpis_0)))
73920                                (serialized-syntax1.1
73921                                 (version)
73922                                 app_0
73923                                 base-mpi-pos_0
73924                                 data_0
73925                                 (if provides-namespace_0 #t #f))))))))))))))))
73926    (|#%name|
73927     syntax-serialize
73928     (case-lambda
73929      ((stx_0) (begin (syntax-serialize_0 stx_0 #f '() unsafe-undefined)))
73930      ((stx_0 base-mpi_0 preserve-prop-keys_0 provides-namespace4_0)
73931       (syntax-serialize_0
73932        stx_0
73933        base-mpi_0
73934        preserve-prop-keys_0
73935        provides-namespace4_0))
73936      ((stx_0 base-mpi_0 preserve-prop-keys3_0)
73937       (syntax-serialize_0
73938        stx_0
73939        base-mpi_0
73940        preserve-prop-keys3_0
73941        unsafe-undefined))
73942      ((stx_0 base-mpi2_0)
73943       (syntax-serialize_0 stx_0 base-mpi2_0 '() unsafe-undefined))))))
73944(define 1/syntax-deserialize
73945  (let ((syntax-deserialize_0
73946         (|#%name|
73947          syntax-deserialize
73948          (lambda (data7_0 base-mpi6_0)
73949            (begin
73950              (begin
73951                (if (let ((or-part_0 (not base-mpi6_0)))
73952                      (if or-part_0
73953                        or-part_0
73954                        (1/module-path-index? base-mpi6_0)))
73955                  (void)
73956                  (raise-argument-error
73957                   'syntax-deserialize
73958                   "(or/c module-path-index? #f)"
73959                   base-mpi6_0))
73960                (begin
73961                  (if (serialized-syntax? data7_0)
73962                    (void)
73963                    (raise-arguments-error
73964                     'syntax-deserialize
73965                     "invalid serialized form"
73966                     "value"
73967                     data7_0))
73968                  (begin
73969                    (if (equal? (version) (serialized-syntax-version data7_0))
73970                      (void)
73971                      (raise-arguments-error
73972                       'syntax-deserialize
73973                       "version mismatch"
73974                       "expected"
73975                       (version)
73976                       "found"
73977                       (serialized-syntax-version data7_0)))
73978                    (begin
73979                      (if (eq? (current-code-inspector) initial-code-inspector)
73980                        (void)
73981                        (error
73982                         'syntax-deserialize
73983                         "deserialization disallowed by code inspector"))
73984                      (let ((orig-mpis_0
73985                             (deserialize-module-path-index-data
73986                              (serialized-syntax-mpis data7_0))))
73987                        (let ((orig-base-mpi_0
73988                               (if base-mpi6_0
73989                                 (let ((pos_0
73990                                        (serialized-syntax-base-mpi-pos
73991                                         data7_0)))
73992                                   (if pos_0
73993                                     (vector-ref orig-mpis_0 pos_0)
73994                                     #f))
73995                                 #f)))
73996                          (let ((shifted-mpis_0
73997                                 (if orig-base-mpi_0
73998                                   (let ((len_0 (vector-length orig-mpis_0)))
73999                                     (begin
74000                                       (if (exact-nonnegative-integer? len_0)
74001                                         (void)
74002                                         (raise-argument-error
74003                                          'for/vector
74004                                          "exact-nonnegative-integer?"
74005                                          len_0))
74006                                       (let ((v_0 (make-vector len_0 0)))
74007                                         (begin
74008                                           (if (zero? len_0)
74009                                             (void)
74010                                             (call-with-values
74011                                              (lambda ()
74012                                                (begin
74013                                                  (check-vector orig-mpis_0)
74014                                                  (values
74015                                                   orig-mpis_0
74016                                                   (unsafe-vector-length
74017                                                    orig-mpis_0))))
74018                                              (case-lambda
74019                                               ((vec_0 len_1)
74020                                                (begin
74021                                                  #f
74022                                                  (letrec*
74023                                                   ((for-loop_0
74024                                                     (|#%name|
74025                                                      for-loop
74026                                                      (lambda (i_0 pos_0)
74027                                                        (begin
74028                                                          (if (unsafe-fx<
74029                                                               pos_0
74030                                                               len_1)
74031                                                            (let ((mpi_0
74032                                                                   (unsafe-vector-ref
74033                                                                    vec_0
74034                                                                    pos_0)))
74035                                                              (let ((i_1
74036                                                                     (let ((i_1
74037                                                                            i_0))
74038                                                                       (let ((i_2
74039                                                                              (begin
74040                                                                                (unsafe-vector*-set!
74041                                                                                 v_0
74042                                                                                 i_1
74043                                                                                 (module-path-index-shift
74044                                                                                  mpi_0
74045                                                                                  orig-base-mpi_0
74046                                                                                  base-mpi6_0))
74047                                                                                (unsafe-fx+
74048                                                                                 1
74049                                                                                 i_1))))
74050                                                                         (values
74051                                                                          i_2)))))
74052                                                                (if (if (not
74053                                                                         (let ((x_0
74054                                                                                (list
74055                                                                                 mpi_0)))
74056                                                                           (unsafe-fx=
74057                                                                            i_1
74058                                                                            len_0)))
74059                                                                      #t
74060                                                                      #f)
74061                                                                  (for-loop_0
74062                                                                   i_1
74063                                                                   (unsafe-fx+
74064                                                                    1
74065                                                                    pos_0))
74066                                                                  i_1)))
74067                                                            i_0))))))
74068                                                   (for-loop_0 0 0))))
74069                                               (args
74070                                                (raise-binding-result-arity-error
74071                                                 2
74072                                                 args)))))
74073                                           v_0))))
74074                                   orig-mpis_0)))
74075                            (let ((bulk-binding-registry_0
74076                                   (if (serialized-syntax-need-registry?
74077                                        data7_0)
74078                                     (namespace-bulk-binding-registry
74079                                      (1/current-namespace))
74080                                     #f)))
74081                              (deserialize-data
74082                               shifted-mpis_0
74083                               #f
74084                               bulk-binding-registry_0
74085                               (serialized-syntax-data data7_0)))))))))))))))
74086    (|#%name|
74087     syntax-deserialize
74088     (case-lambda
74089      ((data_0) (begin (syntax-deserialize_0 data_0 #f)))
74090      ((data_0 base-mpi6_0) (syntax-deserialize_0 data_0 base-mpi6_0))))))
74091(define 1/variable-reference->empty-namespace
74092  (|#%name|
74093   variable-reference->empty-namespace
74094   (lambda (vr_0)
74095     (begin
74096       (begin
74097         (if (variable-reference? vr_0)
74098           (void)
74099           (raise-argument-error
74100            'variable-reference->empty-namespace
74101            "variable-reference?"
74102            vr_0))
74103         (let ((temp2_0 (1/variable-reference->namespace vr_0)))
74104           (new-namespace.1 #t unsafe-undefined temp2_0)))))))
74105(define 1/variable-reference->namespace
74106  (|#%name|
74107   variable-reference->namespace
74108   (lambda (vr_0)
74109     (begin
74110       (begin
74111         (if (variable-reference? vr_0)
74112           (void)
74113           (raise-argument-error
74114            'variable-reference->namespace
74115            "variable-reference?"
74116            vr_0))
74117         (let ((ns_0 (variable-reference->namespace* vr_0)))
74118           (let ((mpi_0 (namespace-mpi ns_0)))
74119             (begin
74120               (if (non-self-module-path-index? mpi_0)
74121                 (with-continuation-mark*
74122                  push-authentic
74123                  parameterization-key
74124                  (extend-parameterization
74125                   (continuation-mark-set-first #f parameterization-key)
74126                   1/current-namespace
74127                   ns_0)
74128                  (let ((temp6_0 (namespace-0-phase ns_0)))
74129                    (namespace-module-make-available!.1
74130                     unsafe-undefined
74131                     ns_0
74132                     mpi_0
74133                     temp6_0)))
74134                 (void))
74135               ns_0))))))))
74136(define variable-reference->namespace*
74137  (lambda (vr_0)
74138    (let ((inst_0 (variable-reference->instance vr_0)))
74139      (if (symbol? inst_0)
74140        (let ((app_0 (list 'quote inst_0)))
74141          (1/module->namespace
74142           app_0
74143           (instance-data (variable-reference->instance vr_0 #t))))
74144        (if (not inst_0)
74145          (instance-data (variable-reference->instance vr_0 #t))
74146          (instance-data inst_0))))))
74147(define 1/variable-reference->module-path-index
74148  (|#%name|
74149   variable-reference->module-path-index
74150   (lambda (vr_0)
74151     (begin
74152       (begin
74153         (if (variable-reference? vr_0)
74154           (void)
74155           (raise-argument-error
74156            'variable-reference->module-path-index
74157            "variable-reference?"
74158            vr_0))
74159         (let ((mpi_0 (namespace-mpi (variable-reference->namespace* vr_0))))
74160           (if (begin-unsafe (eq? top-level-module-path-index mpi_0))
74161             #f
74162             mpi_0)))))))
74163(define 1/variable-reference->resolved-module-path
74164  (|#%name|
74165   variable-reference->resolved-module-path
74166   (lambda (vr_0)
74167     (begin
74168       (begin
74169         (if (variable-reference? vr_0)
74170           (void)
74171           (raise-argument-error
74172            'variable-reference->resolved-module-path
74173            "variable-reference?"
74174            vr_0))
74175         (let ((mpi_0 (1/variable-reference->module-path-index vr_0)))
74176           (if mpi_0 (1/module-path-index-resolve mpi_0) #f)))))))
74177(define 1/variable-reference->module-source
74178  (|#%name|
74179   variable-reference->module-source
74180   (lambda (vr_0)
74181     (begin
74182       (begin
74183         (if (variable-reference? vr_0)
74184           (void)
74185           (raise-argument-error
74186            'variable-reference->module-source
74187            "variable-reference?"
74188            vr_0))
74189         (let ((ns_0 (variable-reference->namespace* vr_0)))
74190           (namespace-source-name ns_0)))))))
74191(define 1/variable-reference->phase
74192  (|#%name|
74193   variable-reference->phase
74194   (lambda (vr_0)
74195     (begin
74196       (begin
74197         (if (variable-reference? vr_0)
74198           (void)
74199           (raise-argument-error
74200            'variable-reference->phase
74201            "variable-reference?"
74202            vr_0))
74203         (namespace-phase (variable-reference->namespace* vr_0)))))))
74204(define 1/variable-reference->module-base-phase
74205  (|#%name|
74206   variable-reference->module-base-phase
74207   (lambda (vr_0)
74208     (begin
74209       (begin
74210         (if (variable-reference? vr_0)
74211           (void)
74212           (raise-argument-error
74213            'variable-reference->module-base-phase
74214            "variable-reference?"
74215            vr_0))
74216         (namespace-0-phase (variable-reference->namespace* vr_0)))))))
74217(define 1/variable-reference->module-declaration-inspector
74218  (|#%name|
74219   variable-reference->module-declaration-inspector
74220   (lambda (vr_0)
74221     (begin
74222       (begin
74223         (if (variable-reference? vr_0)
74224           (void)
74225           (raise-argument-error
74226            'variable-reference->module-declaration-inspector
74227            "variable-reference?"
74228            vr_0))
74229         (if (variable-reference->instance vr_0)
74230           (raise-arguments-error
74231            'variable-reference->module-declaration-inspector
74232            "variable reference does not refer to an anonymous module variable"
74233            "variable reference"
74234            vr_0)
74235           (void))
74236         (let ((or-part_0
74237                (namespace-declaration-inspector
74238                 (variable-reference->namespace* vr_0))))
74239           (if or-part_0
74240             or-part_0
74241             (raise-arguments-error
74242              'variable-reference->module-declaration-inspector
74243              "given variable reference is not from a module"))))))))
74244(define primitive-ids
74245  (seteq
74246   'syntax?
74247   'syntax-e
74248   'syntax->datum
74249   'datum->syntax
74250   'bound-identifier=?
74251   'free-identifier=?
74252   'free-transformer-identifier=?
74253   'free-template-identifier=?
74254   'free-label-identifier=?
74255   'identifier-binding
74256   'identifier-transformer-binding
74257   'identifier-template-binding
74258   'identifier-label-binding
74259   'identifier-binding-symbol
74260   'identifier-prune-lexical-context
74261   'syntax-debug-info
74262   'syntax-track-origin
74263   'syntax-shift-phase-level
74264   'syntax-source-module
74265   'identifier-prune-to-source-module
74266   'syntax-srcloc
74267   'syntax-source
74268   'syntax-line
74269   'syntax-column
74270   'syntax-position
74271   'syntax-span
74272   'syntax->list
74273   'syntax-property
74274   'syntax-property-remove
74275   'syntax-property-preserved?
74276   'syntax-property-symbol-keys
74277   'syntax-original?
74278   'syntax-tainted?
74279   'syntax-arm
74280   'syntax-disarm
74281   'syntax-rearm
74282   'syntax-taint
74283   'syntax-binding-set
74284   'syntax-binding-set?
74285   'syntax-binding-set-extend
74286   'syntax-binding-set->syntax
74287   'syntax-serialize
74288   'syntax-deserialize
74289   'raise-syntax-error
74290   'struct:exn:fail:syntax
74291   'exn:fail:syntax
74292   'make-exn:fail:syntax
74293   'exn:fail:syntax?
74294   'exn:fail:syntax-exprs
74295   'struct:exn:fail:syntax:unbound
74296   'exn:fail:syntax:unbound
74297   'make-exn:fail:syntax:unbound
74298   'exn:fail:syntax:unbound?
74299   'current-module-path-for-load
74300   'prop:exn:missing-module
74301   'exn:missing-module?
74302   'exn:missing-module-accessor
74303   'struct:exn:fail:filesystem:missing-module
74304   'exn:fail:filesystem:missing-module
74305   'make-exn:fail:filesystem:missing-module
74306   'exn:fail:filesystem:missing-module?
74307   'exn:fail:filesystem:missing-module-path
74308   'struct:exn:fail:syntax:missing-module
74309   'exn:fail:syntax:missing-module
74310   'make-exn:fail:syntax:missing-module
74311   'exn:fail:syntax:missing-module?
74312   'exn:fail:syntax:missing-module-path
74313   'syntax-transforming?
74314   'syntax-transforming-with-lifts?
74315   'syntax-transforming-module-expression?
74316   'syntax-local-transforming-module-provides?
74317   'syntax-local-context
74318   'syntax-local-introduce
74319   'syntax-local-identifier-as-binding
74320   'syntax-local-phase-level
74321   'syntax-local-name
74322   'make-syntax-introducer
74323   'make-interned-syntax-introducer
74324   'make-syntax-delta-introducer
74325   'syntax-local-make-delta-introducer
74326   'syntax-local-value
74327   'syntax-local-value/immediate
74328   'syntax-local-lift-expression
74329   'syntax-local-lift-values-expression
74330   'syntax-local-lift-context
74331   'syntax-local-lift-module
74332   'syntax-local-lift-require
74333   'syntax-local-lift-provide
74334   'syntax-local-lift-module-end-declaration
74335   'syntax-local-module-defined-identifiers
74336   'syntax-local-module-required-identifiers
74337   'syntax-local-module-exports
74338   'syntax-local-submodules
74339   'syntax-local-module-interned-scope-symbols
74340   'syntax-local-get-shadower
74341   'syntax-local-apply-transformer
74342   'local-expand
74343   'local-expand/capture-lifts
74344   'local-transformer-expand
74345   'local-transformer-expand/capture-lifts
74346   'syntax-local-expand-expression
74347   'internal-definition-context?
74348   'syntax-local-make-definition-context
74349   'syntax-local-bind-syntaxes
74350   'internal-definition-context-binding-identifiers
74351   'internal-definition-context-introduce
74352   'internal-definition-context-seal
74353   'identifier-remove-from-definition-context
74354   'internal-definition-context-add-scopes
74355   'internal-definition-context-splice-binding-identifier
74356   'make-set!-transformer
74357   'prop:set!-transformer
74358   'set!-transformer?
74359   'set!-transformer-procedure
74360   'rename-transformer?
74361   'prop:rename-transformer
74362   'make-rename-transformer
74363   'rename-transformer-target
74364   'prop:liberal-define-context
74365   'liberal-define-context?
74366   'prop:expansion-contexts
74367   'module-path?
74368   'resolved-module-path?
74369   'make-resolved-module-path
74370   'resolved-module-path-name
74371   'module-path-index?
74372   'module-path-index-resolve
74373   'module-path-index-join
74374   'module-path-index-split
74375   'module-path-index-submodule
74376   'current-module-name-resolver
74377   'current-module-declare-name
74378   'current-module-declare-source
74379   'current-namespace
74380   'namespace-module-registry
74381   'namespace?
74382   'variable-reference->empty-namespace
74383   'variable-reference->namespace
74384   'variable-reference->resolved-module-path
74385   'variable-reference->module-path-index
74386   'variable-reference->module-source
74387   'variable-reference->phase
74388   'variable-reference->module-base-phase
74389   'variable-reference->module-declaration-inspector
74390   'read-syntax
74391   'read-syntax/recursive))
74392(define effect_2704
74393  (begin
74394    (void
74395     (begin
74396       (add-core-primitive!.1 #f 'syntax? syntax?$1)
74397       (add-core-primitive!.1 #f 'syntax-e 1/syntax-e)
74398       (add-core-primitive!.1 #f 'syntax->datum 1/syntax->datum)
74399       (add-core-primitive!.1 #f 'datum->syntax 1/datum->syntax)
74400       (add-core-primitive!.1 #f 'bound-identifier=? 1/bound-identifier=?)
74401       (add-core-primitive!.1 #f 'free-identifier=? 1/free-identifier=?)
74402       (add-core-primitive!.1
74403        #f
74404        'free-transformer-identifier=?
74405        1/free-transformer-identifier=?)
74406       (add-core-primitive!.1
74407        #f
74408        'free-template-identifier=?
74409        1/free-template-identifier=?)
74410       (add-core-primitive!.1
74411        #f
74412        'free-label-identifier=?
74413        1/free-label-identifier=?)
74414       (add-core-primitive!.1 #f 'identifier-binding 1/identifier-binding)
74415       (add-core-primitive!.1
74416        #f
74417        'identifier-transformer-binding
74418        1/identifier-transformer-binding)
74419       (add-core-primitive!.1
74420        #f
74421        'identifier-template-binding
74422        1/identifier-template-binding)
74423       (add-core-primitive!.1
74424        #f
74425        'identifier-label-binding
74426        1/identifier-label-binding)
74427       (add-core-primitive!.1
74428        #f
74429        'identifier-binding-symbol
74430        1/identifier-binding-symbol)
74431       (add-core-primitive!.1
74432        #f
74433        'identifier-prune-lexical-context
74434        1/identifier-prune-lexical-context)
74435       (add-core-primitive!.1 #f 'syntax-debug-info 1/syntax-debug-info)
74436       (add-core-primitive!.1 #f 'syntax-track-origin 1/syntax-track-origin)
74437       (add-core-primitive!.1
74438        #f
74439        'syntax-shift-phase-level
74440        1/syntax-shift-phase-level)
74441       (add-core-primitive!.1 #f 'syntax-source-module 1/syntax-source-module)
74442       (add-core-primitive!.1
74443        #f
74444        'identifier-prune-to-source-module
74445        1/identifier-prune-to-source-module)
74446       (add-core-primitive!.1 #f 'syntax-srcloc 1/syntax-srcloc)
74447       (add-core-primitive!.1 #f 'syntax-source 1/syntax-source)
74448       (add-core-primitive!.1 #f 'syntax-line 1/syntax-line)
74449       (add-core-primitive!.1 #f 'syntax-column 1/syntax-column)
74450       (add-core-primitive!.1 #f 'syntax-position 1/syntax-position)
74451       (add-core-primitive!.1 #f 'syntax-span 1/syntax-span)
74452       (add-core-primitive!.1 #f 'syntax->list 1/syntax->list)
74453       (add-core-primitive!.1 #f 'syntax-property syntax-property$1)
74454       (add-core-primitive!.1
74455        #f
74456        'syntax-property-remove
74457        1/syntax-property-remove)
74458       (add-core-primitive!.1
74459        #f
74460        'syntax-property-preserved?
74461        1/syntax-property-preserved?)
74462       (add-core-primitive!.1
74463        #f
74464        'syntax-property-symbol-keys
74465        1/syntax-property-symbol-keys)
74466       (add-core-primitive!.1 #f 'syntax-original? 1/syntax-original?)
74467       (add-core-primitive!.1 #f 'syntax-tainted? 1/syntax-tainted?)
74468       (add-core-primitive!.1 #f 'syntax-arm 1/syntax-arm)
74469       (add-core-primitive!.1 #f 'syntax-disarm 1/syntax-disarm)
74470       (add-core-primitive!.1 #f 'syntax-rearm 1/syntax-rearm)
74471       (add-core-primitive!.1 #f 'syntax-taint 1/syntax-taint)
74472       (add-core-primitive!.1 #f 'syntax-binding-set 1/syntax-binding-set)
74473       (add-core-primitive!.1 #f 'syntax-binding-set? 1/syntax-binding-set?)
74474       (add-core-primitive!.1
74475        #f
74476        'syntax-binding-set-extend
74477        1/syntax-binding-set-extend)
74478       (add-core-primitive!.1
74479        #f
74480        'syntax-binding-set->syntax
74481        1/syntax-binding-set->syntax)
74482       (add-core-primitive!.1 #f 'syntax-serialize 1/syntax-serialize)
74483       (add-core-primitive!.1 #f 'syntax-deserialize 1/syntax-deserialize)
74484       (add-core-primitive!.1 #f 'raise-syntax-error raise-syntax-error$1)
74485       (add-core-primitive!.1
74486        #f
74487        'struct:exn:fail:syntax
74488        1/struct:exn:fail:syntax)
74489       (add-core-primitive!.1 #f 'exn:fail:syntax make-exn:fail:syntax$1)
74490       (add-core-primitive!.1 #f 'make-exn:fail:syntax make-exn:fail:syntax$1)
74491       (add-core-primitive!.1 #f 'exn:fail:syntax? 1/exn:fail:syntax?)
74492       (let ((exn:fail:syntax-exprs98_0
74493              (check-not-unsafe-undefined
74494               1/exn:fail:syntax-exprs
74495               '1/exn:fail:syntax-exprs)))
74496         (add-core-primitive!.1
74497          #f
74498          'exn:fail:syntax-exprs
74499          exn:fail:syntax-exprs98_0))
74500       (add-core-primitive!.1
74501        #f
74502        'struct:exn:fail:syntax:unbound
74503        1/struct:exn:fail:syntax:unbound)
74504       (add-core-primitive!.1
74505        #f
74506        'exn:fail:syntax:unbound
74507        make-exn:fail:syntax:unbound$1)
74508       (add-core-primitive!.1
74509        #f
74510        'make-exn:fail:syntax:unbound
74511        make-exn:fail:syntax:unbound$1)
74512       (add-core-primitive!.1
74513        #f
74514        'exn:fail:syntax:unbound?
74515        1/exn:fail:syntax:unbound?)
74516       (add-core-primitive!.1
74517        #f
74518        'current-module-path-for-load
74519        1/current-module-path-for-load)
74520       (add-core-primitive!.1
74521        #f
74522        'prop:exn:missing-module
74523        1/prop:exn:missing-module)
74524       (add-core-primitive!.1 #f 'exn:missing-module? 1/exn:missing-module?)
74525       (add-core-primitive!.1
74526        #f
74527        'exn:missing-module-accessor
74528        1/exn:missing-module-accessor)
74529       (add-core-primitive!.1
74530        #f
74531        'struct:exn:fail:filesystem:missing-module
74532        1/struct:exn:fail:filesystem:missing-module)
74533       (add-core-primitive!.1
74534        #f
74535        'exn:fail:filesystem:missing-module
74536        1/make-exn:fail:filesystem:missing-module)
74537       (add-core-primitive!.1
74538        #f
74539        'make-exn:fail:filesystem:missing-module
74540        1/make-exn:fail:filesystem:missing-module)
74541       (add-core-primitive!.1
74542        #f
74543        'exn:fail:filesystem:missing-module?
74544        1/exn:fail:filesystem:missing-module?)
74545       (let ((exn:fail:filesystem:missing-module-path124_0
74546              (check-not-unsafe-undefined
74547               1/exn:fail:filesystem:missing-module-path
74548               '1/exn:fail:filesystem:missing-module-path)))
74549         (add-core-primitive!.1
74550          #f
74551          'exn:fail:filesystem:missing-module-path
74552          exn:fail:filesystem:missing-module-path124_0))
74553       (add-core-primitive!.1
74554        #f
74555        'struct:exn:fail:syntax:missing-module
74556        1/struct:exn:fail:syntax:missing-module)
74557       (add-core-primitive!.1
74558        #f
74559        'exn:fail:syntax:missing-module
74560        1/make-exn:fail:syntax:missing-module)
74561       (add-core-primitive!.1
74562        #f
74563        'make-exn:fail:syntax:missing-module
74564        1/make-exn:fail:syntax:missing-module)
74565       (add-core-primitive!.1
74566        #f
74567        'exn:fail:syntax:missing-module?
74568        1/exn:fail:syntax:missing-module?)
74569       (let ((exn:fail:syntax:missing-module-path134_0
74570              (check-not-unsafe-undefined
74571               1/exn:fail:syntax:missing-module-path
74572               '1/exn:fail:syntax:missing-module-path)))
74573         (add-core-primitive!.1
74574          #f
74575          'exn:fail:syntax:missing-module-path
74576          exn:fail:syntax:missing-module-path134_0))
74577       (add-core-primitive!.1 #f 'syntax-transforming? 1/syntax-transforming?)
74578       (add-core-primitive!.1
74579        #f
74580        'syntax-transforming-with-lifts?
74581        1/syntax-transforming-with-lifts?)
74582       (add-core-primitive!.1
74583        #f
74584        'syntax-transforming-module-expression?
74585        1/syntax-transforming-module-expression?)
74586       (add-core-primitive!.1
74587        #f
74588        'syntax-local-transforming-module-provides?
74589        1/syntax-local-transforming-module-provides?)
74590       (add-core-primitive!.1 #f 'syntax-local-context 1/syntax-local-context)
74591       (add-core-primitive!.1
74592        #f
74593        'syntax-local-introduce
74594        1/syntax-local-introduce)
74595       (add-core-primitive!.1
74596        #f
74597        'syntax-local-identifier-as-binding
74598        1/syntax-local-identifier-as-binding)
74599       (add-core-primitive!.1
74600        #f
74601        'syntax-local-phase-level
74602        1/syntax-local-phase-level)
74603       (add-core-primitive!.1 #f 'syntax-local-name 1/syntax-local-name)
74604       (add-core-primitive!.1
74605        #f
74606        'make-syntax-introducer
74607        1/make-syntax-introducer)
74608       (add-core-primitive!.1
74609        #f
74610        'make-interned-syntax-introducer
74611        1/make-interned-syntax-introducer)
74612       (add-core-primitive!.1
74613        #f
74614        'make-syntax-delta-introducer
74615        1/make-syntax-delta-introducer)
74616       (add-core-primitive!.1
74617        #f
74618        'syntax-local-make-delta-introducer
74619        1/syntax-local-make-delta-introducer)
74620       (add-core-primitive!.1 #t 'syntax-local-value 1/syntax-local-value)
74621       (add-core-primitive!.1
74622        #t
74623        'syntax-local-value/immediate
74624        1/syntax-local-value/immediate)
74625       (add-core-primitive!.1
74626        #f
74627        'syntax-local-lift-expression
74628        1/syntax-local-lift-expression)
74629       (add-core-primitive!.1
74630        #f
74631        'syntax-local-lift-values-expression
74632        1/syntax-local-lift-values-expression)
74633       (add-core-primitive!.1
74634        #f
74635        'syntax-local-lift-context
74636        1/syntax-local-lift-context)
74637       (add-core-primitive!.1
74638        #f
74639        'syntax-local-lift-module
74640        1/syntax-local-lift-module)
74641       (add-core-primitive!.1
74642        #f
74643        'syntax-local-lift-require
74644        1/syntax-local-lift-require)
74645       (add-core-primitive!.1
74646        #f
74647        'syntax-local-lift-provide
74648        1/syntax-local-lift-provide)
74649       (add-core-primitive!.1
74650        #f
74651        'syntax-local-lift-module-end-declaration
74652        1/syntax-local-lift-module-end-declaration)
74653       (add-core-primitive!.1
74654        #f
74655        'syntax-local-module-defined-identifiers
74656        1/syntax-local-module-defined-identifiers)
74657       (add-core-primitive!.1
74658        #f
74659        'syntax-local-module-required-identifiers
74660        1/syntax-local-module-required-identifiers)
74661       (add-core-primitive!.1
74662        #f
74663        'syntax-local-module-exports
74664        1/syntax-local-module-exports)
74665       (add-core-primitive!.1
74666        #f
74667        'syntax-local-submodules
74668        1/syntax-local-submodules)
74669       (add-core-primitive!.1
74670        #f
74671        'syntax-local-module-interned-scope-symbols
74672        1/syntax-local-module-interned-scope-symbols)
74673       (add-core-primitive!.1
74674        #f
74675        'syntax-local-get-shadower
74676        1/syntax-local-get-shadower)
74677       (add-core-primitive!.1
74678        #f
74679        'syntax-local-apply-transformer
74680        1/syntax-local-apply-transformer)
74681       (add-core-primitive!.1 #t 'local-expand 1/local-expand)
74682       (add-core-primitive!.1
74683        #t
74684        'local-expand/capture-lifts
74685        1/local-expand/capture-lifts)
74686       (add-core-primitive!.1
74687        #t
74688        'local-transformer-expand
74689        1/local-transformer-expand)
74690       (add-core-primitive!.1
74691        #t
74692        'local-transformer-expand/capture-lifts
74693        1/local-transformer-expand/capture-lifts)
74694       (add-core-primitive!.1
74695        #t
74696        'syntax-local-expand-expression
74697        1/syntax-local-expand-expression)
74698       (add-core-primitive!.1
74699        #f
74700        'internal-definition-context?
74701        1/internal-definition-context?)
74702       (add-core-primitive!.1
74703        #f
74704        'syntax-local-make-definition-context
74705        1/syntax-local-make-definition-context)
74706       (add-core-primitive!.1
74707        #f
74708        'syntax-local-bind-syntaxes
74709        1/syntax-local-bind-syntaxes)
74710       (add-core-primitive!.1
74711        #f
74712        'internal-definition-context-binding-identifiers
74713        1/internal-definition-context-binding-identifiers)
74714       (add-core-primitive!.1
74715        #f
74716        'internal-definition-context-introduce
74717        1/internal-definition-context-introduce)
74718       (add-core-primitive!.1
74719        #f
74720        'internal-definition-context-seal
74721        1/internal-definition-context-seal)
74722       (add-core-primitive!.1
74723        #f
74724        'identifier-remove-from-definition-context
74725        1/identifier-remove-from-definition-context)
74726       (add-core-primitive!.1
74727        #f
74728        'internal-definition-context-add-scopes
74729        1/internal-definition-context-add-scopes)
74730       (add-core-primitive!.1
74731        #f
74732        'internal-definition-context-splice-binding-identifier
74733        1/internal-definition-context-splice-binding-identifier)
74734       (add-core-primitive!.1
74735        #f
74736        'make-set!-transformer
74737        1/make-set!-transformer)
74738       (add-core-primitive!.1
74739        #f
74740        'prop:set!-transformer
74741        1/prop:set!-transformer)
74742       (add-core-primitive!.1 #f 'set!-transformer? 1/set!-transformer?)
74743       (add-core-primitive!.1
74744        #f
74745        'set!-transformer-procedure
74746        1/set!-transformer-procedure)
74747       (add-core-primitive!.1 #f 'rename-transformer? 1/rename-transformer?)
74748       (add-core-primitive!.1
74749        #f
74750        'prop:rename-transformer
74751        1/prop:rename-transformer)
74752       (add-core-primitive!.1
74753        #f
74754        'make-rename-transformer
74755        1/make-rename-transformer)
74756       (add-core-primitive!.1
74757        #f
74758        'rename-transformer-target
74759        1/rename-transformer-target)
74760       (add-core-primitive!.1
74761        #f
74762        'prop:liberal-define-context
74763        1/prop:liberal-define-context)
74764       (add-core-primitive!.1
74765        #f
74766        'liberal-define-context?
74767        has-liberal-define-context-property?)
74768       (add-core-primitive!.1
74769        #f
74770        'prop:expansion-contexts
74771        1/prop:expansion-contexts)
74772       (add-core-primitive!.1 #f 'module-path? 1/module-path?)
74773       (add-core-primitive!.1
74774        #f
74775        'resolved-module-path?
74776        1/resolved-module-path?)
74777       (add-core-primitive!.1
74778        #f
74779        'make-resolved-module-path
74780        1/make-resolved-module-path)
74781       (add-core-primitive!.1
74782        #f
74783        'resolved-module-path-name
74784        1/resolved-module-path-name)
74785       (add-core-primitive!.1 #f 'module-path-index? 1/module-path-index?)
74786       (add-core-primitive!.1
74787        #f
74788        'module-path-index-resolve
74789        1/module-path-index-resolve)
74790       (add-core-primitive!.1
74791        #f
74792        'module-path-index-join
74793        1/module-path-index-join)
74794       (add-core-primitive!.1
74795        #f
74796        'module-path-index-split
74797        1/module-path-index-split)
74798       (add-core-primitive!.1
74799        #f
74800        'module-path-index-submodule
74801        1/module-path-index-submodule)
74802       (let ((current-module-name-resolver269_0
74803              1/current-module-name-resolver))
74804         (add-core-primitive!.1
74805          #t
74806          'current-module-name-resolver
74807          current-module-name-resolver269_0))
74808       (add-core-primitive!.1
74809        #f
74810        'current-module-declare-name
74811        1/current-module-declare-name)
74812       (add-core-primitive!.1
74813        #f
74814        'current-module-declare-source
74815        1/current-module-declare-source)
74816       (add-core-primitive!.1 #f 'current-namespace 1/current-namespace)
74817       (add-core-primitive!.1
74818        #f
74819        'namespace-module-registry
74820        namespace-module-registry$1)
74821       (add-core-primitive!.1 #f 'namespace? 1/namespace?)
74822       (add-core-primitive!.1
74823        #f
74824        'variable-reference->empty-namespace
74825        1/variable-reference->empty-namespace)
74826       (add-core-primitive!.1
74827        #f
74828        'variable-reference->namespace
74829        1/variable-reference->namespace)
74830       (add-core-primitive!.1
74831        #f
74832        'variable-reference->resolved-module-path
74833        1/variable-reference->resolved-module-path)
74834       (add-core-primitive!.1
74835        #f
74836        'variable-reference->module-path-index
74837        1/variable-reference->module-path-index)
74838       (add-core-primitive!.1
74839        #f
74840        'variable-reference->module-source
74841        1/variable-reference->module-source)
74842       (add-core-primitive!.1
74843        #f
74844        'variable-reference->phase
74845        1/variable-reference->phase)
74846       (add-core-primitive!.1
74847        #f
74848        'variable-reference->module-base-phase
74849        1/variable-reference->module-base-phase)
74850       (add-core-primitive!.1
74851        #f
74852        'variable-reference->module-declaration-inspector
74853        1/variable-reference->module-declaration-inspector)
74854       (add-core-primitive!.1 #f 'read-syntax 1/read-syntax)
74855       (add-core-primitive!.1
74856        #f
74857        'read-syntax/recursive
74858        1/read-syntax/recursive)))
74859    (void)))
74860(define declare-kernel-module!.1
74861  (|#%name|
74862   declare-kernel-module!
74863   (lambda (main-ids1_0 read-ids2_0 ns5_0)
74864     (begin
74865       (begin
74866         (let ((temp45_0
74867                (set-union primitive-ids (set-union main-ids1_0 read-ids2_0))))
74868           (let ((temp46_0
74869                  (hasheq
74870                   'variable-reference?
74871                   variable-reference?
74872                   'variable-reference-constant?
74873                   variable-reference-constant?
74874                   'variable-reference-from-unsafe?
74875                   variable-reference-from-unsafe?)))
74876             (let ((temp45_1 temp45_0))
74877               (copy-runtime-module!.1
74878                hash2610
74879                temp46_0
74880                ns5_0
74881                #t
74882                #f
74883                temp45_1
74884                '|#%runtime|
74885                '|#%kernel|))))
74886         (let ((temp49_0 '(|#%core| |#%runtime| |#%main| |#%read|)))
74887           (declare-reexporting-module!.1 ns5_0 #t '|#%kernel| temp49_0)))))))
74888(define copy-runtime-module!.1
74889  (|#%name|
74890   copy-runtime-module!
74891   (lambda (alts10_0
74892            extras11_0
74893            namespace8_0
74894            primitive?12_0
74895            protected?13_0
74896            skip9_0
74897            to7_0
74898            name21_0)
74899     (begin
74900       (let ((to-name_0 (if (eq? to7_0 unsafe-undefined) name21_0 to7_0)))
74901         (let ((skip-syms_0
74902                (if (eq? skip9_0 unsafe-undefined) (seteq) skip9_0)))
74903           (let ((prims_0 (primitive-table name21_0)))
74904             (begin
74905               (begin
74906                 (letrec*
74907                  ((for-loop_0
74908                    (|#%name|
74909                     for-loop
74910                     (lambda (i_0)
74911                       (begin
74912                         (if i_0
74913                           (let ((sym_0 (hash-iterate-key prims_0 i_0)))
74914                             (begin
74915                               (begin-unsafe
74916                                (hash-set! built-in-symbols sym_0 #t))
74917                               (for-loop_0 (hash-iterate-next prims_0 i_0))))
74918                           (values)))))))
74919                  (for-loop_0 (hash-iterate-first prims_0))))
74920               (let ((ht_0
74921                      (begin
74922                        (letrec*
74923                         ((for-loop_0
74924                           (|#%name|
74925                            for-loop
74926                            (lambda (table_0 i_0)
74927                              (begin
74928                                (if i_0
74929                                  (call-with-values
74930                                   (lambda ()
74931                                     (hash-iterate-key+value prims_0 i_0))
74932                                   (case-lambda
74933                                    ((sym_0 val_0)
74934                                     (let ((table_1
74935                                            (if (begin-unsafe
74936                                                 (hash-ref
74937                                                  skip-syms_0
74938                                                  sym_0
74939                                                  #f))
74940                                              table_0
74941                                              (let ((table_1
74942                                                     (call-with-values
74943                                                      (lambda ()
74944                                                        (values
74945                                                         sym_0
74946                                                         (let ((or-part_0
74947                                                                (hash-ref
74948                                                                 alts10_0
74949                                                                 sym_0
74950                                                                 #f)))
74951                                                           (if or-part_0
74952                                                             or-part_0
74953                                                             val_0))))
74954                                                      (case-lambda
74955                                                       ((key_0 val_1)
74956                                                        (hash-set
74957                                                         table_0
74958                                                         key_0
74959                                                         val_1))
74960                                                       (args
74961                                                        (raise-binding-result-arity-error
74962                                                         2
74963                                                         args))))))
74964                                                (values table_1)))))
74965                                       (for-loop_0
74966                                        table_1
74967                                        (hash-iterate-next prims_0 i_0))))
74968                                    (args
74969                                     (raise-binding-result-arity-error
74970                                      2
74971                                      args))))
74972                                  table_0))))))
74973                         (for-loop_0
74974                          hash2610
74975                          (hash-iterate-first prims_0))))))
74976                 (let ((ht+extras_0
74977                        (begin
74978                          (letrec*
74979                           ((for-loop_0
74980                             (|#%name|
74981                              for-loop
74982                              (lambda (ht_1 i_0)
74983                                (begin
74984                                  (if i_0
74985                                    (call-with-values
74986                                     (lambda ()
74987                                       (hash-iterate-key+value extras11_0 i_0))
74988                                     (case-lambda
74989                                      ((k_0 v_0)
74990                                       (let ((ht_2
74991                                              (let ((ht_2
74992                                                     (hash-set ht_1 k_0 v_0)))
74993                                                (values ht_2))))
74994                                         (for-loop_0
74995                                          ht_2
74996                                          (hash-iterate-next extras11_0 i_0))))
74997                                      (args
74998                                       (raise-binding-result-arity-error
74999                                        2
75000                                        args))))
75001                                    ht_1))))))
75002                           (for-loop_0
75003                            ht_0
75004                            (hash-iterate-first extras11_0))))))
75005                   (declare-hash-based-module!.1
75006                    namespace8_0
75007                    primitive?12_0
75008                    null
75009                    protected?13_0
75010                    #f
75011                    to-name_0
75012                    ht+extras_0)))))))))))
75013(define declare-hash-based-module!.1
75014  (|#%name|
75015   declare-hash-based-module!
75016   (lambda (namespace23_0
75017            primitive?24_0
75018            protected26_0
75019            protected?25_0
75020            register-builtin?27_0
75021            name33_0
75022            ht34_0)
75023     (begin
75024       (let ((mpi_0 (1/module-path-index-join (list 'quote name33_0) #f)))
75025         (let ((temp57_0
75026                (let ((temp62_0
75027                       (if (not protected?25_0) (null? protected26_0) #f)))
75028                  (let ((temp64_0
75029                         (hasheqv
75030                          0
75031                          (begin
75032                            (letrec*
75033                             ((for-loop_0
75034                               (|#%name|
75035                                for-loop
75036                                (lambda (table_0 i_0)
75037                                  (begin
75038                                    (if i_0
75039                                      (let ((sym_0
75040                                             (hash-iterate-key ht34_0 i_0)))
75041                                        (let ((table_1
75042                                               (let ((table_1
75043                                                      (call-with-values
75044                                                       (lambda ()
75045                                                         (begin
75046                                                           (if register-builtin?27_0
75047                                                             (begin-unsafe
75048                                                              (hash-set!
75049                                                               built-in-symbols
75050                                                               sym_0
75051                                                               #t))
75052                                                             (void))
75053                                                           (let ((binding_0
75054                                                                  (make-module-binding.1
75055                                                                   #f
75056                                                                   null
75057                                                                   #f
75058                                                                   #f
75059                                                                   unsafe-undefined
75060                                                                   unsafe-undefined
75061                                                                   0
75062                                                                   unsafe-undefined
75063                                                                   mpi_0
75064                                                                   0
75065                                                                   sym_0)))
75066                                                             (values
75067                                                              sym_0
75068                                                              (if (if protected?25_0
75069                                                                    protected?25_0
75070                                                                    (member
75071                                                                     sym_0
75072                                                                     protected26_0))
75073                                                                (provided1.1
75074                                                                 binding_0
75075                                                                 #t
75076                                                                 #f)
75077                                                                binding_0)))))
75078                                                       (case-lambda
75079                                                        ((key_0 val_0)
75080                                                         (hash-set
75081                                                          table_0
75082                                                          key_0
75083                                                          val_0))
75084                                                        (args
75085                                                         (raise-binding-result-arity-error
75086                                                          2
75087                                                          args))))))
75088                                                 (values table_1))))
75089                                          (for-loop_0
75090                                           table_1
75091                                           (hash-iterate-next ht34_0 i_0))))
75092                                      table_0))))))
75093                             (for-loop_0
75094                              hash2725
75095                              (hash-iterate-first ht34_0)))))))
75096                    (let ((temp65_0
75097                           (lambda (data-box_0
75098                                    ns_0
75099                                    phase-shift_0
75100                                    phase-level_0
75101                                    self_0
75102                                    bulk-binding-registry_0
75103                                    insp_0)
75104                             (if (= 0 phase-level_0)
75105                               (begin
75106                                 (begin
75107                                   (letrec*
75108                                    ((for-loop_0
75109                                      (|#%name|
75110                                       for-loop
75111                                       (lambda (i_0)
75112                                         (begin
75113                                           (if i_0
75114                                             (call-with-values
75115                                              (lambda ()
75116                                                (hash-iterate-key+value
75117                                                 ht34_0
75118                                                 i_0))
75119                                              (case-lambda
75120                                               ((sym_0 val_0)
75121                                                (begin
75122                                                  (namespace-set-variable!
75123                                                   ns_0
75124                                                   0
75125                                                   sym_0
75126                                                   val_0
75127                                                   #t)
75128                                                  (for-loop_0
75129                                                   (hash-iterate-next
75130                                                    ht34_0
75131                                                    i_0))))
75132                                               (args
75133                                                (raise-binding-result-arity-error
75134                                                 2
75135                                                 args))))
75136                                             (values)))))))
75137                                    (for-loop_0 (hash-iterate-first ht34_0))))
75138                                 (void))
75139                               (void)))))
75140                      (let ((temp64_1 temp64_0) (temp62_1 temp62_0))
75141                        (make-module.1
75142                         #t
75143                         void
75144                         unsafe-undefined
75145                         temp65_0
75146                         #f
75147                         0
75148                         0
75149                         temp62_1
75150                         unsafe-undefined
75151                         #t
75152                         void
75153                         primitive?24_0
75154                         temp64_1
75155                         null
75156                         mpi_0
75157                         #f
75158                         null
75159                         #f)))))))
75160           (let ((temp58_0 (1/module-path-index-resolve mpi_0)))
75161             (let ((temp57_1 temp57_0))
75162               (declare-module!.1 #t namespace23_0 temp57_1 temp58_0)))))))))
75163(define declare-reexporting-module!.1
75164  (|#%name|
75165   declare-reexporting-module!
75166   (lambda (namespace37_0 reexport?36_0 name40_0 require-names41_0)
75167     (begin
75168       (let ((mpi_0 (1/module-path-index-join (list 'quote name40_0) #f)))
75169         (let ((require-mpis_0
75170                (reverse$1
75171                 (begin
75172                   (letrec*
75173                    ((for-loop_0
75174                      (|#%name|
75175                       for-loop
75176                       (lambda (fold-var_0 lst_0)
75177                         (begin
75178                           (if (pair? lst_0)
75179                             (let ((require-name_0 (unsafe-car lst_0)))
75180                               (let ((rest_0 (unsafe-cdr lst_0)))
75181                                 (let ((fold-var_1
75182                                        (let ((fold-var_1
75183                                               (cons
75184                                                (1/module-path-index-join
75185                                                 (list 'quote require-name_0)
75186                                                 #f)
75187                                                fold-var_0)))
75188                                          (values fold-var_1))))
75189                                   (for-loop_0 fold-var_1 rest_0))))
75190                             fold-var_0))))))
75191                    (for-loop_0 null require-names41_0))))))
75192           (let ((temp75_0 (list (cons 0 require-mpis_0))))
75193             (let ((temp70_0
75194                    (let ((temp76_0
75195                           (if reexport?36_0
75196                             (hasheqv
75197                              0
75198                              (begin
75199                                (letrec*
75200                                 ((for-loop_0
75201                                   (|#%name|
75202                                    for-loop
75203                                    (lambda (table_0 lst_0)
75204                                      (begin
75205                                        (if (pair? lst_0)
75206                                          (let ((require-mpi_0
75207                                                 (unsafe-car lst_0)))
75208                                            (let ((rest_0 (unsafe-cdr lst_0)))
75209                                              (let ((table_1
75210                                                     (let ((id*_0
75211                                                            (namespace->module
75212                                                             namespace37_0
75213                                                             (1/module-path-index-resolve
75214                                                              require-mpi_0))))
75215                                                       (begin
75216                                                         #t
75217                                                         (letrec*
75218                                                          ((for-loop_1
75219                                                            (|#%name|
75220                                                             for-loop
75221                                                             (lambda (table_1)
75222                                                               (begin
75223                                                                 (let ((table_2
75224                                                                        (let ((ht_0
75225                                                                               (hash-ref
75226                                                                                (shift-provides-module-path-index
75227                                                                                 (module-provides
75228                                                                                  id*_0)
75229                                                                                 (module-self
75230                                                                                  id*_0)
75231                                                                                 require-mpi_0)
75232                                                                                0)))
75233                                                                          (begin
75234                                                                            (letrec*
75235                                                                             ((for-loop_2
75236                                                                               (|#%name|
75237                                                                                for-loop
75238                                                                                (lambda (table_2
75239                                                                                         i_0)
75240                                                                                  (begin
75241                                                                                    (if i_0
75242                                                                                      (call-with-values
75243                                                                                       (lambda ()
75244                                                                                         (hash-iterate-key+value
75245                                                                                          ht_0
75246                                                                                          i_0))
75247                                                                                       (case-lambda
75248                                                                                        ((sym_0
75249                                                                                          binding_0)
75250                                                                                         (let ((table_3
75251                                                                                                (let ((table_3
75252                                                                                                       (call-with-values
75253                                                                                                        (lambda ()
75254                                                                                                          (values
75255                                                                                                           sym_0
75256                                                                                                           binding_0))
75257                                                                                                        (case-lambda
75258                                                                                                         ((key_0
75259                                                                                                           val_0)
75260                                                                                                          (hash-set
75261                                                                                                           table_2
75262                                                                                                           key_0
75263                                                                                                           val_0))
75264                                                                                                         (args
75265                                                                                                          (raise-binding-result-arity-error
75266                                                                                                           2
75267                                                                                                           args))))))
75268                                                                                                  (values
75269                                                                                                   table_3))))
75270                                                                                           (for-loop_2
75271                                                                                            table_3
75272                                                                                            (hash-iterate-next
75273                                                                                             ht_0
75274                                                                                             i_0))))
75275                                                                                        (args
75276                                                                                         (raise-binding-result-arity-error
75277                                                                                          2
75278                                                                                          args))))
75279                                                                                      table_2))))))
75280                                                                             (for-loop_2
75281                                                                              table_1
75282                                                                              (hash-iterate-first
75283                                                                               ht_0)))))))
75284                                                                   table_2))))))
75285                                                          (for-loop_1
75286                                                           table_0))))))
75287                                                (for-loop_0 table_1 rest_0))))
75288                                          table_0))))))
75289                                 (for-loop_0 hash2725 require-mpis_0))))
75290                             hash2589)))
75291                      (let ((temp75_1 temp75_0))
75292                        (make-module.1
75293                         #t
75294                         void
75295                         unsafe-undefined
75296                         void
75297                         #f
75298                         0
75299                         0
75300                         #f
75301                         unsafe-undefined
75302                         #t
75303                         void
75304                         #f
75305                         temp76_0
75306                         temp75_1
75307                         mpi_0
75308                         #f
75309                         null
75310                         #f)))))
75311               (let ((temp71_0 (1/module-path-index-resolve mpi_0)))
75312                 (let ((temp70_1 temp70_0))
75313                   (declare-module!.1
75314                    #t
75315                    namespace37_0
75316                    temp70_1
75317                    temp71_0)))))))))))
75318(define read-primitives
75319  (hasheq
75320   'read
75321   1/read
75322   'read/recursive
75323   1/read/recursive
75324   'read-language
75325   1/read-language
75326   'string->number
75327   1/string->number
75328   'current-reader-guard
75329   1/current-reader-guard
75330   'read-square-bracket-as-paren
75331   1/read-square-bracket-as-paren
75332   'read-curly-brace-as-paren
75333   1/read-curly-brace-as-paren
75334   'read-square-bracket-with-tag
75335   1/read-square-bracket-with-tag
75336   'read-curly-brace-with-tag
75337   1/read-curly-brace-with-tag
75338   'read-cdot
75339   1/read-cdot
75340   'read-accept-graph
75341   1/read-accept-graph
75342   'read-accept-compiled
75343   1/read-accept-compiled
75344   'read-accept-box
75345   1/read-accept-box
75346   'read-decimal-as-inexact
75347   1/read-decimal-as-inexact
75348   'read-single-flonum
75349   1/read-single-flonum
75350   'read-accept-dot
75351   1/read-accept-dot
75352   'read-accept-infix-dot
75353   1/read-accept-infix-dot
75354   'read-accept-quasiquote
75355   1/read-accept-quasiquote
75356   'read-accept-reader
75357   1/read-accept-reader
75358   'read-accept-lang
75359   1/read-accept-lang
75360   'current-readtable
75361   1/current-readtable
75362   'readtable?
75363   1/readtable?
75364   'make-readtable
75365   1/make-readtable
75366   'readtable-mapping
75367   1/readtable-mapping
75368   'special-comment?
75369   1/special-comment?
75370   'make-special-comment
75371   1/make-special-comment
75372   'special-comment-value
75373   1/special-comment-value))
75374(define main-primitives
75375  (hasheq
75376   'eval
75377   eval$1
75378   'eval-syntax
75379   1/eval-syntax
75380   'compile
75381   compile$1
75382   'compile-syntax
75383   1/compile-syntax
75384   'expand
75385   1/expand
75386   'expand-syntax
75387   1/expand-syntax
75388   'expand-once
75389   1/expand-once
75390   'expand-syntax-once
75391   1/expand-syntax-once
75392   'expand-to-top-form
75393   1/expand-to-top-form
75394   'expand-syntax-to-top-form
75395   1/expand-syntax-to-top-form
75396   'dynamic-require
75397   1/dynamic-require
75398   'dynamic-require-for-syntax
75399   1/dynamic-require-for-syntax
75400   'load
75401   1/load
75402   'load-extension
75403   1/load-extension
75404   'load/use-compiled
75405   1/load/use-compiled
75406   'current-eval
75407   1/current-eval
75408   'current-compile
75409   1/current-compile
75410   'current-load
75411   1/current-load
75412   'current-load/use-compiled
75413   1/current-load/use-compiled
75414   'collection-path
75415   1/collection-path
75416   'collection-file-path
75417   1/collection-file-path
75418   'find-library-collection-paths
75419   1/find-library-collection-paths
75420   'find-library-collection-links
75421   1/find-library-collection-links
75422   'find-compiled-file-roots
75423   1/find-compiled-file-roots
75424   'current-library-collection-paths
75425   1/current-library-collection-paths
75426   'current-library-collection-links
75427   1/current-library-collection-links
75428   'use-compiled-file-paths
75429   1/use-compiled-file-paths
75430   'current-compiled-file-roots
75431   1/current-compiled-file-roots
75432   'use-compiled-file-check
75433   1/use-compiled-file-check
75434   'use-collection-link-paths
75435   1/use-collection-link-paths
75436   'use-user-specific-search-paths
75437   1/use-user-specific-search-paths
75438   'compiled-expression?
75439   1/compiled-expression?
75440   'compiled-module-expression?
75441   1/compiled-module-expression?
75442   'module-compiled-name
75443   1/module-compiled-name
75444   'module-compiled-submodules
75445   1/module-compiled-submodules
75446   'module-compiled-language-info
75447   1/module-compiled-language-info
75448   'module-compiled-imports
75449   1/module-compiled-imports
75450   'module-compiled-exports
75451   1/module-compiled-exports
75452   'module-compiled-indirect-exports
75453   1/module-compiled-indirect-exports
75454   'compiled-expression-recompile
75455   1/compiled-expression-recompile
75456   'make-empty-namespace
75457   1/make-empty-namespace
75458   'namespace-attach-module
75459   1/namespace-attach-module
75460   'namespace-attach-module-declaration
75461   1/namespace-attach-module-declaration
75462   'namespace-symbol->identifier
75463   1/namespace-symbol->identifier
75464   'namespace-module-identifier
75465   1/namespace-module-identifier
75466   'namespace-syntax-introduce
75467   1/namespace-syntax-introduce
75468   'namespace-require
75469   1/namespace-require
75470   'namespace-require/copy
75471   1/namespace-require/copy
75472   'namespace-require/constant
75473   1/namespace-require/constant
75474   'namespace-require/expansion-time
75475   1/namespace-require/expansion-time
75476   'namespace-variable-value
75477   1/namespace-variable-value
75478   'namespace-set-variable-value!
75479   1/namespace-set-variable-value!
75480   'namespace-undefine-variable!
75481   1/namespace-undefine-variable!
75482   'namespace-mapped-symbols
75483   1/namespace-mapped-symbols
75484   'namespace-base-phase
75485   1/namespace-base-phase
75486   'namespace-call-with-registry-lock
75487   1/namespace-call-with-registry-lock
75488   'module-declared?
75489   1/module-declared?
75490   'module-predefined?
75491   1/module-predefined?
75492   'module->language-info
75493   1/module->language-info
75494   'module->imports
75495   1/module->imports
75496   'module->exports
75497   1/module->exports
75498   'module->indirect-exports
75499   1/module->indirect-exports
75500   'module-compiled-cross-phase-persistent?
75501   1/module-compiled-cross-phase-persistent?
75502   'module-provide-protected?
75503   1/module-provide-protected?
75504   'module->namespace
75505   1/module->namespace
75506   'namespace-unprotect-module
75507   1/namespace-unprotect-module))
75508(define utils-primitives
75509  (hasheq
75510   'path-string?
75511   path-string?
75512   'normal-case-path
75513   normal-case-path
75514   'path-replace-extension
75515   path-replace-extension
75516   'path-add-extension
75517   path-add-extension
75518   'reroot-path
75519   reroot-path
75520   'path-list-string->path-list
75521   path-list-string->path-list
75522   'find-executable-path
75523   find-executable-path
75524   'call-with-default-reading-parameterization
75525   call-with-default-reading-parameterization
75526   'collection-path
75527   1/collection-path
75528   'collection-file-path
75529   1/collection-file-path
75530   'find-library-collection-paths
75531   1/find-library-collection-paths
75532   'find-library-collection-links
75533   1/find-library-collection-links
75534   'load/use-compiled
75535   1/load/use-compiled
75536   'find-main-config
75537   find-main-config
75538   'find-main-collects
75539   find-main-collects))
75540(define expobs-primitives
75541  (hasheq
75542   'current-expand-observe
75543   current-expand-observe
75544   'syntax-local-expand-observer
75545   syntax-local-expand-observer))
75546(define-values
75547 (struct:TH-place-channel
75548  TH-place-channel
75549  TH-place-channel?
75550  TH-place-channel-ref
75551  TH-place-channel-set!)
75552 (make-struct-type
75553  'TH-place-channel
75554  #f
75555  2
75556  0
75557  #f
75558  (list (cons prop:evt (lambda (x_0) (|#%app| TH-place-channel-ref x_0 0))))))
75559(define TH-place-channel-in
75560  (lambda (x_0) (|#%app| TH-place-channel-ref x_0 0)))
75561(define TH-place-channel-out
75562  (lambda (x_0) (|#%app| TH-place-channel-ref x_0 1)))
75563(define place-struct-primitives
75564  (hasheq
75565   'struct:TH-place-channel
75566   struct:TH-place-channel
75567   'TH-place-channel
75568   TH-place-channel
75569   'TH-place-channel?
75570   TH-place-channel?
75571   'TH-place-channel-in
75572   TH-place-channel-in
75573   'TH-place-channel-out
75574   TH-place-channel-out))
75575(define 1/linklet-directory?
75576  (|#%name|
75577   linklet-directory?
75578   (lambda (v_0)
75579     (begin
75580       (let ((or-part_0 (linklet-directory?$1 v_0)))
75581         (if or-part_0 or-part_0 (compiled-in-memory? v_0)))))))
75582(define 1/linklet-directory->hash
75583  (|#%name|
75584   linklet-directory->hash
75585   (lambda (ld_0)
75586     (begin
75587       (linklet-directory->hash$1
75588        (if (compiled-in-memory? ld_0)
75589          (compiled-in-memory-linklet-directory ld_0)
75590          ld_0))))))
75591(define 1/linklet?
75592  (|#%name|
75593   linklet?
75594   (lambda (l_0)
75595     (begin
75596       (let ((or-part_0 (linklet? l_0)))
75597         (if or-part_0 or-part_0 (correlated-linklet? l_0)))))))
75598(define 1/recompile-linklet
75599  (|#%name|
75600   recompile-linklet
75601   (case-lambda
75602    ((lnk_0) (begin (recompile-linklet (force-compile-linklet lnk_0))))
75603    ((lnk_0 name_0) (recompile-linklet (force-compile-linklet lnk_0) name_0))
75604    ((lnk_0 name_0 import-keys_0)
75605     (recompile-linklet (force-compile-linklet lnk_0) name_0 import-keys_0))
75606    ((lnk_0 name_0 import-keys_0 get-import_0)
75607     (recompile-linklet
75608      (force-compile-linklet lnk_0)
75609      name_0
75610      import-keys_0
75611      get-import_0))
75612    ((lnk_0 name_0 import-keys_0 get-import_0 options_0)
75613     (recompile-linklet
75614      (force-compile-linklet lnk_0)
75615      name_0
75616      import-keys_0
75617      get-import_0
75618      options_0)))))
75619(define 1/eval-linklet
75620  (|#%name|
75621   eval-linklet
75622   (lambda (lnk_0) (begin (eval-linklet (force-compile-linklet lnk_0))))))
75623(define 1/instantiate-linklet
75624  (let ((instantiate-linklet_0
75625         (|#%name|
75626          instantiate-linklet
75627          (lambda (lnk3_0
75628                   import-instances4_0
75629                   target-instance1_0
75630                   use-prompt?2_0)
75631            (begin
75632              (instantiate-linklet
75633               (force-compile-linklet lnk3_0)
75634               import-instances4_0
75635               target-instance1_0
75636               use-prompt?2_0))))))
75637    (|#%name|
75638     instantiate-linklet
75639     (case-lambda
75640      ((lnk_0 import-instances_0)
75641       (begin (instantiate-linklet_0 lnk_0 import-instances_0 #f #f)))
75642      ((lnk_0 import-instances_0 target-instance_0 use-prompt?2_0)
75643       (instantiate-linklet_0
75644        lnk_0
75645        import-instances_0
75646        target-instance_0
75647        use-prompt?2_0))
75648      ((lnk_0 import-instances_0 target-instance1_0)
75649       (instantiate-linklet_0
75650        lnk_0
75651        import-instances_0
75652        target-instance1_0
75653        #f))))))
75654(define 1/linklet-import-variables
75655  (|#%name|
75656   linklet-import-variables
75657   (lambda (lnk_0)
75658     (begin (linklet-import-variables (force-compile-linklet lnk_0))))))
75659(define 1/linklet-export-variables
75660  (|#%name|
75661   linklet-export-variables
75662   (lambda (lnk_0)
75663     (begin (linklet-export-variables (force-compile-linklet lnk_0))))))
75664(define 1/linklet-body-reserved-symbol?
75665  (|#%name|
75666   linklet-body-reserved-symbol?
75667   (lambda (s_0)
75668     (begin
75669       (begin
75670         (if (symbol? s_0)
75671           (void)
75672           (raise-argument-error 'linklet-body-reserved-symbol? "symbol?" s_0))
75673         (begin-unsafe (hash-ref built-in-symbols s_0 #f)))))))
75674(define linklet-primitives
75675  (hasheq
75676   'primitive-table
75677   primitive-table
75678   'primitive->compiled-position
75679   primitive->compiled-position
75680   'compiled-position->primitive
75681   compiled-position->primitive
75682   'primitive-in-category?
75683   primitive-in-category?
75684   'primitive-lookup
75685   primitive-lookup
75686   'compile-linklet
75687   compile-linklet
75688   'instance?
75689   instance?
75690   'make-instance
75691   make-instance
75692   'instance-name
75693   instance-name
75694   'instance-data
75695   instance-data
75696   'instance-variable-names
75697   instance-variable-names
75698   'instance-variable-value
75699   instance-variable-value
75700   'instance-set-variable-value!
75701   instance-set-variable-value!
75702   'instance-unset-variable!
75703   instance-unset-variable!
75704   'instance-describe-variable!
75705   instance-describe-variable!
75706   'linklet-virtual-machine-bytes
75707   linklet-virtual-machine-bytes
75708   'write-linklet-bundle-hash
75709   write-linklet-bundle-hash
75710   'read-linklet-bundle-hash
75711   read-linklet-bundle-hash
75712   'variable-reference?
75713   variable-reference?
75714   'variable-reference->instance
75715   variable-reference->instance
75716   'variable-reference-constant?
75717   variable-reference-constant?
75718   'variable-reference-from-unsafe?
75719   variable-reference-from-unsafe?))
75720(define linklet-expander-primitives
75721  (hasheq
75722   'linklet-directory?
75723   1/linklet-directory?
75724   'linklet-directory->hash
75725   1/linklet-directory->hash
75726   'hash->linklet-directory
75727   1/hash->linklet-directory
75728   'linklet-bundle?
75729   1/linklet-bundle?
75730   'linklet-bundle->hash
75731   1/linklet-bundle->hash
75732   'hash->linklet-bundle
75733   1/hash->linklet-bundle
75734   'linklet-body-reserved-symbol?
75735   1/linklet-body-reserved-symbol?
75736   'linklet?
75737   1/linklet?
75738   'recompile-linklet
75739   1/recompile-linklet
75740   'eval-linklet
75741   1/eval-linklet
75742   'instantiate-linklet
75743   1/instantiate-linklet
75744   'linklet-import-variables
75745   1/linklet-import-variables
75746   'linklet-export-variables
75747   1/linklet-export-variables))
75748(define with-module-reading-parameterization
75749  (lambda (thunk_0)
75750    (with-continuation-mark*
75751     authentic
75752     parameterization-key
75753     (extend-parameterization
75754      (continuation-mark-set-first #f parameterization-key)
75755      1/read-accept-reader
75756      #t
75757      1/read-accept-lang
75758      #t
75759      1/read-accept-compiled
75760      #t
75761      read-case-sensitive
75762      #t
75763      1/read-square-bracket-as-paren
75764      #t
75765      1/read-curly-brace-as-paren
75766      #t
75767      1/read-square-bracket-with-tag
75768      #f
75769      1/read-curly-brace-with-tag
75770      #f
75771      1/read-accept-box
75772      #t
75773      read-accept-bar-quote
75774      #t
75775      1/read-accept-graph
75776      #t
75777      1/read-decimal-as-inexact
75778      #t
75779      1/read-cdot
75780      #f
75781      1/read-accept-dot
75782      #t
75783      1/read-accept-infix-dot
75784      #t
75785      1/read-accept-quasiquote
75786      #t
75787      1/current-readtable
75788      #f)
75789     (|#%app| thunk_0))))
75790(define check-module-form
75791  (lambda (exp_0 filename_0)
75792    (if (let ((or-part_0 (eof-object? exp_0)))
75793          (if or-part_0 or-part_0 (eof-object? (1/syntax-e exp_0))))
75794      (if filename_0
75795        (error
75796         'load-handler
75797         (string-append
75798          "expected a `module' declaration, but found end-of-file\n"
75799          "  file: ~a")
75800         filename_0)
75801        #f)
75802      (if (1/compiled-module-expression? (1/syntax-e exp_0))
75803        exp_0
75804        (if (if (syntax?$1 exp_0)
75805              (if (pair? (1/syntax-e exp_0))
75806                (if (eq? 'module (1/syntax-e (car (1/syntax-e exp_0))))
75807                  (let ((r_0 (cdr (1/syntax-e exp_0))))
75808                    (let ((r_1 (if (syntax?$1 r_0) (1/syntax-e r_0) r_0)))
75809                      (if (pair? r_1) (identifier? (car r_1)) #f)))
75810                  #f)
75811                #f)
75812              #f)
75813          (1/datum->syntax
75814           exp_0
75815           (let ((app_0 (1/namespace-module-identifier)))
75816             (cons app_0 (cdr (1/syntax-e exp_0))))
75817           exp_0
75818           exp_0)
75819          (if filename_0
75820            (error
75821             'default-load-handler
75822             (string-append
75823              "expected a `module' declaration, but found something else\n"
75824              "  file: ~a")
75825             filename_0)
75826            #f))))))
75827(define default-load-handler
75828  (lambda (path_0 expected-mod_0)
75829    (begin
75830      (if (path-string? path_0)
75831        (void)
75832        (raise-argument-error 'default-load-handler "path-string?" path_0))
75833      (begin
75834        (if (let ((or-part_0 (not expected-mod_0)))
75835              (if or-part_0
75836                or-part_0
75837                (let ((or-part_1 (symbol? expected-mod_0)))
75838                  (if or-part_1
75839                    or-part_1
75840                    (if (pair? expected-mod_0)
75841                      (if (list? expected-mod_0)
75842                        (if (let ((or-part_2 (not (car expected-mod_0))))
75843                              (if or-part_2
75844                                or-part_2
75845                                (symbol? (car expected-mod_0))))
75846                          (andmap_2344 symbol? (cdr expected-mod_0))
75847                          #f)
75848                        #f)
75849                      #f)))))
75850          (void)
75851          (raise-argument-error
75852           'default-load-handler
75853           "(or/c #f symbol? (cons/c (or/c #f symbol?) (non-empty-listof symbol?)))"
75854           expected-mod_0))
75855        (let ((maybe-count-lines!_0
75856               (|#%name|
75857                maybe-count-lines!
75858                (lambda (i_0)
75859                  (begin
75860                    (if (regexp-match? rx2937 path_0)
75861                      (void)
75862                      (port-count-lines! i_0)))))))
75863          (if expected-mod_0
75864            (|#%app|
75865             (call-with-input-module-file
75866              path_0
75867              (lambda (i_0)
75868                (begin
75869                  (maybe-count-lines!_0 i_0)
75870                  (with-module-reading-parameterization+delay-source
75871                   path_0
75872                   (lambda ()
75873                     (let ((c2_0 (linklet-directory-start i_0)))
75874                       (if c2_0
75875                         (let ((b-pos_0
75876                                (search-directory
75877                                 i_0
75878                                 c2_0
75879                                 (encode-symbols expected-mod_0))))
75880                           (if b-pos_0
75881                             (begin
75882                               (file-position i_0 b-pos_0)
75883                               (let ((or-part_0 (cached-bundle i_0)))
75884                                 (if or-part_0
75885                                   or-part_0
75886                                   (let ((v_0 (1/read i_0)))
75887                                     (if (1/compiled-module-expression? v_0)
75888                                       (lambda ()
75889                                         (|#%app| (1/current-eval) v_0))
75890                                       (let ((app_0
75891                                              (string-append
75892                                               "expected a compiled module\n"
75893                                               "  in: ~e\n"
75894                                               "  found: ~e")))
75895                                         (error
75896                                          'default-load-handler
75897                                          app_0
75898                                          (object-name i_0)
75899                                          v_0)))))))
75900                             (if (pair? expected-mod_0)
75901                               void
75902                               (let ((app_0
75903                                      (string-append
75904                                       "could not find main module\n"
75905                                       "  in: ~e")))
75906                                 (error
75907                                  'default-load-handler
75908                                  app_0
75909                                  (object-name i_0))))))
75910                         (if (if (pair? expected-mod_0)
75911                               (not (car expected-mod_0))
75912                               #f)
75913                           void
75914                           (let ((c1_0 (cached-bundle i_0)))
75915                             (if c1_0
75916                               c1_0
75917                               (let ((s_0
75918                                      (1/read-syntax (object-name i_0) i_0)))
75919                                 (begin
75920                                   (if (eof-object? s_0)
75921                                     (let ((app_0
75922                                            (string-append
75923                                             "expected a `module' declaration;\n"
75924                                             " found end-of-file\n"
75925                                             "  in: ~e")))
75926                                       (error
75927                                        'default-load-handler
75928                                        app_0
75929                                        (object-name i_0)))
75930                                     (void))
75931                                   (let ((m-s_0
75932                                          (check-module-form s_0 path_0)))
75933                                     (let ((s2_0
75934                                            (1/read-syntax
75935                                             (object-name i_0)
75936                                             i_0)))
75937                                       (begin
75938                                         (if (eof-object? s2_0)
75939                                           (void)
75940                                           (let ((app_0
75941                                                  (string-append
75942                                                   "expected a `module' declaration;\n"
75943                                                   " found an extra form\n"
75944                                                   "  in: ~e\n"
75945                                                   "  found: ~.s")))
75946                                             (error
75947                                              'default-load-handler
75948                                              app_0
75949                                              (object-name i_0)
75950                                              s2_0)))
75951                                         (lambda ()
75952                                           (|#%app|
75953                                            (1/current-eval)
75954                                            m-s_0))))))))))))))))))
75955            (let ((add-top-interaction_0
75956                   (|#%name|
75957                    add-top-interaction
75958                    (lambda (s_0)
75959                      (begin
75960                        (1/namespace-syntax-introduce
75961                         (1/datum->syntax
75962                          #f
75963                          (cons '|#%top-interaction| s_0)
75964                          s_0)))))))
75965              (let ((temp2_0
75966                     (lambda (i_0)
75967                       (begin
75968                         (maybe-count-lines!_0 i_0)
75969                         (letrec*
75970                          ((loop_0
75971                            (|#%name|
75972                             loop
75973                             (lambda (vals_0)
75974                               (begin
75975                                 (let ((s_0
75976                                        (with-continuation-mark*
75977                                         push-authentic
75978                                         parameterization-key
75979                                         (extend-parameterization
75980                                          (continuation-mark-set-first
75981                                           #f
75982                                           parameterization-key)
75983                                          1/read-accept-compiled
75984                                          #t
75985                                          1/read-accept-reader
75986                                          #t
75987                                          1/read-accept-lang
75988                                          #t)
75989                                         (if (load-on-demand-enabled)
75990                                           (with-continuation-mark*
75991                                            authentic
75992                                            parameterization-key
75993                                            (let ((app_0
75994                                                   (continuation-mark-set-first
75995                                                    #f
75996                                                    parameterization-key)))
75997                                              (extend-parameterization
75998                                               app_0
75999                                               read-on-demand-source
76000                                               (path->complete-path path_0)))
76001                                            (1/read-syntax
76002                                             (object-name i_0)
76003                                             i_0))
76004                                           (1/read-syntax
76005                                            (object-name i_0)
76006                                            i_0)))))
76007                                   (if (eof-object? s_0)
76008                                     (apply values vals_0)
76009                                     (loop_0
76010                                      (call-with-continuation-prompt
76011                                       (lambda ()
76012                                         (call-with-values
76013                                          (lambda ()
76014                                            (let ((app_0 (1/current-eval)))
76015                                              (|#%app|
76016                                               app_0
76017                                               (add-top-interaction_0 s_0))))
76018                                          list))
76019                                       (default-continuation-prompt-tag)
76020                                       (lambda args_0
76021                                         (apply
76022                                          abort-current-continuation
76023                                          (default-continuation-prompt-tag)
76024                                          args_0)))))))))))
76025                          (loop_0 (list (void))))))))
76026                (call-with-input-file*.1 'binary path_0 temp2_0)))))))))
76027(define version-bytes (string->bytes/utf-8 (version)))
76028(define version-length (unsafe-bytes-length version-bytes))
76029(define vm-bytes (string->bytes/utf-8 (symbol->string (system-type 'vm))))
76030(define vm-length (unsafe-bytes-length vm-bytes))
76031(define linklet-bundle-or-directory-start
76032  (lambda (i_0 tag_0)
76033    (let ((version-length_0 (string-length (version))))
76034      (let ((vm-length_0 (string-length (symbol->string (system-type 'vm)))))
76035        (if (eq? (peek-byte i_0) 35)
76036          (if (eq? (peek-byte i_0 1) 126)
76037            (if (equal? (peek-byte i_0 2) version-length_0)
76038              (if (equal? (peek-bytes version-length_0 3 i_0) version-bytes)
76039                (if (equal? (peek-byte i_0 (+ 3 version-length_0)) vm-length_0)
76040                  (if (equal?
76041                       (peek-bytes vm-length_0 (+ 4 version-length_0) i_0)
76042                       vm-bytes)
76043                    (if (let ((app_0
76044                               (peek-byte
76045                                i_0
76046                                (+ 4 version-length_0 vm-length_0))))
76047                          (equal? app_0 (char->integer tag_0)))
76048                      (+ version-length_0 vm-length_0 5)
76049                      #f)
76050                    #f)
76051                  #f)
76052                #f)
76053              #f)
76054            #f)
76055          #f)))))
76056(define linklet-directory-start
76057  (lambda (i_0)
76058    (let ((pos_0 (linklet-bundle-or-directory-start i_0 '#\x44)))
76059      (if pos_0 (+ pos_0 4) #f))))
76060(define linklet-bundle-hash-code
76061  (lambda (i_0)
76062    (let ((pos_0 (linklet-bundle-or-directory-start i_0 '#\x42)))
76063      (let ((hash-code_0 (if pos_0 (peek-bytes 20 pos_0 i_0) #f)))
76064        (if (bytes? hash-code_0)
76065          (if (= 20 (unsafe-bytes-length hash-code_0))
76066            (if (call-with-values
76067                 (lambda ()
76068                   (begin
76069                     (check-bytes hash-code_0)
76070                     (values hash-code_0 (unsafe-bytes-length hash-code_0))))
76071                 (case-lambda
76072                  ((vec_0 len_0)
76073                   (begin
76074                     #f
76075                     (letrec*
76076                      ((for-loop_0
76077                        (|#%name|
76078                         for-loop
76079                         (lambda (result_0 pos_1)
76080                           (begin
76081                             (if (unsafe-fx< pos_1 len_0)
76082                               (let ((c_0 (unsafe-bytes-ref vec_0 pos_1)))
76083                                 (let ((result_1 (not (eq? c_0 0))))
76084                                   (let ((result_2 (values result_1)))
76085                                     (if (if (not
76086                                              (let ((x_0 (list c_0)))
76087                                                result_2))
76088                                           #t
76089                                           #f)
76090                                       (for-loop_0
76091                                        result_2
76092                                        (unsafe-fx+ 1 pos_1))
76093                                       result_2))))
76094                               result_0))))))
76095                      (for-loop_0 #f 0))))
76096                  (args (raise-binding-result-arity-error 2 args))))
76097              hash-code_0
76098              #f)
76099            #f)
76100          #f)))))
76101(define cached-bundle
76102  (lambda (i_0)
76103    (let ((c3_0
76104           (module-cache-ref
76105            (make-module-cache-key (linklet-bundle-hash-code i_0)))))
76106      (if c3_0 (lambda () (|#%app| c3_0 (1/current-namespace))) #f))))
76107(define read-number
76108  (lambda (i_0)
76109    (let ((read-byte/not-eof_0
76110           (|#%name|
76111            read-byte/not-eof
76112            (lambda (i_1)
76113              (begin
76114                (let ((v_0 (read-byte i_1))) (if (eof-object? v_0) 0 v_0)))))))
76115      (let ((app_0 (read-byte/not-eof_0 i_0)))
76116        (let ((app_1 (arithmetic-shift (read-byte/not-eof_0 i_0) 8)))
76117          (let ((app_2 (arithmetic-shift (read-byte/not-eof_0 i_0) 16)))
76118            (bitwise-ior
76119             app_0
76120             app_1
76121             app_2
76122             (arithmetic-shift (read-byte/not-eof_0 i_0) 24))))))))
76123(define search-directory
76124  (lambda (i_0 pos_0 bstr_0)
76125    (if (zero? pos_0)
76126      #f
76127      (begin
76128        (file-position i_0 pos_0)
76129        (let ((name-len_0 (read-number i_0)))
76130          (let ((v_0 (read-bytes name-len_0 i_0)))
76131            (begin
76132              (if (if (bytes? v_0) (= (unsafe-bytes-length v_0) name-len_0) #f)
76133                (void)
76134                (let ((app_0
76135                       (string-append
76136                        "failure getting submodule path\n"
76137                        "  in: ~e\n"
76138                        "  at position: ~a\n"
76139                        "  expected bytes: ~a\n"
76140                        "  read bytes: ~e")))
76141                  (error
76142                   'deafult-load-handler
76143                   app_0
76144                   (object-name i_0)
76145                   pos_0
76146                   name-len_0
76147                   v_0)))
76148              (if (bytes=? bstr_0 v_0)
76149                (read-number i_0)
76150                (if (bytes<? bstr_0 v_0)
76151                  (begin
76152                    (read-number i_0)
76153                    (read-number i_0)
76154                    (search-directory i_0 (read-number i_0) bstr_0))
76155                  (begin
76156                    (read-number i_0)
76157                    (read-number i_0)
76158                    (read-number i_0)
76159                    (search-directory i_0 (read-number i_0) bstr_0)))))))))))
76160(define encode-symbols
76161  (lambda (expected-mod_0)
76162    (if (symbol? expected-mod_0)
76163      #vu8()
76164      (apply
76165       bytes-append
76166       (reverse$1
76167        (let ((lst_0 (cdr expected-mod_0)))
76168          (begin
76169            (letrec*
76170             ((for-loop_0
76171               (|#%name|
76172                for-loop
76173                (lambda (fold-var_0 lst_1)
76174                  (begin
76175                    (if (pair? lst_1)
76176                      (let ((s_0 (unsafe-car lst_1)))
76177                        (let ((rest_0 (unsafe-cdr lst_1)))
76178                          (let ((fold-var_1
76179                                 (let ((fold-var_1
76180                                        (cons
76181                                         (let ((bstr_0
76182                                                (string->bytes/utf-8
76183                                                 (symbol->string s_0))))
76184                                           (let ((len_0
76185                                                  (unsafe-bytes-length
76186                                                   bstr_0)))
76187                                             (if (< len_0 255)
76188                                               (bytes-append
76189                                                (bytes len_0)
76190                                                bstr_0)
76191                                               (bytes-append
76192                                                255
76193                                                (integer->integer-bytes
76194                                                 len_0
76195                                                 4
76196                                                 #f
76197                                                 #f)
76198                                                bstr_0))))
76199                                         fold-var_0)))
76200                                   (values fold-var_1))))
76201                            (for-loop_0 fold-var_1 rest_0))))
76202                      fold-var_0))))))
76203             (for-loop_0 null lst_0)))))))))
76204(define with-module-reading-parameterization+delay-source
76205  (lambda (path_0 thunk_0)
76206    (if (load-on-demand-enabled)
76207      (with-continuation-mark*
76208       authentic
76209       parameterization-key
76210       (let ((app_0 (continuation-mark-set-first #f parameterization-key)))
76211         (extend-parameterization
76212          app_0
76213          read-on-demand-source
76214          (path->complete-path path_0)))
76215       (with-module-reading-parameterization thunk_0))
76216      (with-module-reading-parameterization thunk_0))))
76217(define call-with-input-module-file
76218  (lambda (path_0 proc_0)
76219    (let ((i_0 #f))
76220      (dynamic-wind
76221       (lambda () (set! i_0 (open-input-file.1 #t 'binary path_0)))
76222       (lambda () (|#%app| proc_0 i_0))
76223       (lambda () (close-input-port i_0))))))
76224(define dll-suffix (system-type 'so-suffix))
76225(define default-load/use-compiled
76226  (let ((resolve_0
76227         (|#%name|
76228          resolve
76229          (lambda (s_0)
76230            (begin
76231              (if (complete-path? s_0)
76232                s_0
76233                (let ((d_0 (current-load-relative-directory)))
76234                  (if d_0 (path->complete-path s_0 d_0) s_0))))))))
76235    (let ((date-of-1_0
76236           (|#%name|
76237            date-of-1
76238            (lambda (a_0)
76239              (begin
76240                (let ((v_0
76241                       (file-or-directory-modify-seconds
76242                        a_0
76243                        #f
76244                        (lambda () #f))))
76245                  (if v_0 (cons a_0 v_0) #f)))))))
76246      (let ((date-of_0
76247             (|#%name|
76248              date-of
76249              (lambda (a_0 modes_0 roots_0)
76250                (begin
76251                  (ormap_2765
76252                   (lambda (root-dir_0)
76253                     (ormap_2765
76254                      (lambda (compiled-dir_0)
76255                        (let ((a_1 (|#%app| a_0 root-dir_0 compiled-dir_0)))
76256                          (date-of-1_0 a_1)))
76257                      modes_0))
76258                   roots_0))))))
76259        (let ((date>=?_0
76260               (|#%name|
76261                date>=?
76262                (lambda (modes_0 roots_0 a_0 bm_0)
76263                  (begin
76264                    (if a_0
76265                      (let ((am_0 (date-of_0 a_0 modes_0 roots_0)))
76266                        (let ((or-part_0 (if (not bm_0) am_0 #f)))
76267                          (if or-part_0
76268                            or-part_0
76269                            (if am_0
76270                              (if bm_0
76271                                (if (let ((app_0 (cdr am_0)))
76272                                      (>= app_0 (cdr bm_0)))
76273                                  am_0
76274                                  #f)
76275                                #f)
76276                              #f))))
76277                      #f))))))
76278          (let ((with-dir*_0
76279                 (|#%name|
76280                  with-dir*
76281                  (lambda (base_0 t_0)
76282                    (begin
76283                      (with-continuation-mark*
76284                       authentic
76285                       parameterization-key
76286                       (let ((app_0
76287                              (continuation-mark-set-first
76288                               #f
76289                               parameterization-key)))
76290                         (extend-parameterization
76291                          app_0
76292                          current-load-relative-directory
76293                          (if (path? base_0) base_0 (current-directory))))
76294                       (|#%app| t_0)))))))
76295            (lambda (path_0 expect-module_0)
76296              (begin
76297                (if (path-string? path_0)
76298                  (void)
76299                  (raise-argument-error
76300                   'load/use-compiled
76301                   "path-string?"
76302                   path_0))
76303                (begin
76304                  (if (let ((or-part_0 (not expect-module_0)))
76305                        (if or-part_0
76306                          or-part_0
76307                          (let ((or-part_1 (symbol? expect-module_0)))
76308                            (if or-part_1
76309                              or-part_1
76310                              (if (list? expect-module_0)
76311                                (if (> (length expect-module_0) 1)
76312                                  (if (let ((or-part_2
76313                                             (symbol? (car expect-module_0))))
76314                                        (if or-part_2
76315                                          or-part_2
76316                                          (not (car expect-module_0))))
76317                                    (andmap_2344 symbol? (cdr expect-module_0))
76318                                    #f)
76319                                  #f)
76320                                #f)))))
76321                    (void)
76322                    (raise-argument-error
76323                     'load/use-compiled
76324                     "(or/c #f symbol? (cons/c (or/c #f symbol?) (non-empty-listof symbol?)))"
76325                     path_0))
76326                  (let ((name_0
76327                         (if expect-module_0
76328                           (1/current-module-declare-name)
76329                           #f)))
76330                    (let ((ns-hts_0
76331                           (if name_0
76332                             (registry-table-ref
76333                              (namespace-module-registry$1
76334                               (1/current-namespace)))
76335                             #f)))
76336                      (let ((use-path/src_0
76337                             (if ns-hts_0
76338                               (hash-ref (cdr ns-hts_0) name_0 #f)
76339                               #f)))
76340                        (if use-path/src_0
76341                          (with-continuation-mark*
76342                           authentic
76343                           parameterization-key
76344                           (let ((app_0
76345                                  (continuation-mark-set-first
76346                                   #f
76347                                   parameterization-key)))
76348                             (extend-parameterization
76349                              app_0
76350                              1/current-module-declare-source
76351                              (cadr use-path/src_0)))
76352                           (with-dir*_0
76353                            (caddr use-path/src_0)
76354                            (lambda ()
76355                              (let ((app_0 (1/current-load)))
76356                                (|#%app|
76357                                 app_0
76358                                 (car use-path/src_0)
76359                                 expect-module_0)))))
76360                          (let ((orig-path_0 (resolve_0 path_0)))
76361                            (call-with-values
76362                             (lambda () (split-path path_0))
76363                             (case-lambda
76364                              ((base_0 orig-file_0 dir?_0)
76365                               (call-with-values
76366                                (lambda ()
76367                                  (if expect-module_0
76368                                    (let ((b_0 (path->bytes orig-file_0)))
76369                                      (let ((len_0 (unsafe-bytes-length b_0)))
76370                                        (if (if (>= len_0 4)
76371                                              (bytes=?
76372                                               #vu8(46 114 107 116)
76373                                               (subbytes b_0 (- len_0 4)))
76374                                              #f)
76375                                          (values
76376                                           orig-file_0
76377                                           (bytes->path
76378                                            (bytes-append
76379                                             (subbytes b_0 0 (- len_0 4))
76380                                             #vu8(46 115 115))))
76381                                          (values orig-file_0 #f))))
76382                                    (values orig-file_0 #f)))
76383                                (case-lambda
76384                                 ((file_0 alt-file_0)
76385                                  (let ((path_1
76386                                         (if (eq? file_0 orig-file_0)
76387                                           orig-path_0
76388                                           (build-path base_0 file_0))))
76389                                    (let ((alt-path_0
76390                                           (if alt-file_0
76391                                             (if (eq? alt-file_0 orig-file_0)
76392                                               orig-path_0
76393                                               (build-path base_0 alt-file_0))
76394                                             #f)))
76395                                      (let ((base_1
76396                                             (if (eq? base_0 'relative)
76397                                               'same
76398                                               base_0)))
76399                                        (let ((modes_0
76400                                               (1/use-compiled-file-paths)))
76401                                          (let ((roots_0
76402                                                 (1/current-compiled-file-roots)))
76403                                            (let ((reroot_0
76404                                                   (|#%name|
76405                                                    reroot
76406                                                    (lambda (p_0 d_0)
76407                                                      (begin
76408                                                        (if (eq? d_0 'same)
76409                                                          p_0
76410                                                          (if (relative-path?
76411                                                               d_0)
76412                                                            (build-path
76413                                                             p_0
76414                                                             d_0)
76415                                                            (reroot-path
76416                                                             p_0
76417                                                             d_0))))))))
76418                                              (let ((main-path-d_0
76419                                                     (date-of-1_0 path_1)))
76420                                                (let ((alt-path-d_0
76421                                                       (if alt-path_0
76422                                                         (if (not
76423                                                              main-path-d_0)
76424                                                           (date-of-1_0
76425                                                            alt-path_0)
76426                                                           #f)
76427                                                         #f)))
76428                                                  (let ((path-d_0
76429                                                         (if main-path-d_0
76430                                                           main-path-d_0
76431                                                           alt-path-d_0)))
76432                                                    (let ((get-so_0
76433                                                           (|#%name|
76434                                                            get-so
76435                                                            (lambda (file_1
76436                                                                     rep-sfx?_0)
76437                                                              (begin
76438                                                                (if (eq?
76439                                                                     'racket
76440                                                                     (system-type
76441                                                                      'vm))
76442                                                                  (lambda (root-dir_0
76443                                                                           compiled-dir_0)
76444                                                                    (let ((app_0
76445                                                                           (reroot_0
76446                                                                            base_1
76447                                                                            root-dir_0)))
76448                                                                      (let ((app_1
76449                                                                             (system-library-subpath)))
76450                                                                        (build-path
76451                                                                         app_0
76452                                                                         compiled-dir_0
76453                                                                         "native"
76454                                                                         app_1
76455                                                                         (if rep-sfx?_0
76456                                                                           (begin-unsafe
76457                                                                            (path-adjust-extension
76458                                                                             'path-add-extension
76459                                                                             #vu8(95)
76460                                                                             subbytes
76461                                                                             file_1
76462                                                                             dll-suffix
76463                                                                             #t))
76464                                                                           file_1)))))
76465                                                                  #f))))))
76466                                                      (let ((zo_0
76467                                                             (|#%name|
76468                                                              zo
76469                                                              (lambda (root-dir_0
76470                                                                       compiled-dir_0)
76471                                                                (begin
76472                                                                  (let ((app_0
76473                                                                         (reroot_0
76474                                                                          base_1
76475                                                                          root-dir_0)))
76476                                                                    (build-path
76477                                                                     app_0
76478                                                                     compiled-dir_0
76479                                                                     (let ((sfx_0
76480                                                                            #vu8(46 122 111)))
76481                                                                       (begin-unsafe
76482                                                                        (path-adjust-extension
76483                                                                         'path-add-extension
76484                                                                         #vu8(95)
76485                                                                         subbytes
76486                                                                         file_0
76487                                                                         sfx_0
76488                                                                         #t))))))))))
76489                                                        (let ((alt-zo_0
76490                                                               (|#%name|
76491                                                                alt-zo
76492                                                                (lambda (root-dir_0
76493                                                                         compiled-dir_0)
76494                                                                  (begin
76495                                                                    (let ((app_0
76496                                                                           (reroot_0
76497                                                                            base_1
76498                                                                            root-dir_0)))
76499                                                                      (build-path
76500                                                                       app_0
76501                                                                       compiled-dir_0
76502                                                                       (let ((sfx_0
76503                                                                              #vu8(46 122 111)))
76504                                                                         (begin-unsafe
76505                                                                          (path-adjust-extension
76506                                                                           'path-add-extension
76507                                                                           #vu8(95)
76508                                                                           subbytes
76509                                                                           alt-file_0
76510                                                                           sfx_0
76511                                                                           #t))))))))))
76512                                                          (let ((so_0
76513                                                                 (get-so_0
76514                                                                  file_0
76515                                                                  #t)))
76516                                                            (let ((alt-so_0
76517                                                                   (get-so_0
76518                                                                    alt-file_0
76519                                                                    #t)))
76520                                                              (let ((try-main?_0
76521                                                                     (if main-path-d_0
76522                                                                       main-path-d_0
76523                                                                       (not
76524                                                                        alt-path-d_0))))
76525                                                                (let ((try-alt?_0
76526                                                                       (if alt-file_0
76527                                                                         (if alt-path-d_0
76528                                                                           alt-path-d_0
76529                                                                           (not
76530                                                                            main-path-d_0))
76531                                                                         #f)))
76532                                                                  (let ((with-dir_0
76533                                                                         (|#%name|
76534                                                                          with-dir
76535                                                                          (lambda (t_0)
76536                                                                            (begin
76537                                                                              (with-dir*_0
76538                                                                               base_1
76539                                                                               t_0))))))
76540                                                                    (let ((c4_0
76541                                                                           (if so_0
76542                                                                             (if try-main?_0
76543                                                                               (date>=?_0
76544                                                                                modes_0
76545                                                                                roots_0
76546                                                                                so_0
76547                                                                                path-d_0)
76548                                                                               #f)
76549                                                                             #f)))
76550                                                                      (if c4_0
76551                                                                        (with-continuation-mark*
76552                                                                         authentic
76553                                                                         parameterization-key
76554                                                                         (extend-parameterization
76555                                                                          (continuation-mark-set-first
76556                                                                           #f
76557                                                                           parameterization-key)
76558                                                                          1/current-module-declare-source
76559                                                                          #f)
76560                                                                         (let ((t_0
76561                                                                                (lambda ()
76562                                                                                  (let ((app_0
76563                                                                                         (current-load-extension)))
76564                                                                                    (|#%app|
76565                                                                                     app_0
76566                                                                                     (car
76567                                                                                      c4_0)
76568                                                                                     expect-module_0)))))
76569                                                                           (begin-unsafe
76570                                                                            (begin
76571                                                                              (with-dir*_0
76572                                                                               base_1
76573                                                                               t_0)))))
76574                                                                        (let ((c3_0
76575                                                                               (if alt-so_0
76576                                                                                 (if try-alt?_0
76577                                                                                   (date>=?_0
76578                                                                                    modes_0
76579                                                                                    roots_0
76580                                                                                    alt-so_0
76581                                                                                    alt-path-d_0)
76582                                                                                   #f)
76583                                                                                 #f)))
76584                                                                          (if c3_0
76585                                                                            (with-continuation-mark*
76586                                                                             authentic
76587                                                                             parameterization-key
76588                                                                             (extend-parameterization
76589                                                                              (continuation-mark-set-first
76590                                                                               #f
76591                                                                               parameterization-key)
76592                                                                              1/current-module-declare-source
76593                                                                              alt-path_0)
76594                                                                             (let ((t_0
76595                                                                                    (lambda ()
76596                                                                                      (let ((app_0
76597                                                                                             (current-load-extension)))
76598                                                                                        (|#%app|
76599                                                                                         app_0
76600                                                                                         (car
76601                                                                                          c3_0)
76602                                                                                         expect-module_0)))))
76603                                                                               (begin-unsafe
76604                                                                                (begin
76605                                                                                  (with-dir*_0
76606                                                                                   base_1
76607                                                                                   t_0)))))
76608                                                                            (let ((c2_0
76609                                                                                   (if try-main?_0
76610                                                                                     (date>=?_0
76611                                                                                      modes_0
76612                                                                                      roots_0
76613                                                                                      zo_0
76614                                                                                      path-d_0)
76615                                                                                     #f)))
76616                                                                              (if c2_0
76617                                                                                (begin
76618                                                                                  (register-zo-path
76619                                                                                   name_0
76620                                                                                   ns-hts_0
76621                                                                                   (car
76622                                                                                    c2_0)
76623                                                                                   #f
76624                                                                                   base_1)
76625                                                                                  (with-continuation-mark*
76626                                                                                   authentic
76627                                                                                   parameterization-key
76628                                                                                   (extend-parameterization
76629                                                                                    (continuation-mark-set-first
76630                                                                                     #f
76631                                                                                     parameterization-key)
76632                                                                                    1/current-module-declare-source
76633                                                                                    #f)
76634                                                                                   (let ((t_0
76635                                                                                          (lambda ()
76636                                                                                            (let ((app_0
76637                                                                                                   (1/current-load)))
76638                                                                                              (|#%app|
76639                                                                                               app_0
76640                                                                                               (car
76641                                                                                                c2_0)
76642                                                                                               expect-module_0)))))
76643                                                                                     (begin-unsafe
76644                                                                                      (begin
76645                                                                                        (with-dir*_0
76646                                                                                         base_1
76647                                                                                         t_0))))))
76648                                                                                (let ((c1_0
76649                                                                                       (if try-alt?_0
76650                                                                                         (date>=?_0
76651                                                                                          modes_0
76652                                                                                          roots_0
76653                                                                                          alt-zo_0
76654                                                                                          path-d_0)
76655                                                                                         #f)))
76656                                                                                  (if c1_0
76657                                                                                    (begin
76658                                                                                      (register-zo-path
76659                                                                                       name_0
76660                                                                                       ns-hts_0
76661                                                                                       (car
76662                                                                                        c1_0)
76663                                                                                       alt-path_0
76664                                                                                       base_1)
76665                                                                                      (with-continuation-mark*
76666                                                                                       authentic
76667                                                                                       parameterization-key
76668                                                                                       (extend-parameterization
76669                                                                                        (continuation-mark-set-first
76670                                                                                         #f
76671                                                                                         parameterization-key)
76672                                                                                        1/current-module-declare-source
76673                                                                                        alt-path_0)
76674                                                                                       (let ((t_0
76675                                                                                              (lambda ()
76676                                                                                                (let ((app_0
76677                                                                                                       (1/current-load)))
76678                                                                                                  (|#%app|
76679                                                                                                   app_0
76680                                                                                                   (car
76681                                                                                                    c1_0)
76682                                                                                                   expect-module_0)))))
76683                                                                                         (begin-unsafe
76684                                                                                          (begin
76685                                                                                            (with-dir*_0
76686                                                                                             base_1
76687                                                                                             t_0))))))
76688                                                                                    (if (let ((or-part_0
76689                                                                                               (not
76690                                                                                                (pair?
76691                                                                                                 expect-module_0))))
76692                                                                                          (if or-part_0
76693                                                                                            or-part_0
76694                                                                                            (let ((or-part_1
76695                                                                                                   (car
76696                                                                                                    expect-module_0)))
76697                                                                                              (if or-part_1
76698                                                                                                or-part_1
76699                                                                                                (is-compiled-file?
76700                                                                                                 (if try-main?_0
76701                                                                                                   path_1
76702                                                                                                   alt-path_0))))))
76703                                                                                      (let ((p_0
76704                                                                                             (if try-main?_0
76705                                                                                               path_1
76706                                                                                               alt-path_0)))
76707                                                                                        (if (if (pair?
76708                                                                                                 expect-module_0)
76709                                                                                              (not
76710                                                                                               (file-exists?
76711                                                                                                p_0))
76712                                                                                              #f)
76713                                                                                          (void)
76714                                                                                          (with-continuation-mark*
76715                                                                                           authentic
76716                                                                                           parameterization-key
76717                                                                                           (let ((app_0
76718                                                                                                  (continuation-mark-set-first
76719                                                                                                   #f
76720                                                                                                   parameterization-key)))
76721                                                                                             (extend-parameterization
76722                                                                                              app_0
76723                                                                                              1/current-module-declare-source
76724                                                                                              (if expect-module_0
76725                                                                                                (if (not
76726                                                                                                     try-main?_0)
76727                                                                                                  p_0
76728                                                                                                  #f)
76729                                                                                                #f)))
76730                                                                                           (let ((t_0
76731                                                                                                  (lambda ()
76732                                                                                                    (|#%app|
76733                                                                                                     (1/current-load)
76734                                                                                                     p_0
76735                                                                                                     expect-module_0))))
76736                                                                                             (begin-unsafe
76737                                                                                              (begin
76738                                                                                                (with-dir*_0
76739                                                                                                 base_1
76740                                                                                                 t_0)))))))
76741                                                                                      (void))))))))))))))))))))))))))))
76742                                 (args
76743                                  (raise-binding-result-arity-error 2 args)))))
76744                              (args
76745                               (raise-binding-result-arity-error
76746                                3
76747                                args))))))))))))))))))
76748(define register-zo-path
76749  (lambda (name_0 ns-hts_0 path_0 src-path_0 base_0)
76750    (if ns-hts_0
76751      (let ((app_0 (cdr ns-hts_0)))
76752        (hash-set! app_0 name_0 (list path_0 src-path_0 base_0)))
76753      (void))))
76754(define is-compiled-file?
76755  (lambda (p_0)
76756    (if (file-exists? p_0)
76757      (call-with-input-file*.1 'binary p_0 linklet-directory-start)
76758      #f)))
76759(define default-reader-guard (lambda (path_0) path_0))
76760(define cell.1 (unsafe-make-place-local (make-weak-hasheq)))
76761(define registry-table-ref
76762  (lambda (reg_0)
76763    (let ((e_0 (hash-ref (unsafe-place-local-ref cell.1) reg_0 #f)))
76764      (if e_0 (ephemeron-value e_0) #f))))
76765(define registry-table-set!
76766  (lambda (reg_0 v_0)
76767    (hash-set!
76768     (unsafe-place-local-ref cell.1)
76769     reg_0
76770     (make-ephemeron reg_0 v_0))))
76771(define cell.2 (unsafe-make-place-local (make-weak-hasheq)))
76772(define path-cache-get
76773  (lambda (p_0 reg_0)
76774    (let ((cache_0
76775           (hash-ref (unsafe-place-local-ref cell.2) reg_0 hash2725)))
76776      (hash-ref cache_0 p_0 #f))))
76777(define path-cache-set!
76778  (lambda (p_0 reg_0 v_0)
76779    (let ((current-cache_0
76780           (hash-ref (unsafe-place-local-ref cell.2) reg_0 hash2725)))
76781      (let ((cache_0
76782             (if (= (hash-count current-cache_0) 1024)
76783               hash2725
76784               current-cache_0)))
76785        (hash-set!
76786         (unsafe-place-local-ref cell.2)
76787         reg_0
76788         (hash-set cache_0 p_0 v_0))))))
76789(define -loading-filename (gensym))
76790(define -loading-prompt-tag (make-continuation-prompt-tag 'module-loading))
76791(define cell.3 (unsafe-make-place-local #f))
76792(define cell.4 (unsafe-make-place-local #f))
76793(define split-relative-string
76794  (lambda (s_0 coll-mode?_0)
76795    (let ((l_0
76796           (letrec*
76797            ((loop_0
76798              (|#%name|
76799               loop
76800               (lambda (s_1)
76801                 (begin
76802                   (let ((len_0 (string-length s_1)))
76803                     (letrec*
76804                      ((iloop_0
76805                        (|#%name|
76806                         iloop
76807                         (lambda (i_0)
76808                           (begin
76809                             (if (= i_0 len_0)
76810                               (list s_1)
76811                               (if (char=? '#\x2f (string-ref s_1 i_0))
76812                                 (let ((app_0 (substring s_1 0 i_0)))
76813                                   (cons
76814                                    app_0
76815                                    (loop_0 (substring s_1 (add1 i_0)))))
76816                                 (iloop_0 (add1 i_0)))))))))
76817                      (iloop_0 0))))))))
76818            (loop_0 s_0))))
76819      (if coll-mode?_0
76820        l_0
76821        (letrec*
76822         ((loop_0
76823           (|#%name|
76824            loop
76825            (lambda (l_1)
76826              (begin
76827                (if (null? (cdr l_1))
76828                  (values null (car l_1))
76829                  (call-with-values
76830                   (lambda () (loop_0 (cdr l_1)))
76831                   (case-lambda
76832                    ((c_0 f_0) (values (cons (car l_1) c_0) f_0))
76833                    (args (raise-binding-result-arity-error 2 args))))))))))
76834         (loop_0 l_0))))))
76835(define format-source-location
76836  (lambda (stx_0)
76837    (srcloc->string
76838     (let ((app_0 (1/syntax-source stx_0)))
76839       (let ((app_1 (1/syntax-line stx_0)))
76840         (let ((app_2 (1/syntax-column stx_0)))
76841           (let ((app_3 (1/syntax-position stx_0)))
76842             (unsafe-make-srcloc
76843              app_0
76844              app_1
76845              app_2
76846              app_3
76847              (1/syntax-span stx_0)))))))))
76848(define cell.5 (unsafe-make-place-local #f))
76849(define cell.6 (unsafe-make-place-local #f))
76850(define prep-planet-resolver!
76851  (lambda ()
76852    (if (unsafe-place-local-ref cell.6)
76853      (void)
76854      (with-continuation-mark*
76855       authentic
76856       parameterization-key
76857       (unsafe-place-local-ref cell.5)
76858       (unsafe-place-local-set!
76859        cell.6
76860        (1/dynamic-require
76861         '(lib "planet/resolver.rkt")
76862         'planet-module-name-resolver))))))
76863(define standard-module-name-resolver
76864  (case-lambda
76865   ((s_0 from-namespace_0)
76866    (begin
76867      (if (1/resolved-module-path? s_0)
76868        (void)
76869        (raise-argument-error
76870         'standard-module-name-resolver
76871         "resolved-module-path?"
76872         s_0))
76873      (if (let ((or-part_0 (not from-namespace_0)))
76874            (if or-part_0 or-part_0 (1/namespace? from-namespace_0)))
76875        (void)
76876        (raise-argument-error
76877         'standard-module-name-resolver
76878         "(or/c #f namespace?)"
76879         from-namespace_0))
76880      (if (unsafe-place-local-ref cell.6)
76881        (|#%app| (unsafe-place-local-ref cell.6) s_0)
76882        (void))
76883      (let ((hts_0
76884             (let ((or-part_0
76885                    (registry-table-ref
76886                     (namespace-module-registry$1 (1/current-namespace)))))
76887               (if or-part_0
76888                 or-part_0
76889                 (let ((hts_0
76890                        (let ((app_0 (make-hasheq)))
76891                          (cons app_0 (make-hasheq)))))
76892                   (begin
76893                     (registry-table-set!
76894                      (namespace-module-registry$1 (1/current-namespace))
76895                      hts_0)
76896                     hts_0))))))
76897        (begin
76898          (hash-set! (car hts_0) s_0 'declared)
76899          (if from-namespace_0
76900            (let ((root-name_0
76901                   (if (pair? (1/resolved-module-path-name s_0))
76902                     (1/make-resolved-module-path
76903                      (car (1/resolved-module-path-name s_0)))
76904                     s_0)))
76905              (let ((from-hts_0
76906                     (registry-table-ref
76907                      (namespace-module-registry$1 from-namespace_0))))
76908                (let ((root-name_1 root-name_0))
76909                  (if from-hts_0
76910                    (let ((use-path/src_0
76911                           (hash-ref (cdr from-hts_0) root-name_1 #f)))
76912                      (if use-path/src_0
76913                        (hash-set! (cdr hts_0) root-name_1 use-path/src_0)
76914                        (void)))
76915                    (void)))))
76916            (void))))))
76917   ((s_0 relto_0 stx_0)
76918    (begin
76919      (log-message
76920       (current-logger)
76921       'error
76922       "default module name resolver called with three arguments (deprecated)"
76923       #f)
76924      (standard-module-name-resolver s_0 relto_0 stx_0 #t)))
76925   ((s_0 relto_0 stx_0 load?_0)
76926    (begin
76927      (if (1/module-path? s_0)
76928        (void)
76929        (if (syntax?$1 stx_0)
76930          (raise-syntax-error$1 #f "bad module path" stx_0)
76931          (raise-argument-error
76932           'standard-module-name-resolver
76933           "module-path?"
76934           s_0)))
76935      (begin
76936        (if (let ((or-part_0 (not relto_0)))
76937              (if or-part_0 or-part_0 (1/resolved-module-path? relto_0)))
76938          (void)
76939          (raise-argument-error
76940           'standard-module-name-resolver
76941           "(or/c #f resolved-module-path?)"
76942           relto_0))
76943        (begin
76944          (if (let ((or-part_0 (not stx_0)))
76945                (if or-part_0 or-part_0 (syntax?$1 stx_0)))
76946            (void)
76947            (raise-argument-error
76948             'standard-module-name-resolver
76949             "(or/c #f syntax?)"
76950             stx_0))
76951          (let ((flatten-sub-path_0
76952                 (|#%name|
76953                  flatten-sub-path
76954                  (lambda (base_0 orig-l_0)
76955                    (begin
76956                      (letrec*
76957                       ((loop_0
76958                         (|#%name|
76959                          loop
76960                          (lambda (a_0 l_0)
76961                            (begin
76962                              (if (null? l_0)
76963                                (if (null? a_0)
76964                                  base_0
76965                                  (cons base_0 (reverse$1 a_0)))
76966                                (if (equal? (car l_0) "..")
76967                                  (if (null? a_0)
76968                                    (error
76969                                     'standard-module-name-resolver
76970                                     "too many \"..\"s in submodule path: ~.s"
76971                                     (list*
76972                                      'submod
76973                                      (if (equal? base_0 ".")
76974                                        base_0
76975                                        (if (path? base_0)
76976                                          base_0
76977                                          (list
76978                                           (if (symbol? base_0) 'quote 'file)
76979                                           base_0)))
76980                                      orig-l_0))
76981                                    (let ((app_0 (cdr a_0)))
76982                                      (loop_0 app_0 (cdr l_0))))
76983                                  (let ((app_0 (cons (car l_0) a_0)))
76984                                    (loop_0 app_0 (cdr l_0))))))))))
76985                       (loop_0 null orig-l_0)))))))
76986            (if (if (pair? s_0) (eq? (car s_0) 'quote) #f)
76987              (1/make-resolved-module-path (cadr s_0))
76988              (if (if (pair? s_0)
76989                    (if (eq? (car s_0) 'submod)
76990                      (if (pair? (cadr s_0)) (eq? (caadr s_0) 'quote) #f)
76991                      #f)
76992                    #f)
76993                (1/make-resolved-module-path
76994                 (let ((app_0 (cadadr s_0)))
76995                   (flatten-sub-path_0 app_0 (cddr s_0))))
76996                (if (if (pair? s_0)
76997                      (if (eq? (car s_0) 'submod)
76998                        (if (let ((or-part_0 (equal? (cadr s_0) ".")))
76999                              (if or-part_0
77000                                or-part_0
77001                                (equal? (cadr s_0) "..")))
77002                          (if relto_0
77003                            (let ((p_0 (1/resolved-module-path-name relto_0)))
77004                              (let ((or-part_0 (symbol? p_0)))
77005                                (if or-part_0
77006                                  or-part_0
77007                                  (if (pair? p_0) (symbol? (car p_0)) #f))))
77008                            #f)
77009                          #f)
77010                        #f)
77011                      #f)
77012                  (let ((rp_0 (1/resolved-module-path-name relto_0)))
77013                    (1/make-resolved-module-path
77014                     (let ((app_0 (if (pair? rp_0) (car rp_0) rp_0)))
77015                       (flatten-sub-path_0
77016                        app_0
77017                        (let ((r_0
77018                               (if (equal? (cadr s_0) "..")
77019                                 (cdr s_0)
77020                                 (cddr s_0))))
77021                          (if (pair? rp_0) (append (cdr rp_0) r_0) r_0))))))
77022                  (if (if (pair? s_0) (eq? (car s_0) 'planet) #f)
77023                    (begin
77024                      (prep-planet-resolver!)
77025                      (|#%app|
77026                       (unsafe-place-local-ref cell.6)
77027                       s_0
77028                       relto_0
77029                       stx_0
77030                       load?_0
77031                       #f
77032                       (unsafe-place-local-ref cell.5)))
77033                    (if (if (pair? s_0)
77034                          (if (eq? (car s_0) 'submod)
77035                            (if (pair? (cadr s_0))
77036                              (eq? (caadr s_0) 'planet)
77037                              #f)
77038                            #f)
77039                          #f)
77040                      (begin
77041                        (prep-planet-resolver!)
77042                        (let ((app_0 (cadr s_0)))
77043                          (|#%app|
77044                           (unsafe-place-local-ref cell.6)
77045                           app_0
77046                           relto_0
77047                           stx_0
77048                           load?_0
77049                           (cddr s_0)
77050                           (unsafe-place-local-ref cell.5))))
77051                      (let ((get-dir_0
77052                             (|#%name|
77053                              get-dir
77054                              (lambda ()
77055                                (begin
77056                                  (let ((or-part_0
77057                                         (if relto_0
77058                                           (if (eq?
77059                                                relto_0
77060                                                (unsafe-place-local-ref
77061                                                 cell.3))
77062                                             (unsafe-place-local-ref cell.4)
77063                                             (let ((p_0
77064                                                    (1/resolved-module-path-name
77065                                                     relto_0)))
77066                                               (let ((p_1
77067                                                      (if (pair? p_0)
77068                                                        (car p_0)
77069                                                        p_0)))
77070                                                 (if (path? p_1)
77071                                                   (call-with-values
77072                                                    (lambda ()
77073                                                      (split-path p_1))
77074                                                    (case-lambda
77075                                                     ((base_0 n_0 d?_0)
77076                                                      (begin
77077                                                        (unsafe-place-local-set!
77078                                                         cell.3
77079                                                         relto_0)
77080                                                        (unsafe-place-local-set!
77081                                                         cell.4
77082                                                         base_0)
77083                                                        base_0))
77084                                                     (args
77085                                                      (raise-binding-result-arity-error
77086                                                       3
77087                                                       args))))
77088                                                   #f))))
77089                                           #f)))
77090                                    (if or-part_0
77091                                      or-part_0
77092                                      (let ((or-part_1
77093                                             (current-load-relative-directory)))
77094                                        (if or-part_1
77095                                          or-part_1
77096                                          (current-directory))))))))))
77097                        (let ((get-reg_0
77098                               (|#%name|
77099                                get-reg
77100                                (lambda ()
77101                                  (begin
77102                                    (namespace-module-registry$1
77103                                     (1/current-namespace)))))))
77104                          (let ((show-collection-err_0
77105                                 (|#%name|
77106                                  show-collection-err
77107                                  (lambda (msg_0)
77108                                    (begin
77109                                      (let ((msg_1
77110                                             (let ((app_0
77111                                                    (let ((or-part_0
77112                                                           (if stx_0
77113                                                             (if (error-print-source-location)
77114                                                               (format-source-location
77115                                                                stx_0)
77116                                                               #f)
77117                                                             #f)))
77118                                                      (if or-part_0
77119                                                        or-part_0
77120                                                        "standard-module-name-resolver"))))
77121                                               (string-append
77122                                                app_0
77123                                                ": "
77124                                                (regexp-replace
77125                                                 rx2823
77126                                                 msg_0
77127                                                 (format
77128                                                  "\n  for module path: ~s\n"
77129                                                  s_0))))))
77130                                        (raise
77131                                         (if stx_0
77132                                           (let ((app_0
77133                                                  (current-continuation-marks)))
77134                                             (|#%app|
77135                                              1/make-exn:fail:syntax:missing-module
77136                                              msg_1
77137                                              app_0
77138                                              (list (syntax-taint$1 stx_0))
77139                                              s_0))
77140                                           (|#%app|
77141                                            1/make-exn:fail:filesystem:missing-module
77142                                            msg_1
77143                                            (current-continuation-marks)
77144                                            s_0)))))))))
77145                            (let ((invent-collection-dir_0
77146                                   (|#%name|
77147                                    invent-collection-dir
77148                                    (lambda (f-file_0 col_0 col-path_0 fail_0)
77149                                      (begin
77150                                        (lambda (msg_0)
77151                                          (string->uninterned-symbol
77152                                           (path->string
77153                                            (build-path
77154                                             (apply
77155                                              build-path
77156                                              col_0
77157                                              col-path_0)
77158                                             f-file_0)))))))))
77159                              (let ((ss->rkt_0
77160                                     (|#%name|
77161                                      ss->rkt
77162                                      (lambda (s_1)
77163                                        (begin
77164                                          (let ((len_0 (string-length s_1)))
77165                                            (if (if (>= len_0 3)
77166                                                  (if (eqv?
77167                                                       '#\x2e
77168                                                       (string-ref
77169                                                        s_1
77170                                                        (- len_0 3)))
77171                                                    (if (eqv?
77172                                                         '#\x73
77173                                                         (string-ref
77174                                                          s_1
77175                                                          (- len_0 2)))
77176                                                      (eqv?
77177                                                       '#\x73
77178                                                       (string-ref
77179                                                        s_1
77180                                                        (- len_0 1)))
77181                                                      #f)
77182                                                    #f)
77183                                                  #f)
77184                                              (string-append
77185                                               (substring s_1 0 (- len_0 3))
77186                                               ".rkt")
77187                                              s_1)))))))
77188                                (let ((path-ss->rkt_0
77189                                       (|#%name|
77190                                        path-ss->rkt
77191                                        (lambda (p_0)
77192                                          (begin
77193                                            (call-with-values
77194                                             (lambda () (split-path p_0))
77195                                             (case-lambda
77196                                              ((base_0 name_0 dir?_0)
77197                                               (if (regexp-match
77198                                                    rx2418
77199                                                    (path->bytes name_0))
77200                                                 (path-replace-extension
77201                                                  p_0
77202                                                  #vu8(46 114 107 116))
77203                                                 p_0))
77204                                              (args
77205                                               (raise-binding-result-arity-error
77206                                                3
77207                                                args)))))))))
77208                                  (let ((s_1
77209                                         (if (if (pair? s_0)
77210                                               (eq? 'submod (car s_0))
77211                                               #f)
77212                                           (let ((v_0 (cadr s_0)))
77213                                             (if (let ((or-part_0
77214                                                        (equal? v_0 ".")))
77215                                                   (if or-part_0
77216                                                     or-part_0
77217                                                     (equal? v_0 "..")))
77218                                               (if relto_0
77219                                                 (let ((p_0
77220                                                        (1/resolved-module-path-name
77221                                                         relto_0)))
77222                                                   (if (pair? p_0)
77223                                                     (car p_0)
77224                                                     p_0))
77225                                                 (error
77226                                                  'standard-module-name-resolver
77227                                                  "no base path for relative submodule path: ~.s"
77228                                                  s_0))
77229                                               v_0))
77230                                           s_0)))
77231                                    (let ((subm-path_0
77232                                           (if (if (pair? s_0)
77233                                                 (eq? 'submod (car s_0))
77234                                                 #f)
77235                                             (let ((p_0
77236                                                    (if (if (let ((or-part_0
77237                                                                   (equal?
77238                                                                    (cadr s_0)
77239                                                                    ".")))
77240                                                              (if or-part_0
77241                                                                or-part_0
77242                                                                (equal?
77243                                                                 (cadr s_0)
77244                                                                 "..")))
77245                                                          relto_0
77246                                                          #f)
77247                                                      (let ((p_0
77248                                                             (1/resolved-module-path-name
77249                                                              relto_0)))
77250                                                        (let ((r_0
77251                                                               (if (equal?
77252                                                                    (cadr s_0)
77253                                                                    "..")
77254                                                                 (cdr s_0)
77255                                                                 (cddr s_0))))
77256                                                          (let ((p_1 p_0))
77257                                                            (if (pair? p_1)
77258                                                              (let ((app_0
77259                                                                     (car
77260                                                                      p_1)))
77261                                                                (flatten-sub-path_0
77262                                                                 app_0
77263                                                                 (append
77264                                                                  (cdr p_1)
77265                                                                  r_0)))
77266                                                              (flatten-sub-path_0
77267                                                               p_1
77268                                                               r_0)))))
77269                                                      (flatten-sub-path_0
77270                                                       "."
77271                                                       (if (equal?
77272                                                            (cadr s_0)
77273                                                            "..")
77274                                                         (cdr s_0)
77275                                                         (cddr s_0))))))
77276                                               (if (pair? p_0) (cdr p_0) #f))
77277                                             #f)))
77278                                      (let ((s_2 s_1)
77279                                            (path-ss->rkt_1 path-ss->rkt_0)
77280                                            (ss->rkt_1 ss->rkt_0)
77281                                            (invent-collection-dir_1
77282                                             invent-collection-dir_0)
77283                                            (show-collection-err_1
77284                                             show-collection-err_0)
77285                                            (get-reg_1 get-reg_0)
77286                                            (get-dir_1 get-dir_0))
77287                                        (let ((s-parsed_0
77288                                               (if (symbol? s_2)
77289                                                 (let ((or-part_0
77290                                                        (path-cache-get
77291                                                         s_2
77292                                                         (get-reg_1))))
77293                                                   (if or-part_0
77294                                                     or-part_0
77295                                                     (call-with-values
77296                                                      (lambda ()
77297                                                        (split-relative-string
77298                                                         (symbol->string s_2)
77299                                                         #f))
77300                                                      (case-lambda
77301                                                       ((cols_0 file_0)
77302                                                        (let ((f-file_0
77303                                                               (if (null?
77304                                                                    cols_0)
77305                                                                 "main.rkt"
77306                                                                 (string-append
77307                                                                  file_0
77308                                                                  ".rkt"))))
77309                                                          (let ((col_0
77310                                                                 (if (null?
77311                                                                      cols_0)
77312                                                                   file_0
77313                                                                   (car
77314                                                                    cols_0))))
77315                                                            (let ((col-path_0
77316                                                                   (if (null?
77317                                                                        cols_0)
77318                                                                     null
77319                                                                     (cdr
77320                                                                      cols_0))))
77321                                                              (find-col-file
77322                                                               (if (not
77323                                                                    subm-path_0)
77324                                                                 show-collection-err_1
77325                                                                 (invent-collection-dir_1
77326                                                                  f-file_0
77327                                                                  col_0
77328                                                                  col-path_0
77329                                                                  show-collection-err_1))
77330                                                               col_0
77331                                                               col-path_0
77332                                                               f-file_0
77333                                                               #t)))))
77334                                                       (args
77335                                                        (raise-binding-result-arity-error
77336                                                         2
77337                                                         args))))))
77338                                                 (if (string? s_2)
77339                                                   (let ((dir_0 (get-dir_1)))
77340                                                     (let ((or-part_0
77341                                                            (path-cache-get
77342                                                             (cons s_2 dir_0)
77343                                                             #f)))
77344                                                       (if or-part_0
77345                                                         or-part_0
77346                                                         (call-with-values
77347                                                          (lambda ()
77348                                                            (split-relative-string
77349                                                             s_2
77350                                                             #f))
77351                                                          (case-lambda
77352                                                           ((cols_0 file_0)
77353                                                            (if (null? cols_0)
77354                                                              (build-path
77355                                                               dir_0
77356                                                               (ss->rkt_1
77357                                                                file_0))
77358                                                              (apply
77359                                                               build-path
77360                                                               dir_0
77361                                                               (let ((app_0
77362                                                                      (map_1346
77363                                                                       (lambda (s_3)
77364                                                                         (if (string=?
77365                                                                              s_3
77366                                                                              ".")
77367                                                                           'same
77368                                                                           (if (string=?
77369                                                                                s_3
77370                                                                                "..")
77371                                                                             'up
77372                                                                             s_3)))
77373                                                                       cols_0)))
77374                                                                 (append
77375                                                                  app_0
77376                                                                  (list
77377                                                                   (ss->rkt_1
77378                                                                    file_0)))))))
77379                                                           (args
77380                                                            (raise-binding-result-arity-error
77381                                                             2
77382                                                             args)))))))
77383                                                   (if (path? s_2)
77384                                                     (path-ss->rkt_1
77385                                                      (simplify-path
77386                                                       (if (complete-path? s_2)
77387                                                         s_2
77388                                                         (path->complete-path
77389                                                          s_2
77390                                                          (get-dir_1)))))
77391                                                     (if (eq? (car s_2) 'lib)
77392                                                       (let ((or-part_0
77393                                                              (path-cache-get
77394                                                               s_2
77395                                                               (get-reg_1))))
77396                                                         (if or-part_0
77397                                                           or-part_0
77398                                                           (call-with-values
77399                                                            (lambda ()
77400                                                              (split-relative-string
77401                                                               (cadr s_2)
77402                                                               #f))
77403                                                            (case-lambda
77404                                                             ((cols_0 file_0)
77405                                                              (let ((old-style?_0
77406                                                                     (if (null?
77407                                                                          (cddr
77408                                                                           s_2))
77409                                                                       (if (null?
77410                                                                            cols_0)
77411                                                                         (regexp-match?
77412                                                                          rx2668
77413                                                                          file_0)
77414                                                                         #f)
77415                                                                       #t)))
77416                                                                (let ((f-file_0
77417                                                                       (if old-style?_0
77418                                                                         (ss->rkt_1
77419                                                                          file_0)
77420                                                                         (if (null?
77421                                                                              cols_0)
77422                                                                           "main.rkt"
77423                                                                           (if (regexp-match?
77424                                                                                rx2668
77425                                                                                file_0)
77426                                                                             (ss->rkt_1
77427                                                                              file_0)
77428                                                                             (string-append
77429                                                                              file_0
77430                                                                              ".rkt"))))))
77431                                                                  (let ((cols_1
77432                                                                         (if old-style?_0
77433                                                                           (append
77434                                                                            (if (null?
77435                                                                                 (cddr
77436                                                                                  s_2))
77437                                                                              '("mzlib")
77438                                                                              (apply
77439                                                                               append
77440                                                                               (map_1346
77441                                                                                (lambda (p_0)
77442                                                                                  (split-relative-string
77443                                                                                   p_0
77444                                                                                   #t))
77445                                                                                (cddr
77446                                                                                 s_2))))
77447                                                                            cols_0)
77448                                                                           (if (null?
77449                                                                                cols_0)
77450                                                                             (list
77451                                                                              file_0)
77452                                                                             cols_0))))
77453                                                                    (let ((app_0
77454                                                                           (car
77455                                                                            cols_1)))
77456                                                                      (find-col-file
77457                                                                       show-collection-err_1
77458                                                                       app_0
77459                                                                       (cdr
77460                                                                        cols_1)
77461                                                                       f-file_0
77462                                                                       #t))))))
77463                                                             (args
77464                                                              (raise-binding-result-arity-error
77465                                                               2
77466                                                               args))))))
77467                                                       (if (eq?
77468                                                            (car s_2)
77469                                                            'file)
77470                                                         (path-ss->rkt_1
77471                                                          (simplify-path
77472                                                           (let ((app_0
77473                                                                  (expand-user-path
77474                                                                   (cadr
77475                                                                    s_2))))
77476                                                             (path->complete-path
77477                                                              app_0
77478                                                              (get-dir_1)))))
77479                                                         (void))))))))
77480                                          (if (symbol? s-parsed_0)
77481                                            (1/make-resolved-module-path
77482                                             (cons s-parsed_0 subm-path_0))
77483                                            (if (not
77484                                                 (let ((or-part_0
77485                                                        (path? s-parsed_0)))
77486                                                   (if or-part_0
77487                                                     or-part_0
77488                                                     (vector? s-parsed_0))))
77489                                              (if stx_0
77490                                                (raise-syntax-error$1
77491                                                 'require
77492                                                 (format
77493                                                  "bad module path~a"
77494                                                  (if s-parsed_0
77495                                                    (car s-parsed_0)
77496                                                    ""))
77497                                                 stx_0)
77498                                                (raise-argument-error
77499                                                 'standard-module-name-resolver
77500                                                 "module-path?"
77501                                                 s_2))
77502                                              (let ((filename_0
77503                                                     (if (vector? s-parsed_0)
77504                                                       (vector-ref
77505                                                        s-parsed_0
77506                                                        0)
77507                                                       (simplify-path
77508                                                        (cleanse-path
77509                                                         s-parsed_0)
77510                                                        #f))))
77511                                                (let ((normal-filename_0
77512                                                       (if (vector? s-parsed_0)
77513                                                         (vector-ref
77514                                                          s-parsed_0
77515                                                          1)
77516                                                         (normal-case-path
77517                                                          filename_0))))
77518                                                  (call-with-values
77519                                                   (lambda ()
77520                                                     (if (vector? s-parsed_0)
77521                                                       (values
77522                                                        'ignored
77523                                                        (vector-ref
77524                                                         s-parsed_0
77525                                                         2)
77526                                                        'ignored)
77527                                                       (split-path
77528                                                        filename_0)))
77529                                                   (case-lambda
77530                                                    ((base_0 name_0 dir?_0)
77531                                                     (let ((no-sfx_0
77532                                                            (if (vector?
77533                                                                 s-parsed_0)
77534                                                              (vector-ref
77535                                                               s-parsed_0
77536                                                               3)
77537                                                              (path-replace-extension
77538                                                               name_0
77539                                                               #vu8()))))
77540                                                       (let ((root-modname_0
77541                                                              (if (vector?
77542                                                                   s-parsed_0)
77543                                                                (vector-ref
77544                                                                 s-parsed_0
77545                                                                 4)
77546                                                                (1/make-resolved-module-path
77547                                                                 filename_0))))
77548                                                         (let ((hts_0
77549                                                                (let ((or-part_0
77550                                                                       (registry-table-ref
77551                                                                        (get-reg_1))))
77552                                                                  (if or-part_0
77553                                                                    or-part_0
77554                                                                    (let ((hts_0
77555                                                                           (let ((app_0
77556                                                                                  (make-hasheq)))
77557                                                                             (cons
77558                                                                              app_0
77559                                                                              (make-hasheq)))))
77560                                                                      (begin
77561                                                                        (registry-table-set!
77562                                                                         (get-reg_1)
77563                                                                         hts_0)
77564                                                                        hts_0))))))
77565                                                           (let ((modname_0
77566                                                                  (if subm-path_0
77567                                                                    (1/make-resolved-module-path
77568                                                                     (cons
77569                                                                      (1/resolved-module-path-name
77570                                                                       root-modname_0)
77571                                                                      subm-path_0))
77572                                                                    root-modname_0)))
77573                                                             (begin
77574                                                               (if load?_0
77575                                                                 (let ((got_0
77576                                                                        (hash-ref
77577                                                                         (car
77578                                                                          hts_0)
77579                                                                         modname_0
77580                                                                         #f)))
77581                                                                   (if got_0
77582                                                                     (void)
77583                                                                     (let ((loading_0
77584                                                                            (let ((tag_0
77585                                                                                   (if (continuation-prompt-available?
77586                                                                                        -loading-prompt-tag)
77587                                                                                     -loading-prompt-tag
77588                                                                                     (default-continuation-prompt-tag))))
77589                                                                              (continuation-mark-set-first
77590                                                                               #f
77591                                                                               -loading-filename
77592                                                                               null
77593                                                                               tag_0))))
77594                                                                       (let ((nsr_0
77595                                                                              (get-reg_1)))
77596                                                                         (let ((loading_1
77597                                                                                loading_0))
77598                                                                           (begin
77599                                                                             (for-each_2380
77600                                                                              (lambda (s_3)
77601                                                                                (if (if (equal?
77602                                                                                         (cdr
77603                                                                                          s_3)
77604                                                                                         normal-filename_0)
77605                                                                                      (eq?
77606                                                                                       (car
77607                                                                                        s_3)
77608                                                                                       nsr_0)
77609                                                                                      #f)
77610                                                                                  (error
77611                                                                                   'standard-module-name-resolver
77612                                                                                   "cycle in loading\n  at path: ~a\n  paths:~a"
77613                                                                                   filename_0
77614                                                                                   (apply
77615                                                                                    string-append
77616                                                                                    (letrec*
77617                                                                                     ((loop_0
77618                                                                                       (|#%name|
77619                                                                                        loop
77620                                                                                        (lambda (l_0)
77621                                                                                          (begin
77622                                                                                            (if (null?
77623                                                                                                 l_0)
77624                                                                                              '()
77625                                                                                              (let ((app_0
77626                                                                                                     (path->string
77627                                                                                                      (cdar
77628                                                                                                       l_0))))
77629                                                                                                (list*
77630                                                                                                 "\n   "
77631                                                                                                 app_0
77632                                                                                                 (loop_0
77633                                                                                                  (cdr
77634                                                                                                   l_0))))))))))
77635                                                                                     (loop_0
77636                                                                                      (reverse$1
77637                                                                                       loading_1)))))
77638                                                                                  (void)))
77639                                                                              loading_1)
77640                                                                             (|#%app|
77641                                                                              (if (continuation-prompt-available?
77642                                                                                   -loading-prompt-tag)
77643                                                                                (lambda (f_0)
77644                                                                                  (|#%app|
77645                                                                                   f_0))
77646                                                                                (lambda (f_0)
77647                                                                                  (call-with-continuation-prompt
77648                                                                                   f_0
77649                                                                                   -loading-prompt-tag)))
77650                                                                              (lambda ()
77651                                                                                (with-continuation-mark*
77652                                                                                 general
77653                                                                                 -loading-filename
77654                                                                                 (cons
77655                                                                                  (cons
77656                                                                                   nsr_0
77657                                                                                   normal-filename_0)
77658                                                                                  loading_1)
77659                                                                                 (with-continuation-mark*
77660                                                                                  authentic
77661                                                                                  parameterization-key
77662                                                                                  (let ((app_0
77663                                                                                         (continuation-mark-set-first
77664                                                                                          #f
77665                                                                                          parameterization-key)))
77666                                                                                    (extend-parameterization
77667                                                                                     app_0
77668                                                                                     1/current-module-declare-name
77669                                                                                     root-modname_0
77670                                                                                     1/current-module-path-for-load
77671                                                                                     (let ((app_1
77672                                                                                            (if stx_0
77673                                                                                              (lambda (p_0)
77674                                                                                                (1/datum->syntax
77675                                                                                                 #f
77676                                                                                                 p_0
77677                                                                                                 stx_0))
77678                                                                                              values)))
77679                                                                                       (|#%app|
77680                                                                                        app_1
77681                                                                                        (if (symbol?
77682                                                                                             s_2)
77683                                                                                          s_2
77684                                                                                          (if (if (pair?
77685                                                                                                   s_2)
77686                                                                                                (eq?
77687                                                                                                 (car
77688                                                                                                  s_2)
77689                                                                                                 'lib)
77690                                                                                                #f)
77691                                                                                            s_2
77692                                                                                            (if (1/resolved-module-path?
77693                                                                                                 root-modname_0)
77694                                                                                              (let ((src_0
77695                                                                                                     (1/resolved-module-path-name
77696                                                                                                      root-modname_0)))
77697                                                                                                (if (symbol?
77698                                                                                                     src_0)
77699                                                                                                  (list
77700                                                                                                   'quote
77701                                                                                                   src_0)
77702                                                                                                  src_0))
77703                                                                                              root-modname_0)))))))
77704                                                                                  (let ((app_0
77705                                                                                         (1/current-load/use-compiled)))
77706                                                                                    (|#%app|
77707                                                                                     app_0
77708                                                                                     filename_0
77709                                                                                     (let ((sym_0
77710                                                                                            (string->symbol
77711                                                                                             (path->string
77712                                                                                              no-sfx_0))))
77713                                                                                       (if subm-path_0
77714                                                                                         (if (hash-ref
77715                                                                                              (car
77716                                                                                               hts_0)
77717                                                                                              root-modname_0
77718                                                                                              #f)
77719                                                                                           (cons
77720                                                                                            #f
77721                                                                                            subm-path_0)
77722                                                                                           (cons
77723                                                                                            sym_0
77724                                                                                            subm-path_0))
77725                                                                                         sym_0))))))))))))))
77726                                                                 (void))
77727                                                               (if (if (not
77728                                                                        (vector?
77729                                                                         s-parsed_0))
77730                                                                     (if load?_0
77731                                                                       (let ((or-part_0
77732                                                                              (string?
77733                                                                               s_2)))
77734                                                                         (if or-part_0
77735                                                                           or-part_0
77736                                                                           (let ((or-part_1
77737                                                                                  (symbol?
77738                                                                                   s_2)))
77739                                                                             (if or-part_1
77740                                                                               or-part_1
77741                                                                               (if (pair?
77742                                                                                    s_2)
77743                                                                                 (eq?
77744                                                                                  (car
77745                                                                                   s_2)
77746                                                                                  'lib)
77747                                                                                 #f)))))
77748                                                                       #f)
77749                                                                     #f)
77750                                                                 (let ((app_0
77751                                                                        (if (string?
77752                                                                             s_2)
77753                                                                          (cons
77754                                                                           s_2
77755                                                                           (get-dir_1))
77756                                                                          s_2)))
77757                                                                   (let ((app_1
77758                                                                          (if (string?
77759                                                                               s_2)
77760                                                                            #f
77761                                                                            (get-reg_1))))
77762                                                                     (path-cache-set!
77763                                                                      app_0
77764                                                                      app_1
77765                                                                      (vector
77766                                                                       filename_0
77767                                                                       normal-filename_0
77768                                                                       name_0
77769                                                                       no-sfx_0
77770                                                                       root-modname_0))))
77771                                                                 (void))
77772                                                               modname_0))))))
77773                                                    (args
77774                                                     (raise-binding-result-arity-error
77775                                                      3
77776                                                      args))))))))))))))))))))))))))))))
77777(define default-eval-handler
77778  (lambda (s_0)
77779    (let ((app_0 (1/current-namespace)))
77780      (1/eval
77781       s_0
77782       app_0
77783       (let ((c_0 (1/current-compile)))
77784         (lambda (e_0 ns_0)
77785           (if (eq? ns_0 (1/current-namespace))
77786             (|#%app| c_0 e_0 #t)
77787             (with-continuation-mark*
77788              authentic
77789              parameterization-key
77790              (extend-parameterization
77791               (continuation-mark-set-first #f parameterization-key)
77792               1/current-namespace
77793               ns_0)
77794              (|#%app| c_0 e_0 #t)))))))))
77795(define default-compile-handler
77796  (lambda (s_0 immediate-eval?_0)
77797    (1/compile s_0 (1/current-namespace) (not immediate-eval?_0))))
77798(define default-read-interaction
77799  (lambda (src_0 in_0)
77800    (begin
77801      (if (input-port? in_0)
77802        (void)
77803        (raise-argument-error 'default-read-interaction "input-port?" in_0))
77804      (with-continuation-mark*
77805       authentic
77806       parameterization-key
77807       (extend-parameterization
77808        (continuation-mark-set-first #f parameterization-key)
77809        1/read-accept-reader
77810        #t
77811        1/read-accept-lang
77812        #f)
77813       (1/read-syntax src_0 in_0)))))
77814(define boot
77815  (lambda ()
77816    (begin
77817      (unsafe-place-local-set! cell.1 (make-weak-hasheq))
77818      (unsafe-place-local-set! cell.2 (make-weak-hasheq))
77819      (seal)
77820      (|#%app| 1/current-module-name-resolver standard-module-name-resolver)
77821      (1/current-load/use-compiled default-load/use-compiled)
77822      (1/current-reader-guard default-reader-guard)
77823      (1/current-eval default-eval-handler)
77824      (1/current-compile default-compile-handler)
77825      (1/current-load default-load-handler)
77826      (current-read-interaction default-read-interaction))))
77827(define seal
77828  (lambda ()
77829    (unsafe-place-local-set!
77830     cell.5
77831     (reparameterize (continuation-mark-set-first #f parameterization-key)))))
77832(define get-original-parameterization
77833  (lambda () (unsafe-place-local-ref cell.5)))
77834(define boot-primitives
77835  (hash
77836   'boot
77837   boot
77838   'seal
77839   seal
77840   'get-original-parameterization
77841   get-original-parameterization))
77842(define prepare-next-phase-namespace
77843  (lambda (ctx_0)
77844    (let ((phase_0
77845           (add1
77846            (begin-unsafe
77847             (expand-context/inner-phase
77848              (root-expand-context/outer-inner ctx_0))))))
77849      (let ((ns_0
77850             (namespace->namespace-at-phase
77851              (begin-unsafe
77852               (expand-context/inner-namespace
77853                (root-expand-context/outer-inner ctx_0)))
77854              phase_0)))
77855        (namespace-visit-available-modules! ns_0 phase_0)))))
77856(define expand-body.1
77857  (|#%name|
77858   expand-body
77859   (lambda (source1_0 stratified?2_0 bodys5_0 ctx6_0)
77860     (begin
77861       (begin
77862         (let ((obs_0
77863                (begin-unsafe
77864                 (expand-context/inner-observer
77865                  (root-expand-context/outer-inner ctx6_0)))))
77866           (if obs_0 (call-expand-observe obs_0 'enter-block bodys5_0) (void)))
77867         (let ((inside-sc_0 (new-scope 'intdef)))
77868           (let ((init-bodys_0
77869                  (reverse$1
77870                   (begin
77871                     (letrec*
77872                      ((for-loop_0
77873                        (|#%name|
77874                         for-loop
77875                         (lambda (fold-var_0 lst_0)
77876                           (begin
77877                             (if (pair? lst_0)
77878                               (let ((body_0 (unsafe-car lst_0)))
77879                                 (let ((rest_0 (unsafe-cdr lst_0)))
77880                                   (let ((fold-var_1
77881                                          (let ((fold-var_1
77882                                                 (cons
77883                                                  (add-scope
77884                                                   body_0
77885                                                   inside-sc_0)
77886                                                  fold-var_0)))
77887                                            (values fold-var_1))))
77888                                     (for-loop_0 fold-var_1 rest_0))))
77889                               fold-var_0))))))
77890                      (for-loop_0 null bodys5_0))))))
77891             (begin
77892               (let ((obs_0
77893                      (begin-unsafe
77894                       (expand-context/inner-observer
77895                        (root-expand-context/outer-inner ctx6_0)))))
77896                 (if obs_0
77897                   (call-expand-observe
77898                    obs_0
77899                    'block-renames
77900                    init-bodys_0
77901                    bodys5_0)
77902                   (void)))
77903               (let ((phase_0
77904                      (begin-unsafe
77905                       (expand-context/inner-phase
77906                        (root-expand-context/outer-inner ctx6_0)))))
77907                 (let ((frame-id_0 (make-reference-record)))
77908                   (let ((def-ctx-scopes_0 (box null)))
77909                     (let ((body-ctx_0
77910                            (if (expand-context/outer? ctx6_0)
77911                              (let ((context51_0
77912                                     (list (make-liberal-define-context))))
77913                                (let ((post-expansion55_0
77914                                       (|#%name|
77915                                        post-expansion55
77916                                        (lambda (s_0)
77917                                          (begin
77918                                            (add-scope s_0 inside-sc_0))))))
77919                                  (let ((scopes56_0
77920                                         (cons
77921                                          inside-sc_0
77922                                          (begin-unsafe
77923                                           (expand-context/outer-scopes
77924                                            ctx6_0)))))
77925                                    (let ((use-site-scopes57_0 (box null)))
77926                                      (let ((reference-records59_0
77927                                             (cons
77928                                              frame-id_0
77929                                              (begin-unsafe
77930                                               (expand-context/outer-reference-records
77931                                                ctx6_0)))))
77932                                        (let ((inner60_0
77933                                               (root-expand-context/outer-inner
77934                                                ctx6_0)))
77935                                          (expand-context/outer1.1
77936                                           inner60_0
77937                                           post-expansion55_0
77938                                           use-site-scopes57_0
77939                                           frame-id_0
77940                                           context51_0
77941                                           (expand-context/outer-env ctx6_0)
77942                                           scopes56_0
77943                                           def-ctx-scopes_0
77944                                           (expand-context/outer-binding-layer
77945                                            ctx6_0)
77946                                           reference-records59_0
77947                                           #t
77948                                           (expand-context/outer-need-eventually-defined
77949                                            ctx6_0)
77950                                           (expand-context/outer-current-introduction-scopes
77951                                            ctx6_0)
77952                                           (expand-context/outer-current-use-scopes
77953                                            ctx6_0)
77954                                           #f)))))))
77955                              (raise-argument-error
77956                               'struct-copy
77957                               "expand-context/outer?"
77958                               ctx6_0))))
77959                       (let ((maybe-increment-binding-layer_0
77960                              (|#%name|
77961                               maybe-increment-binding-layer
77962                               (lambda (ids_0 body-ctx_1)
77963                                 (begin
77964                                   (if (eq?
77965                                        (begin-unsafe
77966                                         (expand-context/outer-binding-layer
77967                                          body-ctx_1))
77968                                        (begin-unsafe
77969                                         (expand-context/outer-binding-layer
77970                                          ctx6_0)))
77971                                     (increment-binding-layer
77972                                      ids_0
77973                                      body-ctx_1
77974                                      inside-sc_0)
77975                                     (begin-unsafe
77976                                      (expand-context/outer-binding-layer
77977                                       body-ctx_1))))))))
77978                         (let ((name_0
77979                                (begin-unsafe
77980                                 (expand-context/outer-name ctx6_0))))
77981                           (letrec*
77982                            ((loop_0
77983                              (|#%name|
77984                               loop
77985                               (lambda (body-ctx_1
77986                                        bodys_0
77987                                        done-bodys_0
77988                                        val-idss_0
77989                                        val-keyss_0
77990                                        val-rhss_0
77991                                        track-stxs_0
77992                                        trans-idss_0
77993                                        trans-stxs_0
77994                                        stx-clauses_0
77995                                        dups_0
77996                                        just-saw-define-syntaxes?_0)
77997                                 (begin
77998                                   (if (null? bodys_0)
77999                                     (let ((temp64_0 (reverse$1 val-idss_0)))
78000                                       (let ((temp65_0
78001                                              (reverse$1 val-keyss_0)))
78002                                         (let ((temp66_0
78003                                                (reverse$1 val-rhss_0)))
78004                                           (let ((temp67_0
78005                                                  (reverse$1 track-stxs_0)))
78006                                             (let ((temp68_0
78007                                                    (reverse$1 stx-clauses_0)))
78008                                               (let ((temp69_0
78009                                                      (reverse$1
78010                                                       done-bodys_0)))
78011                                                 (let ((temp75_0
78012                                                        (reverse$1
78013                                                         trans-idss_0)))
78014                                                   (let ((temp76_0
78015                                                          (reverse$1
78016                                                           trans-stxs_0)))
78017                                                     (let ((temp75_1 temp75_0)
78018                                                           (temp69_1 temp69_0)
78019                                                           (temp68_1 temp68_0)
78020                                                           (temp67_1 temp67_0)
78021                                                           (temp66_1 temp66_0)
78022                                                           (temp65_1 temp65_0)
78023                                                           (temp64_1 temp64_0))
78024                                                       (finish-expanding-body.1
78025                                                        temp75_1
78026                                                        temp76_0
78027                                                        just-saw-define-syntaxes?_0
78028                                                        name_0
78029                                                        init-bodys_0
78030                                                        source1_0
78031                                                        stratified?2_0
78032                                                        body-ctx_1
78033                                                        frame-id_0
78034                                                        def-ctx-scopes_0
78035                                                        temp64_1
78036                                                        temp65_1
78037                                                        temp66_1
78038                                                        temp67_1
78039                                                        temp68_1
78040                                                        temp69_1))))))))))
78041                                     (let ((rest-bodys_0 (cdr bodys_0)))
78042                                       (begin
78043                                         (let ((obs_0
78044                                                (begin-unsafe
78045                                                 (expand-context/inner-observer
78046                                                  (root-expand-context/outer-inner
78047                                                   body-ctx_1)))))
78048                                           (if obs_0
78049                                             (call-expand-observe obs_0 'next)
78050                                             (void)))
78051                                         (let ((exp-body_0
78052                                                (let ((temp77_0 (car bodys_0)))
78053                                                  (let ((temp78_0
78054                                                         (if (if name_0
78055                                                               (null?
78056                                                                (cdr bodys_0))
78057                                                               #f)
78058                                                           (if (expand-context/outer?
78059                                                                body-ctx_1)
78060                                                             (let ((inner80_0
78061                                                                    (root-expand-context/outer-inner
78062                                                                     body-ctx_1)))
78063                                                               (expand-context/outer1.1
78064                                                                inner80_0
78065                                                                (root-expand-context/outer-post-expansion
78066                                                                 body-ctx_1)
78067                                                                (root-expand-context/outer-use-site-scopes
78068                                                                 body-ctx_1)
78069                                                                (root-expand-context/outer-frame-id
78070                                                                 body-ctx_1)
78071                                                                (expand-context/outer-context
78072                                                                 body-ctx_1)
78073                                                                (expand-context/outer-env
78074                                                                 body-ctx_1)
78075                                                                (expand-context/outer-scopes
78076                                                                 body-ctx_1)
78077                                                                (expand-context/outer-def-ctx-scopes
78078                                                                 body-ctx_1)
78079                                                                (expand-context/outer-binding-layer
78080                                                                 body-ctx_1)
78081                                                                (expand-context/outer-reference-records
78082                                                                 body-ctx_1)
78083                                                                (expand-context/outer-only-immediate?
78084                                                                 body-ctx_1)
78085                                                                (expand-context/outer-need-eventually-defined
78086                                                                 body-ctx_1)
78087                                                                (expand-context/outer-current-introduction-scopes
78088                                                                 body-ctx_1)
78089                                                                (expand-context/outer-current-use-scopes
78090                                                                 body-ctx_1)
78091                                                                name_0))
78092                                                             (raise-argument-error
78093                                                              'struct-copy
78094                                                              "expand-context/outer?"
78095                                                              body-ctx_1))
78096                                                           body-ctx_1)))
78097                                                    (let ((temp77_1 temp77_0))
78098                                                      (expand.1
78099                                                       #f
78100                                                       #f
78101                                                       temp77_1
78102                                                       temp78_0))))))
78103                                           (let ((tmp_0
78104                                                  (core-form-sym
78105                                                   exp-body_0
78106                                                   phase_0)))
78107                                             (if (eq? tmp_0 'begin)
78108                                               (begin
78109                                                 (let ((obs_0
78110                                                        (begin-unsafe
78111                                                         (expand-context/inner-observer
78112                                                          (root-expand-context/outer-inner
78113                                                           body-ctx_1)))))
78114                                                   (if obs_0
78115                                                     (call-expand-observe
78116                                                      obs_0
78117                                                      'prim-begin
78118                                                      exp-body_0)
78119                                                     (void)))
78120                                                 (call-with-values
78121                                                  (lambda ()
78122                                                    (call-with-values
78123                                                     (lambda ()
78124                                                       (let ((s_0
78125                                                              (if (syntax?$1
78126                                                                   exp-body_0)
78127                                                                (syntax-e$1
78128                                                                 exp-body_0)
78129                                                                exp-body_0)))
78130                                                         (if (pair? s_0)
78131                                                           (let ((begin83_0
78132                                                                  (let ((s_1
78133                                                                         (car
78134                                                                          s_0)))
78135                                                                    s_1)))
78136                                                             (let ((e84_0
78137                                                                    (let ((s_1
78138                                                                           (cdr
78139                                                                            s_0)))
78140                                                                      (let ((s_2
78141                                                                             (if (syntax?$1
78142                                                                                  s_1)
78143                                                                               (syntax-e$1
78144                                                                                s_1)
78145                                                                               s_1)))
78146                                                                        (let ((flat-s_0
78147                                                                               (to-syntax-list.1
78148                                                                                s_2)))
78149                                                                          (if (not
78150                                                                               flat-s_0)
78151                                                                            (raise-syntax-error$1
78152                                                                             #f
78153                                                                             "bad syntax"
78154                                                                             exp-body_0)
78155                                                                            flat-s_0))))))
78156                                                               (let ((begin83_1
78157                                                                      begin83_0))
78158                                                                 (values
78159                                                                  begin83_1
78160                                                                  e84_0))))
78161                                                           (raise-syntax-error$1
78162                                                            #f
78163                                                            "bad syntax"
78164                                                            exp-body_0))))
78165                                                     (case-lambda
78166                                                      ((begin81_0 e82_0)
78167                                                       (values
78168                                                        #t
78169                                                        begin81_0
78170                                                        e82_0))
78171                                                      (args
78172                                                       (raise-binding-result-arity-error
78173                                                        2
78174                                                        args)))))
78175                                                  (case-lambda
78176                                                   ((ok?_0 begin81_0 e82_0)
78177                                                    (let ((track_0
78178                                                           (|#%name|
78179                                                            track
78180                                                            (lambda (e_0)
78181                                                              (begin
78182                                                                (syntax-track-origin$1
78183                                                                 e_0
78184                                                                 exp-body_0))))))
78185                                                      (let ((splice-bodys_0
78186                                                             (append
78187                                                              (map_1346
78188                                                               track_0
78189                                                               e82_0)
78190                                                              rest-bodys_0)))
78191                                                        (begin
78192                                                          (let ((obs_0
78193                                                                 (begin-unsafe
78194                                                                  (expand-context/inner-observer
78195                                                                   (root-expand-context/outer-inner
78196                                                                    body-ctx_1)))))
78197                                                            (if obs_0
78198                                                              (call-expand-observe
78199                                                               obs_0
78200                                                               'splice
78201                                                               splice-bodys_0)
78202                                                              (void)))
78203                                                          (loop_0
78204                                                           body-ctx_1
78205                                                           splice-bodys_0
78206                                                           done-bodys_0
78207                                                           val-idss_0
78208                                                           val-keyss_0
78209                                                           val-rhss_0
78210                                                           track-stxs_0
78211                                                           trans-idss_0
78212                                                           trans-stxs_0
78213                                                           stx-clauses_0
78214                                                           dups_0
78215                                                           just-saw-define-syntaxes?_0)))))
78216                                                   (args
78217                                                    (raise-binding-result-arity-error
78218                                                     3
78219                                                     args)))))
78220                                               (if (eq? tmp_0 'define-values)
78221                                                 (begin
78222                                                   (let ((obs_0
78223                                                          (begin-unsafe
78224                                                           (expand-context/inner-observer
78225                                                            (root-expand-context/outer-inner
78226                                                             body-ctx_1)))))
78227                                                     (if obs_0
78228                                                       (call-expand-observe
78229                                                        obs_0
78230                                                        'prim-define-values
78231                                                        exp-body_0)
78232                                                       (void)))
78233                                                   (call-with-values
78234                                                    (lambda ()
78235                                                      (call-with-values
78236                                                       (lambda ()
78237                                                         (let ((s_0
78238                                                                (if (syntax?$1
78239                                                                     exp-body_0)
78240                                                                  (syntax-e$1
78241                                                                   exp-body_0)
78242                                                                  exp-body_0)))
78243                                                           (if (pair? s_0)
78244                                                             (let ((define-values88_0
78245                                                                    (let ((s_1
78246                                                                           (car
78247                                                                            s_0)))
78248                                                                      s_1)))
78249                                                               (call-with-values
78250                                                                (lambda ()
78251                                                                  (let ((s_1
78252                                                                         (cdr
78253                                                                          s_0)))
78254                                                                    (let ((s_2
78255                                                                           (if (syntax?$1
78256                                                                                s_1)
78257                                                                             (syntax-e$1
78258                                                                              s_1)
78259                                                                             s_1)))
78260                                                                      (if (pair?
78261                                                                           s_2)
78262                                                                        (let ((id91_0
78263                                                                               (let ((s_3
78264                                                                                      (car
78265                                                                                       s_2)))
78266                                                                                 (let ((s_4
78267                                                                                        (if (syntax?$1
78268                                                                                             s_3)
78269                                                                                          (syntax-e$1
78270                                                                                           s_3)
78271                                                                                          s_3)))
78272                                                                                   (let ((flat-s_0
78273                                                                                          (to-syntax-list.1
78274                                                                                           s_4)))
78275                                                                                     (if (not
78276                                                                                          flat-s_0)
78277                                                                                       (raise-syntax-error$1
78278                                                                                        #f
78279                                                                                        "bad syntax"
78280                                                                                        exp-body_0)
78281                                                                                       (let ((id_0
78282                                                                                              (begin
78283                                                                                                (letrec*
78284                                                                                                 ((for-loop_0
78285                                                                                                   (|#%name|
78286                                                                                                    for-loop
78287                                                                                                    (lambda (id_0
78288                                                                                                             lst_0)
78289                                                                                                      (begin
78290                                                                                                        (if (pair?
78291                                                                                                             lst_0)
78292                                                                                                          (let ((s_5
78293                                                                                                                 (unsafe-car
78294                                                                                                                  lst_0)))
78295                                                                                                            (let ((rest_0
78296                                                                                                                   (unsafe-cdr
78297                                                                                                                    lst_0)))
78298                                                                                                              (let ((id_1
78299                                                                                                                     (let ((id_1
78300                                                                                                                            (let ((id94_0
78301                                                                                                                                   (if (let ((or-part_0
78302                                                                                                                                              (if (syntax?$1
78303                                                                                                                                                   s_5)
78304                                                                                                                                                (symbol?
78305                                                                                                                                                 (syntax-e$1
78306                                                                                                                                                  s_5))
78307                                                                                                                                                #f)))
78308                                                                                                                                         (if or-part_0
78309                                                                                                                                           or-part_0
78310                                                                                                                                           (symbol?
78311                                                                                                                                            s_5)))
78312                                                                                                                                     s_5
78313                                                                                                                                     (raise-syntax-error$1
78314                                                                                                                                      #f
78315                                                                                                                                      "not an identifier"
78316                                                                                                                                      exp-body_0
78317                                                                                                                                      s_5))))
78318                                                                                                                              (cons
78319                                                                                                                               id94_0
78320                                                                                                                               id_0))))
78321                                                                                                                       (values
78322                                                                                                                        id_1))))
78323                                                                                                                (for-loop_0
78324                                                                                                                 id_1
78325                                                                                                                 rest_0))))
78326                                                                                                          id_0))))))
78327                                                                                                 (for-loop_0
78328                                                                                                  null
78329                                                                                                  flat-s_0)))))
78330                                                                                         (reverse$1
78331                                                                                          id_0))))))))
78332                                                                          (let ((rhs92_0
78333                                                                                 (let ((s_3
78334                                                                                        (cdr
78335                                                                                         s_2)))
78336                                                                                   (let ((s_4
78337                                                                                          (if (syntax?$1
78338                                                                                               s_3)
78339                                                                                            (syntax-e$1
78340                                                                                             s_3)
78341                                                                                            s_3)))
78342                                                                                     (if (pair?
78343                                                                                          s_4)
78344                                                                                       (let ((rhs93_0
78345                                                                                              (let ((s_5
78346                                                                                                     (car
78347                                                                                                      s_4)))
78348                                                                                                s_5)))
78349                                                                                         (call-with-values
78350                                                                                          (lambda ()
78351                                                                                            (let ((s_5
78352                                                                                                   (cdr
78353                                                                                                    s_4)))
78354                                                                                              (let ((s_6
78355                                                                                                     (if (syntax?$1
78356                                                                                                          s_5)
78357                                                                                                       (syntax-e$1
78358                                                                                                        s_5)
78359                                                                                                       s_5)))
78360                                                                                                (if (null?
78361                                                                                                     s_6)
78362                                                                                                  (values)
78363                                                                                                  (raise-syntax-error$1
78364                                                                                                   #f
78365                                                                                                   "bad syntax"
78366                                                                                                   exp-body_0)))))
78367                                                                                          (case-lambda
78368                                                                                           (()
78369                                                                                            (let ((rhs93_1
78370                                                                                                   rhs93_0))
78371                                                                                              (values
78372                                                                                               rhs93_1)))
78373                                                                                           (args
78374                                                                                            (raise-binding-result-arity-error
78375                                                                                             0
78376                                                                                             args)))))
78377                                                                                       (raise-syntax-error$1
78378                                                                                        #f
78379                                                                                        "bad syntax"
78380                                                                                        exp-body_0))))))
78381                                                                            (let ((id91_1
78382                                                                                   id91_0))
78383                                                                              (values
78384                                                                               id91_1
78385                                                                               rhs92_0))))
78386                                                                        (raise-syntax-error$1
78387                                                                         #f
78388                                                                         "bad syntax"
78389                                                                         exp-body_0)))))
78390                                                                (case-lambda
78391                                                                 ((id89_0
78392                                                                   rhs90_0)
78393                                                                  (let ((define-values88_1
78394                                                                         define-values88_0))
78395                                                                    (values
78396                                                                     define-values88_1
78397                                                                     id89_0
78398                                                                     rhs90_0)))
78399                                                                 (args
78400                                                                  (raise-binding-result-arity-error
78401                                                                   2
78402                                                                   args)))))
78403                                                             (raise-syntax-error$1
78404                                                              #f
78405                                                              "bad syntax"
78406                                                              exp-body_0))))
78407                                                       (case-lambda
78408                                                        ((define-values85_0
78409                                                          id86_0
78410                                                          rhs87_0)
78411                                                         (values
78412                                                          #t
78413                                                          define-values85_0
78414                                                          id86_0
78415                                                          rhs87_0))
78416                                                        (args
78417                                                         (raise-binding-result-arity-error
78418                                                          3
78419                                                          args)))))
78420                                                    (case-lambda
78421                                                     ((ok?_0
78422                                                       define-values85_0
78423                                                       id86_0
78424                                                       rhs87_0)
78425                                                      (let ((ids_0
78426                                                             (remove-use-site-scopes
78427                                                              id86_0
78428                                                              body-ctx_1)))
78429                                                        (begin
78430                                                          (let ((obs_0
78431                                                                 (begin-unsafe
78432                                                                  (expand-context/inner-observer
78433                                                                   (root-expand-context/outer-inner
78434                                                                    body-ctx_1)))))
78435                                                            (if obs_0
78436                                                              (call-expand-observe
78437                                                               obs_0
78438                                                               'rename-one
78439                                                               (list
78440                                                                ids_0
78441                                                                rhs87_0))
78442                                                              (void)))
78443                                                          (let ((new-dups_0
78444                                                                 (check-no-duplicate-ids.1
78445                                                                  unsafe-undefined
78446                                                                  ids_0
78447                                                                  phase_0
78448                                                                  exp-body_0
78449                                                                  dups_0)))
78450                                                            (let ((counter_0
78451                                                                   (begin-unsafe
78452                                                                    (root-expand-context/inner-counter
78453                                                                     (root-expand-context/outer-inner
78454                                                                      ctx6_0)))))
78455                                                              (let ((local-sym_0
78456                                                                     (if (begin-unsafe
78457                                                                          (expand-context/inner-normalize-locals?
78458                                                                           (root-expand-context/outer-inner
78459                                                                            ctx6_0)))
78460                                                                       'loc
78461                                                                       #f)))
78462                                                                (let ((keys_0
78463                                                                       (reverse$1
78464                                                                        (begin
78465                                                                          (letrec*
78466                                                                           ((for-loop_0
78467                                                                             (|#%name|
78468                                                                              for-loop
78469                                                                              (lambda (fold-var_0
78470                                                                                       lst_0)
78471                                                                                (begin
78472                                                                                  (if (pair?
78473                                                                                       lst_0)
78474                                                                                    (let ((id_0
78475                                                                                           (unsafe-car
78476                                                                                            lst_0)))
78477                                                                                      (let ((rest_0
78478                                                                                             (unsafe-cdr
78479                                                                                              lst_0)))
78480                                                                                        (let ((fold-var_1
78481                                                                                               (let ((fold-var_1
78482                                                                                                      (cons
78483                                                                                                       (add-local-binding!.1
78484                                                                                                        frame-id_0
78485                                                                                                        exp-body_0
78486                                                                                                        local-sym_0
78487                                                                                                        id_0
78488                                                                                                        phase_0
78489                                                                                                        counter_0)
78490                                                                                                       fold-var_0)))
78491                                                                                                 (values
78492                                                                                                  fold-var_1))))
78493                                                                                          (for-loop_0
78494                                                                                           fold-var_1
78495                                                                                           rest_0))))
78496                                                                                    fold-var_0))))))
78497                                                                           (for-loop_0
78498                                                                            null
78499                                                                            ids_0))))))
78500                                                                  (let ((extended-env_0
78501                                                                         (begin
78502                                                                           (letrec*
78503                                                                            ((for-loop_0
78504                                                                              (|#%name|
78505                                                                               for-loop
78506                                                                               (lambda (env_0
78507                                                                                        lst_0
78508                                                                                        lst_1)
78509                                                                                 (begin
78510                                                                                   (if (if (pair?
78511                                                                                            lst_0)
78512                                                                                         (pair?
78513                                                                                          lst_1)
78514                                                                                         #f)
78515                                                                                     (let ((key_0
78516                                                                                            (unsafe-car
78517                                                                                             lst_0)))
78518                                                                                       (let ((rest_0
78519                                                                                              (unsafe-cdr
78520                                                                                               lst_0)))
78521                                                                                         (let ((id_0
78522                                                                                                (unsafe-car
78523                                                                                                 lst_1)))
78524                                                                                           (let ((rest_1
78525                                                                                                  (unsafe-cdr
78526                                                                                                   lst_1)))
78527                                                                                             (let ((val_0
78528                                                                                                    (local-variable1.1
78529                                                                                                     id_0)))
78530                                                                                               (let ((env_1
78531                                                                                                      (let ((env_1
78532                                                                                                             (begin-unsafe
78533                                                                                                              (hash-set
78534                                                                                                               env_0
78535                                                                                                               key_0
78536                                                                                                               val_0))))
78537                                                                                                        (values
78538                                                                                                         env_1))))
78539                                                                                                 (for-loop_0
78540                                                                                                  env_1
78541                                                                                                  rest_0
78542                                                                                                  rest_1)))))))
78543                                                                                     env_0))))))
78544                                                                            (for-loop_0
78545                                                                             (begin-unsafe
78546                                                                              (expand-context/outer-env
78547                                                                               body-ctx_1))
78548                                                                             keys_0
78549                                                                             ids_0)))))
78550                                                                    (let ((app_0
78551                                                                           (if (expand-context/outer?
78552                                                                                body-ctx_1)
78553                                                                             (let ((binding-layer106_0
78554                                                                                    (maybe-increment-binding-layer_0
78555                                                                                     ids_0
78556                                                                                     body-ctx_1)))
78557                                                                               (let ((inner107_0
78558                                                                                      (root-expand-context/outer-inner
78559                                                                                       body-ctx_1)))
78560                                                                                 (let ((binding-layer106_1
78561                                                                                        binding-layer106_0))
78562                                                                                   (expand-context/outer1.1
78563                                                                                    inner107_0
78564                                                                                    (root-expand-context/outer-post-expansion
78565                                                                                     body-ctx_1)
78566                                                                                    (root-expand-context/outer-use-site-scopes
78567                                                                                     body-ctx_1)
78568                                                                                    (root-expand-context/outer-frame-id
78569                                                                                     body-ctx_1)
78570                                                                                    (expand-context/outer-context
78571                                                                                     body-ctx_1)
78572                                                                                    extended-env_0
78573                                                                                    (expand-context/outer-scopes
78574                                                                                     body-ctx_1)
78575                                                                                    (expand-context/outer-def-ctx-scopes
78576                                                                                     body-ctx_1)
78577                                                                                    binding-layer106_1
78578                                                                                    (expand-context/outer-reference-records
78579                                                                                     body-ctx_1)
78580                                                                                    (expand-context/outer-only-immediate?
78581                                                                                     body-ctx_1)
78582                                                                                    (expand-context/outer-need-eventually-defined
78583                                                                                     body-ctx_1)
78584                                                                                    (expand-context/outer-current-introduction-scopes
78585                                                                                     body-ctx_1)
78586                                                                                    (expand-context/outer-current-use-scopes
78587                                                                                     body-ctx_1)
78588                                                                                    (expand-context/outer-name
78589                                                                                     body-ctx_1)))))
78590                                                                             (raise-argument-error
78591                                                                              'struct-copy
78592                                                                              "expand-context/outer?"
78593                                                                              body-ctx_1))))
78594                                                                      (let ((app_1
78595                                                                             (cons
78596                                                                              ids_0
78597                                                                              (append
78598                                                                               (reverse$1
78599                                                                                (begin
78600                                                                                  (letrec*
78601                                                                                   ((for-loop_0
78602                                                                                     (|#%name|
78603                                                                                      for-loop
78604                                                                                      (lambda (fold-var_0
78605                                                                                               lst_0)
78606                                                                                        (begin
78607                                                                                          (if (pair?
78608                                                                                               lst_0)
78609                                                                                            (let ((done-body_0
78610                                                                                                   (unsafe-car
78611                                                                                                    lst_0)))
78612                                                                                              (let ((rest_0
78613                                                                                                     (unsafe-cdr
78614                                                                                                      lst_0)))
78615                                                                                                (let ((fold-var_1
78616                                                                                                       (cons
78617                                                                                                        null
78618                                                                                                        fold-var_0)))
78619                                                                                                  (let ((fold-var_2
78620                                                                                                         (values
78621                                                                                                          fold-var_1)))
78622                                                                                                    (for-loop_0
78623                                                                                                     fold-var_2
78624                                                                                                     rest_0)))))
78625                                                                                            fold-var_0))))))
78626                                                                                   (for-loop_0
78627                                                                                    null
78628                                                                                    done-bodys_0))))
78629                                                                               val-idss_0))))
78630                                                                        (let ((app_2
78631                                                                               (cons
78632                                                                                keys_0
78633                                                                                (append
78634                                                                                 (reverse$1
78635                                                                                  (begin
78636                                                                                    (letrec*
78637                                                                                     ((for-loop_0
78638                                                                                       (|#%name|
78639                                                                                        for-loop
78640                                                                                        (lambda (fold-var_0
78641                                                                                                 lst_0)
78642                                                                                          (begin
78643                                                                                            (if (pair?
78644                                                                                                 lst_0)
78645                                                                                              (let ((done-body_0
78646                                                                                                     (unsafe-car
78647                                                                                                      lst_0)))
78648                                                                                                (let ((rest_0
78649                                                                                                       (unsafe-cdr
78650                                                                                                        lst_0)))
78651                                                                                                  (let ((fold-var_1
78652                                                                                                         (cons
78653                                                                                                          null
78654                                                                                                          fold-var_0)))
78655                                                                                                    (let ((fold-var_2
78656                                                                                                           (values
78657                                                                                                            fold-var_1)))
78658                                                                                                      (for-loop_0
78659                                                                                                       fold-var_2
78660                                                                                                       rest_0)))))
78661                                                                                              fold-var_0))))))
78662                                                                                     (for-loop_0
78663                                                                                      null
78664                                                                                      done-bodys_0))))
78665                                                                                 val-keyss_0))))
78666                                                                          (let ((app_3
78667                                                                                 (cons
78668                                                                                  rhs87_0
78669                                                                                  (append
78670                                                                                   (reverse$1
78671                                                                                    (begin
78672                                                                                      (letrec*
78673                                                                                       ((for-loop_0
78674                                                                                         (|#%name|
78675                                                                                          for-loop
78676                                                                                          (lambda (fold-var_0
78677                                                                                                   lst_0)
78678                                                                                            (begin
78679                                                                                              (if (pair?
78680                                                                                                   lst_0)
78681                                                                                                (let ((done-body_0
78682                                                                                                       (unsafe-car
78683                                                                                                        lst_0)))
78684                                                                                                  (let ((rest_0
78685                                                                                                         (unsafe-cdr
78686                                                                                                          lst_0)))
78687                                                                                                    (let ((fold-var_1
78688                                                                                                           (let ((fold-var_1
78689                                                                                                                  (cons
78690                                                                                                                   (no-binds
78691                                                                                                                    done-body_0
78692                                                                                                                    source1_0
78693                                                                                                                    phase_0)
78694                                                                                                                   fold-var_0)))
78695                                                                                                             (values
78696                                                                                                              fold-var_1))))
78697                                                                                                      (for-loop_0
78698                                                                                                       fold-var_1
78699                                                                                                       rest_0))))
78700                                                                                                fold-var_0))))))
78701                                                                                       (for-loop_0
78702                                                                                        null
78703                                                                                        done-bodys_0))))
78704                                                                                   val-rhss_0))))
78705                                                                            (loop_0
78706                                                                             app_0
78707                                                                             rest-bodys_0
78708                                                                             null
78709                                                                             app_1
78710                                                                             app_2
78711                                                                             app_3
78712                                                                             (let ((app_4
78713                                                                                    (keep-as-needed.1
78714                                                                                     #t
78715                                                                                     #f
78716                                                                                     #f
78717                                                                                     body-ctx_1
78718                                                                                     exp-body_0)))
78719                                                                               (cons
78720                                                                                app_4
78721                                                                                (append
78722                                                                                 (reverse$1
78723                                                                                  (begin
78724                                                                                    (letrec*
78725                                                                                     ((for-loop_0
78726                                                                                       (|#%name|
78727                                                                                        for-loop
78728                                                                                        (lambda (fold-var_0
78729                                                                                                 lst_0)
78730                                                                                          (begin
78731                                                                                            (if (pair?
78732                                                                                                 lst_0)
78733                                                                                              (let ((done-body_0
78734                                                                                                     (unsafe-car
78735                                                                                                      lst_0)))
78736                                                                                                (let ((rest_0
78737                                                                                                       (unsafe-cdr
78738                                                                                                        lst_0)))
78739                                                                                                  (let ((fold-var_1
78740                                                                                                         (cons
78741                                                                                                          #f
78742                                                                                                          fold-var_0)))
78743                                                                                                    (let ((fold-var_2
78744                                                                                                           (values
78745                                                                                                            fold-var_1)))
78746                                                                                                      (for-loop_0
78747                                                                                                       fold-var_2
78748                                                                                                       rest_0)))))
78749                                                                                              fold-var_0))))))
78750                                                                                     (for-loop_0
78751                                                                                      null
78752                                                                                      done-bodys_0))))
78753                                                                                 track-stxs_0)))
78754                                                                             trans-idss_0
78755                                                                             trans-stxs_0
78756                                                                             stx-clauses_0
78757                                                                             new-dups_0
78758                                                                             #f)))))))))))))
78759                                                     (args
78760                                                      (raise-binding-result-arity-error
78761                                                       4
78762                                                       args)))))
78763                                                 (if (eq?
78764                                                      tmp_0
78765                                                      'define-syntaxes)
78766                                                   (begin
78767                                                     (let ((obs_0
78768                                                            (begin-unsafe
78769                                                             (expand-context/inner-observer
78770                                                              (root-expand-context/outer-inner
78771                                                               body-ctx_1)))))
78772                                                       (if obs_0
78773                                                         (call-expand-observe
78774                                                          obs_0
78775                                                          'prim-define-syntaxes
78776                                                          exp-body_0)
78777                                                         (void)))
78778                                                     (call-with-values
78779                                                      (lambda ()
78780                                                        (call-with-values
78781                                                         (lambda ()
78782                                                           (let ((s_0
78783                                                                  (if (syntax?$1
78784                                                                       exp-body_0)
78785                                                                    (syntax-e$1
78786                                                                     exp-body_0)
78787                                                                    exp-body_0)))
78788                                                             (if (pair? s_0)
78789                                                               (let ((define-syntaxes114_0
78790                                                                      (let ((s_1
78791                                                                             (car
78792                                                                              s_0)))
78793                                                                        s_1)))
78794                                                                 (call-with-values
78795                                                                  (lambda ()
78796                                                                    (let ((s_1
78797                                                                           (cdr
78798                                                                            s_0)))
78799                                                                      (let ((s_2
78800                                                                             (if (syntax?$1
78801                                                                                  s_1)
78802                                                                               (syntax-e$1
78803                                                                                s_1)
78804                                                                               s_1)))
78805                                                                        (if (pair?
78806                                                                             s_2)
78807                                                                          (let ((id117_0
78808                                                                                 (let ((s_3
78809                                                                                        (car
78810                                                                                         s_2)))
78811                                                                                   (let ((s_4
78812                                                                                          (if (syntax?$1
78813                                                                                               s_3)
78814                                                                                            (syntax-e$1
78815                                                                                             s_3)
78816                                                                                            s_3)))
78817                                                                                     (let ((flat-s_0
78818                                                                                            (to-syntax-list.1
78819                                                                                             s_4)))
78820                                                                                       (if (not
78821                                                                                            flat-s_0)
78822                                                                                         (raise-syntax-error$1
78823                                                                                          #f
78824                                                                                          "bad syntax"
78825                                                                                          exp-body_0)
78826                                                                                         (let ((id_0
78827                                                                                                (begin
78828                                                                                                  (letrec*
78829                                                                                                   ((for-loop_0
78830                                                                                                     (|#%name|
78831                                                                                                      for-loop
78832                                                                                                      (lambda (id_0
78833                                                                                                               lst_0)
78834                                                                                                        (begin
78835                                                                                                          (if (pair?
78836                                                                                                               lst_0)
78837                                                                                                            (let ((s_5
78838                                                                                                                   (unsafe-car
78839                                                                                                                    lst_0)))
78840                                                                                                              (let ((rest_0
78841                                                                                                                     (unsafe-cdr
78842                                                                                                                      lst_0)))
78843                                                                                                                (let ((id_1
78844                                                                                                                       (let ((id_1
78845                                                                                                                              (let ((id120_0
78846                                                                                                                                     (if (let ((or-part_0
78847                                                                                                                                                (if (syntax?$1
78848                                                                                                                                                     s_5)
78849                                                                                                                                                  (symbol?
78850                                                                                                                                                   (syntax-e$1
78851                                                                                                                                                    s_5))
78852                                                                                                                                                  #f)))
78853                                                                                                                                           (if or-part_0
78854                                                                                                                                             or-part_0
78855                                                                                                                                             (symbol?
78856                                                                                                                                              s_5)))
78857                                                                                                                                       s_5
78858                                                                                                                                       (raise-syntax-error$1
78859                                                                                                                                        #f
78860                                                                                                                                        "not an identifier"
78861                                                                                                                                        exp-body_0
78862                                                                                                                                        s_5))))
78863                                                                                                                                (cons
78864                                                                                                                                 id120_0
78865                                                                                                                                 id_0))))
78866                                                                                                                         (values
78867                                                                                                                          id_1))))
78868                                                                                                                  (for-loop_0
78869                                                                                                                   id_1
78870                                                                                                                   rest_0))))
78871                                                                                                            id_0))))))
78872                                                                                                   (for-loop_0
78873                                                                                                    null
78874                                                                                                    flat-s_0)))))
78875                                                                                           (reverse$1
78876                                                                                            id_0))))))))
78877                                                                            (let ((rhs118_0
78878                                                                                   (let ((s_3
78879                                                                                          (cdr
78880                                                                                           s_2)))
78881                                                                                     (let ((s_4
78882                                                                                            (if (syntax?$1
78883                                                                                                 s_3)
78884                                                                                              (syntax-e$1
78885                                                                                               s_3)
78886                                                                                              s_3)))
78887                                                                                       (if (pair?
78888                                                                                            s_4)
78889                                                                                         (let ((rhs119_0
78890                                                                                                (let ((s_5
78891                                                                                                       (car
78892                                                                                                        s_4)))
78893                                                                                                  s_5)))
78894                                                                                           (call-with-values
78895                                                                                            (lambda ()
78896                                                                                              (let ((s_5
78897                                                                                                     (cdr
78898                                                                                                      s_4)))
78899                                                                                                (let ((s_6
78900                                                                                                       (if (syntax?$1
78901                                                                                                            s_5)
78902                                                                                                         (syntax-e$1
78903                                                                                                          s_5)
78904                                                                                                         s_5)))
78905                                                                                                  (if (null?
78906                                                                                                       s_6)
78907                                                                                                    (values)
78908                                                                                                    (raise-syntax-error$1
78909                                                                                                     #f
78910                                                                                                     "bad syntax"
78911                                                                                                     exp-body_0)))))
78912                                                                                            (case-lambda
78913                                                                                             (()
78914                                                                                              (let ((rhs119_1
78915                                                                                                     rhs119_0))
78916                                                                                                (values
78917                                                                                                 rhs119_1)))
78918                                                                                             (args
78919                                                                                              (raise-binding-result-arity-error
78920                                                                                               0
78921                                                                                               args)))))
78922                                                                                         (raise-syntax-error$1
78923                                                                                          #f
78924                                                                                          "bad syntax"
78925                                                                                          exp-body_0))))))
78926                                                                              (let ((id117_1
78927                                                                                     id117_0))
78928                                                                                (values
78929                                                                                 id117_1
78930                                                                                 rhs118_0))))
78931                                                                          (raise-syntax-error$1
78932                                                                           #f
78933                                                                           "bad syntax"
78934                                                                           exp-body_0)))))
78935                                                                  (case-lambda
78936                                                                   ((id115_0
78937                                                                     rhs116_0)
78938                                                                    (let ((define-syntaxes114_1
78939                                                                           define-syntaxes114_0))
78940                                                                      (values
78941                                                                       define-syntaxes114_1
78942                                                                       id115_0
78943                                                                       rhs116_0)))
78944                                                                   (args
78945                                                                    (raise-binding-result-arity-error
78946                                                                     2
78947                                                                     args)))))
78948                                                               (raise-syntax-error$1
78949                                                                #f
78950                                                                "bad syntax"
78951                                                                exp-body_0))))
78952                                                         (case-lambda
78953                                                          ((define-syntaxes111_0
78954                                                            id112_0
78955                                                            rhs113_0)
78956                                                           (values
78957                                                            #t
78958                                                            define-syntaxes111_0
78959                                                            id112_0
78960                                                            rhs113_0))
78961                                                          (args
78962                                                           (raise-binding-result-arity-error
78963                                                            3
78964                                                            args)))))
78965                                                      (case-lambda
78966                                                       ((ok?_0
78967                                                         define-syntaxes111_0
78968                                                         id112_0
78969                                                         rhs113_0)
78970                                                        (let ((ids_0
78971                                                               (remove-use-site-scopes
78972                                                                id112_0
78973                                                                body-ctx_1)))
78974                                                          (begin
78975                                                            (let ((obs_0
78976                                                                   (begin-unsafe
78977                                                                    (expand-context/inner-observer
78978                                                                     (root-expand-context/outer-inner
78979                                                                      body-ctx_1)))))
78980                                                              (if obs_0
78981                                                                (call-expand-observe
78982                                                                 obs_0
78983                                                                 'rename-one
78984                                                                 (list
78985                                                                  ids_0
78986                                                                  rhs113_0))
78987                                                                (void)))
78988                                                            (let ((new-dups_0
78989                                                                   (check-no-duplicate-ids.1
78990                                                                    unsafe-undefined
78991                                                                    ids_0
78992                                                                    phase_0
78993                                                                    exp-body_0
78994                                                                    dups_0)))
78995                                                              (let ((counter_0
78996                                                                     (begin-unsafe
78997                                                                      (root-expand-context/inner-counter
78998                                                                       (root-expand-context/outer-inner
78999                                                                        ctx6_0)))))
79000                                                                (let ((local-sym_0
79001                                                                       (if (begin-unsafe
79002                                                                            (expand-context/inner-normalize-locals?
79003                                                                             (root-expand-context/outer-inner
79004                                                                              ctx6_0)))
79005                                                                         'mac
79006                                                                         #f)))
79007                                                                  (let ((keys_0
79008                                                                         (reverse$1
79009                                                                          (begin
79010                                                                            (letrec*
79011                                                                             ((for-loop_0
79012                                                                               (|#%name|
79013                                                                                for-loop
79014                                                                                (lambda (fold-var_0
79015                                                                                         lst_0)
79016                                                                                  (begin
79017                                                                                    (if (pair?
79018                                                                                         lst_0)
79019                                                                                      (let ((id_0
79020                                                                                             (unsafe-car
79021                                                                                              lst_0)))
79022                                                                                        (let ((rest_0
79023                                                                                               (unsafe-cdr
79024                                                                                                lst_0)))
79025                                                                                          (let ((fold-var_1
79026                                                                                                 (let ((fold-var_1
79027                                                                                                        (cons
79028                                                                                                         (add-local-binding!.1
79029                                                                                                          frame-id_0
79030                                                                                                          exp-body_0
79031                                                                                                          local-sym_0
79032                                                                                                          id_0
79033                                                                                                          phase_0
79034                                                                                                          counter_0)
79035                                                                                                         fold-var_0)))
79036                                                                                                   (values
79037                                                                                                    fold-var_1))))
79038                                                                                            (for-loop_0
79039                                                                                             fold-var_1
79040                                                                                             rest_0))))
79041                                                                                      fold-var_0))))))
79042                                                                             (for-loop_0
79043                                                                              null
79044                                                                              ids_0))))))
79045                                                                    (begin
79046                                                                      (let ((obs_0
79047                                                                             (begin-unsafe
79048                                                                              (expand-context/inner-observer
79049                                                                               (root-expand-context/outer-inner
79050                                                                                body-ctx_1)))))
79051                                                                        (if obs_0
79052                                                                          (call-expand-observe
79053                                                                           obs_0
79054                                                                           'prepare-env)
79055                                                                          (void)))
79056                                                                      (begin
79057                                                                        (prepare-next-phase-namespace
79058                                                                         ctx6_0)
79059                                                                        (begin
79060                                                                          (let ((obs_0
79061                                                                                 (begin-unsafe
79062                                                                                  (expand-context/inner-observer
79063                                                                                   (root-expand-context/outer-inner
79064                                                                                    body-ctx_1)))))
79065                                                                            (if obs_0
79066                                                                              (call-expand-observe
79067                                                                               obs_0
79068                                                                               'enter-bind)
79069                                                                              (void)))
79070                                                                          (let ((vals_0
79071                                                                                 (eval-for-syntaxes-binding
79072                                                                                  'define-syntaxes
79073                                                                                  rhs113_0
79074                                                                                  ids_0
79075                                                                                  body-ctx_1)))
79076                                                                            (let ((extended-env_0
79077                                                                                   (begin
79078                                                                                     (letrec*
79079                                                                                      ((for-loop_0
79080                                                                                        (|#%name|
79081                                                                                         for-loop
79082                                                                                         (lambda (env_0
79083                                                                                                  lst_0
79084                                                                                                  lst_1
79085                                                                                                  lst_2)
79086                                                                                           (begin
79087                                                                                             (if (if (pair?
79088                                                                                                      lst_0)
79089                                                                                                   (if (pair?
79090                                                                                                        lst_1)
79091                                                                                                     (pair?
79092                                                                                                      lst_2)
79093                                                                                                     #f)
79094                                                                                                   #f)
79095                                                                                               (let ((key_0
79096                                                                                                      (unsafe-car
79097                                                                                                       lst_0)))
79098                                                                                                 (let ((rest_0
79099                                                                                                        (unsafe-cdr
79100                                                                                                         lst_0)))
79101                                                                                                   (let ((val_0
79102                                                                                                          (unsafe-car
79103                                                                                                           lst_1)))
79104                                                                                                     (let ((rest_1
79105                                                                                                            (unsafe-cdr
79106                                                                                                             lst_1)))
79107                                                                                                       (let ((id_0
79108                                                                                                              (unsafe-car
79109                                                                                                               lst_2)))
79110                                                                                                         (let ((rest_2
79111                                                                                                                (unsafe-cdr
79112                                                                                                                 lst_2)))
79113                                                                                                           (let ((env_1
79114                                                                                                                  (let ((env_1
79115                                                                                                                         (begin
79116                                                                                                                           (maybe-install-free=id-in-context!
79117                                                                                                                            val_0
79118                                                                                                                            id_0
79119                                                                                                                            phase_0
79120                                                                                                                            body-ctx_1)
79121                                                                                                                           (begin-unsafe
79122                                                                                                                            (hash-set
79123                                                                                                                             env_0
79124                                                                                                                             key_0
79125                                                                                                                             val_0)))))
79126                                                                                                                    (values
79127                                                                                                                     env_1))))
79128                                                                                                             (for-loop_0
79129                                                                                                              env_1
79130                                                                                                              rest_0
79131                                                                                                              rest_1
79132                                                                                                              rest_2))))))))
79133                                                                                               env_0))))))
79134                                                                                      (for-loop_0
79135                                                                                       (begin-unsafe
79136                                                                                        (expand-context/outer-env
79137                                                                                         body-ctx_1))
79138                                                                                       keys_0
79139                                                                                       vals_0
79140                                                                                       ids_0)))))
79141                                                                              (begin
79142                                                                                (let ((obs_0
79143                                                                                       (begin-unsafe
79144                                                                                        (expand-context/inner-observer
79145                                                                                         (root-expand-context/outer-inner
79146                                                                                          body-ctx_1)))))
79147                                                                                  (if obs_0
79148                                                                                    (call-expand-observe
79149                                                                                     obs_0
79150                                                                                     'exit-bind)
79151                                                                                    (void)))
79152                                                                                (let ((app_0
79153                                                                                       (if (expand-context/outer?
79154                                                                                            body-ctx_1)
79155                                                                                         (let ((binding-layer132_0
79156                                                                                                (maybe-increment-binding-layer_0
79157                                                                                                 ids_0
79158                                                                                                 body-ctx_1)))
79159                                                                                           (let ((inner133_0
79160                                                                                                  (root-expand-context/outer-inner
79161                                                                                                   body-ctx_1)))
79162                                                                                             (let ((binding-layer132_1
79163                                                                                                    binding-layer132_0))
79164                                                                                               (expand-context/outer1.1
79165                                                                                                inner133_0
79166                                                                                                (root-expand-context/outer-post-expansion
79167                                                                                                 body-ctx_1)
79168                                                                                                (root-expand-context/outer-use-site-scopes
79169                                                                                                 body-ctx_1)
79170                                                                                                (root-expand-context/outer-frame-id
79171                                                                                                 body-ctx_1)
79172                                                                                                (expand-context/outer-context
79173                                                                                                 body-ctx_1)
79174                                                                                                extended-env_0
79175                                                                                                (expand-context/outer-scopes
79176                                                                                                 body-ctx_1)
79177                                                                                                (expand-context/outer-def-ctx-scopes
79178                                                                                                 body-ctx_1)
79179                                                                                                binding-layer132_1
79180                                                                                                (expand-context/outer-reference-records
79181                                                                                                 body-ctx_1)
79182                                                                                                (expand-context/outer-only-immediate?
79183                                                                                                 body-ctx_1)
79184                                                                                                (expand-context/outer-need-eventually-defined
79185                                                                                                 body-ctx_1)
79186                                                                                                (expand-context/outer-current-introduction-scopes
79187                                                                                                 body-ctx_1)
79188                                                                                                (expand-context/outer-current-use-scopes
79189                                                                                                 body-ctx_1)
79190                                                                                                (expand-context/outer-name
79191                                                                                                 body-ctx_1)))))
79192                                                                                         (raise-argument-error
79193                                                                                          'struct-copy
79194                                                                                          "expand-context/outer?"
79195                                                                                          body-ctx_1))))
79196                                                                                  (let ((app_1
79197                                                                                         (cons
79198                                                                                          ids_0
79199                                                                                          trans-idss_0)))
79200                                                                                    (let ((app_2
79201                                                                                           (cons
79202                                                                                            (keep-as-needed.1
79203                                                                                             #t
79204                                                                                             #f
79205                                                                                             #f
79206                                                                                             body-ctx_1
79207                                                                                             exp-body_0)
79208                                                                                            trans-stxs_0)))
79209                                                                                      (loop_0
79210                                                                                       app_0
79211                                                                                       rest-bodys_0
79212                                                                                       done-bodys_0
79213                                                                                       val-idss_0
79214                                                                                       val-keyss_0
79215                                                                                       val-rhss_0
79216                                                                                       track-stxs_0
79217                                                                                       app_1
79218                                                                                       app_2
79219                                                                                       (cons
79220                                                                                        (datum->syntax$1
79221                                                                                         #f
79222                                                                                         (list
79223                                                                                          ids_0
79224                                                                                          rhs113_0)
79225                                                                                         exp-body_0)
79226                                                                                        stx-clauses_0)
79227                                                                                       new-dups_0
79228                                                                                       #t)))))))))))))))))
79229                                                       (args
79230                                                        (raise-binding-result-arity-error
79231                                                         4
79232                                                         args)))))
79233                                                   (if stratified?2_0
79234                                                     (begin
79235                                                       (if (null? done-bodys_0)
79236                                                         (void)
79237                                                         (error
79238                                                          "internal error: accumulated expressions not empty"))
79239                                                       (loop_0
79240                                                        body-ctx_1
79241                                                        null
79242                                                        (if (if (null?
79243                                                                 val-idss_0)
79244                                                              (null?
79245                                                               trans-idss_0)
79246                                                              #f)
79247                                                          (reverse$1
79248                                                           (cons
79249                                                            exp-body_0
79250                                                            rest-bodys_0))
79251                                                          (list
79252                                                           (datum->syntax$1
79253                                                            #f
79254                                                            (let ((app_0
79255                                                                   (core-id
79256                                                                    '|#%stratified-body|
79257                                                                    phase_0)))
79258                                                              (cons
79259                                                               app_0
79260                                                               (cons
79261                                                                exp-body_0
79262                                                                rest-bodys_0))))))
79263                                                        val-idss_0
79264                                                        val-keyss_0
79265                                                        val-rhss_0
79266                                                        track-stxs_0
79267                                                        trans-idss_0
79268                                                        trans-stxs_0
79269                                                        stx-clauses_0
79270                                                        dups_0
79271                                                        #f))
79272                                                     (loop_0
79273                                                      body-ctx_1
79274                                                      rest-bodys_0
79275                                                      (cons
79276                                                       exp-body_0
79277                                                       done-bodys_0)
79278                                                      val-idss_0
79279                                                      val-keyss_0
79280                                                      val-rhss_0
79281                                                      track-stxs_0
79282                                                      trans-idss_0
79283                                                      trans-stxs_0
79284                                                      stx-clauses_0
79285                                                      dups_0
79286                                                      #f)))))))))))))))
79287                            (loop_0
79288                             body-ctx_0
79289                             init-bodys_0
79290                             null
79291                             null
79292                             null
79293                             null
79294                             null
79295                             null
79296                             null
79297                             null
79298                             (make-check-no-duplicate-table)
79299                             #f))))))))))))))))
79300(define finish-expanding-body.1
79301  (|#%name|
79302   finish-expanding-body
79303   (lambda (disappeared-transformer-bindings13_0
79304            disappeared-transformer-forms14_0
79305            just-saw-define-syntaxes?11_0
79306            name12_0
79307            original-bodys8_0
79308            source9_0
79309            stratified?10_0
79310            body-ctx22_0
79311            frame-id23_0
79312            def-ctx-scopes24_0
79313            val-idss25_0
79314            val-keyss26_0
79315            val-rhss27_0
79316            track-stxs28_0
79317            stx-clauses29_0
79318            done-bodys30_0)
79319     (begin
79320       (begin
79321         (if (let ((or-part_0 (null? done-bodys30_0)))
79322               (if or-part_0 or-part_0 just-saw-define-syntaxes?11_0))
79323           (let ((app_0 (string->symbol "begin (possibly implicit)")))
79324             (raise-syntax-error$1
79325              app_0
79326              "no expression after a sequence of internal definitions"
79327              (datum->syntax$1 #f (cons 'begin original-bodys8_0) source9_0)
79328              #f
79329              original-bodys8_0))
79330           (void))
79331         (let ((finish-ctx_0
79332                (let ((v_0
79333                       (accumulate-def-ctx-scopes
79334                        body-ctx22_0
79335                        def-ctx-scopes24_0)))
79336                  (if (expand-context/outer? v_0)
79337                    (let ((use-site-scopes138_0 (box null)))
79338                      (let ((inner142_0 (root-expand-context/outer-inner v_0)))
79339                        (expand-context/outer1.1
79340                         inner142_0
79341                         #f
79342                         use-site-scopes138_0
79343                         (root-expand-context/outer-frame-id v_0)
79344                         'expression
79345                         (expand-context/outer-env v_0)
79346                         (expand-context/outer-scopes v_0)
79347                         #f
79348                         (expand-context/outer-binding-layer v_0)
79349                         (expand-context/outer-reference-records v_0)
79350                         #f
79351                         (expand-context/outer-need-eventually-defined v_0)
79352                         (expand-context/outer-current-introduction-scopes v_0)
79353                         (expand-context/outer-current-use-scopes v_0)
79354                         (expand-context/outer-name v_0))))
79355                    (raise-argument-error
79356                     'struct-copy
79357                     "expand-context/outer?"
79358                     v_0)))))
79359           (let ((finish-bodys_0
79360                  (|#%name|
79361                   finish-bodys
79362                   (lambda ()
79363                     (begin
79364                       (let ((last-i_0 (sub1 (length done-bodys30_0))))
79365                         (begin
79366                           (let ((obs_0
79367                                  (begin-unsafe
79368                                   (expand-context/inner-observer
79369                                    (root-expand-context/outer-inner
79370                                     body-ctx22_0)))))
79371                             (if obs_0
79372                               (call-expand-observe
79373                                obs_0
79374                                'enter-list
79375                                done-bodys30_0)
79376                               (void)))
79377                           (let ((exp-bodys_0
79378                                  (reverse$1
79379                                   (begin
79380                                     (letrec*
79381                                      ((for-loop_0
79382                                        (|#%name|
79383                                         for-loop
79384                                         (lambda (fold-var_0 lst_0 pos_0)
79385                                           (begin
79386                                             (if (if (pair? lst_0) #t #f)
79387                                               (let ((done-body_0
79388                                                      (unsafe-car lst_0)))
79389                                                 (let ((rest_0
79390                                                        (unsafe-cdr lst_0)))
79391                                                   (let ((fold-var_1
79392                                                          (let ((fold-var_1
79393                                                                 (cons
79394                                                                  (begin
79395                                                                    (let ((obs_0
79396                                                                           (begin-unsafe
79397                                                                            (expand-context/inner-observer
79398                                                                             (root-expand-context/outer-inner
79399                                                                              body-ctx22_0)))))
79400                                                                      (if obs_0
79401                                                                        (call-expand-observe
79402                                                                         obs_0
79403                                                                         'next)
79404                                                                        (void)))
79405                                                                    (let ((temp144_0
79406                                                                           (if (if name12_0
79407                                                                                 (=
79408                                                                                  pos_0
79409                                                                                  last-i_0)
79410                                                                                 #f)
79411                                                                             (if (expand-context/outer?
79412                                                                                  finish-ctx_0)
79413                                                                               (let ((inner146_0
79414                                                                                      (root-expand-context/outer-inner
79415                                                                                       finish-ctx_0)))
79416                                                                                 (expand-context/outer1.1
79417                                                                                  inner146_0
79418                                                                                  (root-expand-context/outer-post-expansion
79419                                                                                   finish-ctx_0)
79420                                                                                  (root-expand-context/outer-use-site-scopes
79421                                                                                   finish-ctx_0)
79422                                                                                  (root-expand-context/outer-frame-id
79423                                                                                   finish-ctx_0)
79424                                                                                  (expand-context/outer-context
79425                                                                                   finish-ctx_0)
79426                                                                                  (expand-context/outer-env
79427                                                                                   finish-ctx_0)
79428                                                                                  (expand-context/outer-scopes
79429                                                                                   finish-ctx_0)
79430                                                                                  (expand-context/outer-def-ctx-scopes
79431                                                                                   finish-ctx_0)
79432                                                                                  (expand-context/outer-binding-layer
79433                                                                                   finish-ctx_0)
79434                                                                                  (expand-context/outer-reference-records
79435                                                                                   finish-ctx_0)
79436                                                                                  (expand-context/outer-only-immediate?
79437                                                                                   finish-ctx_0)
79438                                                                                  (expand-context/outer-need-eventually-defined
79439                                                                                   finish-ctx_0)
79440                                                                                  (expand-context/outer-current-introduction-scopes
79441                                                                                   finish-ctx_0)
79442                                                                                  (expand-context/outer-current-use-scopes
79443                                                                                   finish-ctx_0)
79444                                                                                  name12_0))
79445                                                                               (raise-argument-error
79446                                                                                'struct-copy
79447                                                                                "expand-context/outer?"
79448                                                                                finish-ctx_0))
79449                                                                             finish-ctx_0)))
79450                                                                      (expand.1
79451                                                                       #f
79452                                                                       #f
79453                                                                       done-body_0
79454                                                                       temp144_0)))
79455                                                                  fold-var_0)))
79456                                                            (values
79457                                                             fold-var_1))))
79458                                                     (for-loop_0
79459                                                      fold-var_1
79460                                                      rest_0
79461                                                      (+ pos_0 1)))))
79462                                               fold-var_0))))))
79463                                      (for-loop_0 null done-bodys30_0 0))))))
79464                             (begin
79465                               (let ((obs_0
79466                                      (begin-unsafe
79467                                       (expand-context/inner-observer
79468                                        (root-expand-context/outer-inner
79469                                         body-ctx22_0)))))
79470                                 (if obs_0
79471                                   (call-expand-observe
79472                                    obs_0
79473                                    'exit-list
79474                                    exp-bodys_0)
79475                                   (void)))
79476                               (reference-record-clear! frame-id23_0)
79477                               exp-bodys_0)))))))))
79478             (if (if (null? val-idss25_0)
79479                   (null? disappeared-transformer-bindings13_0)
79480                   #f)
79481               (begin
79482                 (let ((obs_0
79483                        (begin-unsafe
79484                         (expand-context/inner-observer
79485                          (root-expand-context/outer-inner finish-ctx_0)))))
79486                   (if obs_0 (call-expand-observe obs_0 'block->list) (void)))
79487                 (finish-bodys_0))
79488               (begin
79489                 (let ((obs_0
79490                        (begin-unsafe
79491                         (expand-context/inner-observer
79492                          (root-expand-context/outer-inner finish-ctx_0)))))
79493                   (if obs_0
79494                     (call-expand-observe
79495                      obs_0
79496                      'block->letrec
79497                      val-idss25_0
79498                      val-rhss27_0
79499                      done-bodys30_0)
79500                     (void)))
79501                 (let ((temp151_0 (not stratified?10_0)))
79502                   (let ((exp-s_0
79503                          (let ((temp155_0 (pair? stx-clauses29_0)))
79504                            (expand-and-split-bindings-by-reference.1
79505                             finish-ctx_0
79506                             frame-id23_0
79507                             finish-bodys_0
79508                             temp155_0
79509                             source9_0
79510                             temp151_0
79511                             #f
79512                             val-idss25_0
79513                             val-keyss26_0
79514                             val-rhss27_0
79515                             track-stxs28_0))))
79516                     (if (begin-unsafe
79517                          (expand-context/inner-to-parsed?
79518                           (root-expand-context/outer-inner body-ctx22_0)))
79519                       (list exp-s_0)
79520                       (let ((exp-s_1
79521                              (attach-disappeared-transformer-bindings
79522                               exp-s_0
79523                               disappeared-transformer-bindings13_0)))
79524                         (let ((tracked-exp-s_0
79525                                (begin
79526                                  (letrec*
79527                                   ((for-loop_0
79528                                     (|#%name|
79529                                      for-loop
79530                                      (lambda (exp-s_2 lst_0)
79531                                        (begin
79532                                          (if (pair? lst_0)
79533                                            (let ((form_0 (unsafe-car lst_0)))
79534                                              (let ((rest_0
79535                                                     (unsafe-cdr lst_0)))
79536                                                (let ((exp-s_3
79537                                                       (if form_0
79538                                                         (let ((exp-s_3
79539                                                                (syntax-track-origin$1
79540                                                                 exp-s_2
79541                                                                 form_0)))
79542                                                           (values exp-s_3))
79543                                                         exp-s_2)))
79544                                                  (for-loop_0
79545                                                   exp-s_3
79546                                                   rest_0))))
79547                                            exp-s_2))))))
79548                                   (for-loop_0
79549                                    exp-s_1
79550                                    disappeared-transformer-forms14_0)))))
79551                           (begin
79552                             (let ((obs_0
79553                                    (begin-unsafe
79554                                     (expand-context/inner-observer
79555                                      (root-expand-context/outer-inner
79556                                       finish-ctx_0)))))
79557                               (if obs_0
79558                                 (call-expand-observe
79559                                  obs_0
79560                                  'finish-block
79561                                  (list tracked-exp-s_0))
79562                                 (void)))
79563                             (list tracked-exp-s_0))))))))))))))))
79564(define expand-and-split-bindings-by-reference.1
79565  (|#%name|
79566   expand-and-split-bindings-by-reference
79567   (lambda (ctx34_0
79568            frame-id33_0
79569            get-body37_0
79570            had-stxes?36_0
79571            source35_0
79572            split?32_0
79573            track?38_0
79574            idss46_0
79575            keyss47_0
79576            rhss48_0
79577            track-stxs49_0)
79578     (begin
79579       (let ((phase_0
79580              (begin-unsafe
79581               (expand-context/inner-phase
79582                (root-expand-context/outer-inner ctx34_0)))))
79583         (letrec*
79584          ((loop_0
79585            (|#%name|
79586             loop
79587             (lambda (idss_0
79588                      keyss_0
79589                      rhss_0
79590                      track-stxs_0
79591                      accum-idss_0
79592                      accum-keyss_0
79593                      accum-rhss_0
79594                      accum-track-stxs_0
79595                      track?_0
79596                      get-list?_0)
79597               (begin
79598                 (if (null? idss_0)
79599                   (if (if (null? accum-idss_0) get-list?_0 #f)
79600                     (|#%app| get-body37_0)
79601                     (let ((exp-body_0 (|#%app| get-body37_0)))
79602                       (let ((result-s_0
79603                              (if (begin-unsafe
79604                                   (expand-context/inner-to-parsed?
79605                                    (root-expand-context/outer-inner ctx34_0)))
79606                                (if (null? accum-idss_0)
79607                                  (parsed-let-values17.1
79608                                   (keep-properties-only source35_0)
79609                                   null
79610                                   null
79611                                   exp-body_0)
79612                                  (let ((app_0
79613                                         (keep-properties-only source35_0)))
79614                                    (let ((app_1 (reverse$1 accum-idss_0)))
79615                                      (parsed-letrec-values18.1
79616                                       app_0
79617                                       app_1
79618                                       (reverse$1
79619                                        (map_1346
79620                                         list
79621                                         accum-keyss_0
79622                                         accum-rhss_0))
79623                                       exp-body_0))))
79624                                (let ((temp160_0
79625                                       (let ((app_0
79626                                              (if (null? accum-idss_0)
79627                                                (core-id 'let-values phase_0)
79628                                                (core-id
79629                                                 'letrec-values
79630                                                 phase_0))))
79631                                         (list*
79632                                          app_0
79633                                          (build-clauses
79634                                           accum-idss_0
79635                                           accum-rhss_0
79636                                           accum-track-stxs_0)
79637                                          exp-body_0))))
79638                                  (rebuild.1 track?_0 source35_0 temp160_0)))))
79639                         (if get-list?_0 (list result-s_0) result-s_0))))
79640                   (begin
79641                     (let ((obs_0
79642                            (begin-unsafe
79643                             (expand-context/inner-observer
79644                              (root-expand-context/outer-inner ctx34_0)))))
79645                       (if obs_0 (call-expand-observe obs_0 'next) (void)))
79646                     (let ((ids_0 (car idss_0)))
79647                       (let ((expanded-rhs_0
79648                              (let ((temp161_0 (car rhss_0)))
79649                                (let ((temp162_0
79650                                       (as-named-context ctx34_0 ids_0)))
79651                                  (let ((temp161_1 temp161_0))
79652                                    (expand.1 #f #f temp161_1 temp162_0))))))
79653                         (let ((track-stx_0 (car track-stxs_0)))
79654                           (let ((local-or-forward-references?_0
79655                                  (reference-record-forward-references?
79656                                   frame-id33_0)))
79657                             (begin
79658                               (reference-record-bound!
79659                                frame-id33_0
79660                                (car keyss_0))
79661                               (let ((forward-references?_0
79662                                      (reference-record-forward-references?
79663                                       frame-id33_0)))
79664                                 (if (if (not local-or-forward-references?_0)
79665                                       split?32_0
79666                                       #f)
79667                                   (begin
79668                                     (if (null? accum-idss_0)
79669                                       (void)
79670                                       (error
79671                                        "internal error: accumulated ids not empty"))
79672                                     (let ((exp-rest_0
79673                                            (let ((app_0 (cdr idss_0)))
79674                                              (let ((app_1 (cdr keyss_0)))
79675                                                (let ((app_2 (cdr rhss_0)))
79676                                                  (loop_0
79677                                                   app_0
79678                                                   app_1
79679                                                   app_2
79680                                                   (cdr track-stxs_0)
79681                                                   null
79682                                                   null
79683                                                   null
79684                                                   null
79685                                                   #f
79686                                                   #t))))))
79687                                       (let ((result-s_0
79688                                              (if (begin-unsafe
79689                                                   (expand-context/inner-to-parsed?
79690                                                    (root-expand-context/outer-inner
79691                                                     ctx34_0)))
79692                                                (let ((app_0
79693                                                       (keep-properties-only
79694                                                        source35_0)))
79695                                                  (let ((app_1 (list ids_0)))
79696                                                    (parsed-let-values17.1
79697                                                     app_0
79698                                                     app_1
79699                                                     (list
79700                                                      (list
79701                                                       (car keyss_0)
79702                                                       expanded-rhs_0))
79703                                                     exp-rest_0)))
79704                                                (let ((temp165_0
79705                                                       (let ((app_0
79706                                                              (core-id
79707                                                               'let-values
79708                                                               phase_0)))
79709                                                         (list*
79710                                                          app_0
79711                                                          (list
79712                                                           (build-clause
79713                                                            ids_0
79714                                                            expanded-rhs_0
79715                                                            track-stx_0))
79716                                                          exp-rest_0))))
79717                                                  (rebuild.1
79718                                                   track?_0
79719                                                   source35_0
79720                                                   temp165_0)))))
79721                                         (if get-list?_0
79722                                           (list result-s_0)
79723                                           result-s_0))))
79724                                   (if (if (not forward-references?_0)
79725                                         (if split?32_0
79726                                           split?32_0
79727                                           (null? (cdr idss_0)))
79728                                         #f)
79729                                     (let ((exp-rest_0
79730                                            (let ((app_0 (cdr idss_0)))
79731                                              (let ((app_1 (cdr keyss_0)))
79732                                                (let ((app_2 (cdr rhss_0)))
79733                                                  (loop_0
79734                                                   app_0
79735                                                   app_1
79736                                                   app_2
79737                                                   (cdr track-stxs_0)
79738                                                   null
79739                                                   null
79740                                                   null
79741                                                   null
79742                                                   #f
79743                                                   #t))))))
79744                                       (let ((result-s_0
79745                                              (if (begin-unsafe
79746                                                   (expand-context/inner-to-parsed?
79747                                                    (root-expand-context/outer-inner
79748                                                     ctx34_0)))
79749                                                (let ((app_0
79750                                                       (keep-properties-only
79751                                                        source35_0)))
79752                                                  (let ((app_1
79753                                                         (reverse$1
79754                                                          (cons
79755                                                           ids_0
79756                                                           accum-idss_0))))
79757                                                    (parsed-letrec-values18.1
79758                                                     app_0
79759                                                     app_1
79760                                                     (reverse$1
79761                                                      (let ((app_2
79762                                                             (list
79763                                                              (car keyss_0)
79764                                                              expanded-rhs_0)))
79765                                                        (cons
79766                                                         app_2
79767                                                         (map_1346
79768                                                          list
79769                                                          accum-keyss_0
79770                                                          accum-rhss_0))))
79771                                                     exp-rest_0)))
79772                                                (let ((temp168_0
79773                                                       (let ((app_0
79774                                                              (core-id
79775                                                               'letrec-values
79776                                                               phase_0)))
79777                                                         (list*
79778                                                          app_0
79779                                                          (build-clauses
79780                                                           (cons
79781                                                            ids_0
79782                                                            accum-idss_0)
79783                                                           (cons
79784                                                            expanded-rhs_0
79785                                                            accum-rhss_0)
79786                                                           (cons
79787                                                            track-stx_0
79788                                                            accum-track-stxs_0))
79789                                                          exp-rest_0))))
79790                                                  (rebuild.1
79791                                                   track?_0
79792                                                   source35_0
79793                                                   temp168_0)))))
79794                                         (if get-list?_0
79795                                           (list result-s_0)
79796                                           result-s_0)))
79797                                     (let ((app_0 (cdr idss_0)))
79798                                       (let ((app_1 (cdr keyss_0)))
79799                                         (let ((app_2 (cdr rhss_0)))
79800                                           (let ((app_3 (cdr track-stxs_0)))
79801                                             (let ((app_4
79802                                                    (cons ids_0 accum-idss_0)))
79803                                               (let ((app_5
79804                                                      (cons
79805                                                       (car keyss_0)
79806                                                       accum-keyss_0)))
79807                                                 (loop_0
79808                                                  app_0
79809                                                  app_1
79810                                                  app_2
79811                                                  app_3
79812                                                  app_4
79813                                                  app_5
79814                                                  (cons
79815                                                   expanded-rhs_0
79816                                                   accum-rhss_0)
79817                                                  (cons
79818                                                   track-stx_0
79819                                                   accum-track-stxs_0)
79820                                                  track?_0
79821                                                  get-list?_0))))))))))))))))))))))
79822          (loop_0
79823           idss46_0
79824           keyss47_0
79825           rhss48_0
79826           track-stxs49_0
79827           null
79828           null
79829           null
79830           null
79831           track?38_0
79832           #f)))))))
79833(define build-clauses
79834  (lambda (accum-idss_0 accum-rhss_0 accum-track-stxs_0)
79835    (let ((app_0 (reverse$1 accum-idss_0)))
79836      (let ((app_1 (reverse$1 accum-rhss_0)))
79837        (map_1346 build-clause app_0 app_1 (reverse$1 accum-track-stxs_0))))))
79838(define build-clause
79839  (lambda (ids_0 rhs_0 track-stx_0)
79840    (let ((clause_0 (datum->syntax$1 #f (list ids_0 rhs_0))))
79841      (if track-stx_0 (syntax-track-origin$1 clause_0 track-stx_0) clause_0))))
79842(define no-binds
79843  (lambda (expr_0 s_0 phase_0)
79844    (let ((s-runtime-stx_0 (syntax-shift-phase-level$1 runtime-stx phase_0)))
79845      (let ((app_0 (core-id '|#%app| phase_0)))
79846        (datum->syntax$1
79847         app_0
79848         (let ((app_1 (core-id 'begin phase_0)))
79849           (list
79850            app_1
79851            expr_0
79852            (list (datum->syntax$1 s-runtime-stx_0 'values))))
79853         s_0)))))
79854(define lambda-clause-expander
79855  (lambda (s_0 formals_0 bodys_0 ctx_0)
79856    (let ((sc_0
79857           (if (not
79858                (begin-unsafe
79859                 (expand-context/inner-parsing-expanded?
79860                  (root-expand-context/outer-inner ctx_0))))
79861             (new-scope 'local)
79862             #f)))
79863      (let ((phase_0
79864             (begin-unsafe
79865              (expand-context/inner-phase
79866               (root-expand-context/outer-inner ctx_0)))))
79867        (let ((ids_0 (|#%app| parse-and-flatten-formals formals_0 sc_0 s_0)))
79868          (begin
79869            (let ((temp18_0 "argument name"))
79870              (check-no-duplicate-ids.1
79871               temp18_0
79872               ids_0
79873               phase_0
79874               s_0
79875               unsafe-undefined))
79876            (let ((counter_0
79877                   (begin-unsafe
79878                    (root-expand-context/inner-counter
79879                     (root-expand-context/outer-inner ctx_0)))))
79880              (let ((local-sym_0
79881                     (if (begin-unsafe
79882                          (expand-context/inner-normalize-locals?
79883                           (root-expand-context/outer-inner ctx_0)))
79884                       'arg
79885                       #f)))
79886                (let ((keys_0
79887                       (reverse$1
79888                        (begin
79889                          (letrec*
79890                           ((for-loop_0
79891                             (|#%name|
79892                              for-loop
79893                              (lambda (fold-var_0 lst_0)
79894                                (begin
79895                                  (if (pair? lst_0)
79896                                    (let ((id_0 (unsafe-car lst_0)))
79897                                      (let ((rest_0 (unsafe-cdr lst_0)))
79898                                        (let ((fold-var_1
79899                                               (let ((fold-var_1
79900                                                      (cons
79901                                                       (if sc_0
79902                                                         (add-local-binding!.1
79903                                                          #f
79904                                                          s_0
79905                                                          local-sym_0
79906                                                          id_0
79907                                                          phase_0
79908                                                          counter_0)
79909                                                         (existing-binding-key
79910                                                          id_0
79911                                                          (begin-unsafe
79912                                                           (expand-context/inner-phase
79913                                                            (root-expand-context/outer-inner
79914                                                             ctx_0)))))
79915                                                       fold-var_0)))
79916                                                 (values fold-var_1))))
79917                                          (for-loop_0 fold-var_1 rest_0))))
79918                                    fold-var_0))))))
79919                           (for-loop_0 null ids_0))))))
79920                  (let ((body-env_0
79921                         (begin
79922                           (letrec*
79923                            ((for-loop_0
79924                              (|#%name|
79925                               for-loop
79926                               (lambda (env_0 lst_0 lst_1)
79927                                 (begin
79928                                   (if (if (pair? lst_0) (pair? lst_1) #f)
79929                                     (let ((key_0 (unsafe-car lst_0)))
79930                                       (let ((rest_0 (unsafe-cdr lst_0)))
79931                                         (let ((id_0 (unsafe-car lst_1)))
79932                                           (let ((rest_1 (unsafe-cdr lst_1)))
79933                                             (let ((val_0
79934                                                    (local-variable1.1 id_0)))
79935                                               (let ((env_1
79936                                                      (let ((env_1
79937                                                             (begin-unsafe
79938                                                              (hash-set
79939                                                               env_0
79940                                                               key_0
79941                                                               val_0))))
79942                                                        (values env_1))))
79943                                                 (for-loop_0
79944                                                  env_1
79945                                                  rest_0
79946                                                  rest_1)))))))
79947                                     env_0))))))
79948                            (for-loop_0
79949                             (begin-unsafe (expand-context/outer-env ctx_0))
79950                             keys_0
79951                             ids_0)))))
79952                    (let ((sc-formals_0
79953                           (if sc_0 (add-scope formals_0 sc_0) formals_0)))
79954                      (let ((sc-bodys_0
79955                             (if sc_0
79956                               (reverse$1
79957                                (begin
79958                                  (letrec*
79959                                   ((for-loop_0
79960                                     (|#%name|
79961                                      for-loop
79962                                      (lambda (fold-var_0 lst_0)
79963                                        (begin
79964                                          (if (pair? lst_0)
79965                                            (let ((body_0 (unsafe-car lst_0)))
79966                                              (let ((rest_0
79967                                                     (unsafe-cdr lst_0)))
79968                                                (let ((fold-var_1
79969                                                       (let ((fold-var_1
79970                                                              (cons
79971                                                               (add-scope
79972                                                                body_0
79973                                                                sc_0)
79974                                                               fold-var_0)))
79975                                                         (values fold-var_1))))
79976                                                  (for-loop_0
79977                                                   fold-var_1
79978                                                   rest_0))))
79979                                            fold-var_0))))))
79980                                   (for-loop_0 null bodys_0))))
79981                               bodys_0)))
79982                        (begin
79983                          (let ((obs_0
79984                                 (begin-unsafe
79985                                  (expand-context/inner-observer
79986                                   (root-expand-context/outer-inner ctx_0)))))
79987                            (if obs_0
79988                              (call-expand-observe
79989                               obs_0
79990                               'lambda-renames
79991                               sc-formals_0
79992                               sc-bodys_0)
79993                              (void)))
79994                          (let ((body-ctx_0
79995                                 (if (expand-context/outer? ctx_0)
79996                                   (let ((scopes25_0
79997                                          (if sc_0
79998                                            (cons
79999                                             sc_0
80000                                             (begin-unsafe
80001                                              (expand-context/outer-scopes
80002                                               ctx_0)))
80003                                            (begin-unsafe
80004                                             (expand-context/outer-scopes
80005                                              ctx_0)))))
80006                                     (let ((binding-layer26_0
80007                                            (if sc_0
80008                                              (increment-binding-layer
80009                                               ids_0
80010                                               ctx_0
80011                                               sc_0)
80012                                              (begin-unsafe
80013                                               (expand-context/outer-binding-layer
80014                                                ctx_0)))))
80015                                       (let ((inner28_0
80016                                              (root-expand-context/outer-inner
80017                                               ctx_0)))
80018                                         (let ((binding-layer26_1
80019                                                binding-layer26_0)
80020                                               (scopes25_1 scopes25_0))
80021                                           (expand-context/outer1.1
80022                                            inner28_0
80023                                            (root-expand-context/outer-post-expansion
80024                                             ctx_0)
80025                                            (root-expand-context/outer-use-site-scopes
80026                                             ctx_0)
80027                                            #f
80028                                            (expand-context/outer-context
80029                                             ctx_0)
80030                                            body-env_0
80031                                            scopes25_1
80032                                            (expand-context/outer-def-ctx-scopes
80033                                             ctx_0)
80034                                            binding-layer26_1
80035                                            (expand-context/outer-reference-records
80036                                             ctx_0)
80037                                            (expand-context/outer-only-immediate?
80038                                             ctx_0)
80039                                            (expand-context/outer-need-eventually-defined
80040                                             ctx_0)
80041                                            (expand-context/outer-current-introduction-scopes
80042                                             ctx_0)
80043                                            (expand-context/outer-current-use-scopes
80044                                             ctx_0)
80045                                            (expand-context/outer-name
80046                                             ctx_0))))))
80047                                   (raise-argument-error
80048                                    'struct-copy
80049                                    "expand-context/outer?"
80050                                    ctx_0))))
80051                            (let ((exp-body_0
80052                                   (if sc_0
80053                                     (let ((temp31_0
80054                                            (keep-as-needed.1
80055                                             #f
80056                                             #t
80057                                             #f
80058                                             ctx_0
80059                                             s_0)))
80060                                       (expand-body.1
80061                                        temp31_0
80062                                        #f
80063                                        sc-bodys_0
80064                                        body-ctx_0))
80065                                     (reverse$1
80066                                      (begin
80067                                        (letrec*
80068                                         ((for-loop_0
80069                                           (|#%name|
80070                                            for-loop
80071                                            (lambda (fold-var_0 lst_0)
80072                                              (begin
80073                                                (if (pair? lst_0)
80074                                                  (let ((sc-body_0
80075                                                         (unsafe-car lst_0)))
80076                                                    (let ((rest_0
80077                                                           (unsafe-cdr lst_0)))
80078                                                      (let ((fold-var_1
80079                                                             (let ((fold-var_1
80080                                                                    (cons
80081                                                                     (expand.1
80082                                                                      #f
80083                                                                      #f
80084                                                                      sc-body_0
80085                                                                      body-ctx_0)
80086                                                                     fold-var_0)))
80087                                                               (values
80088                                                                fold-var_1))))
80089                                                        (for-loop_0
80090                                                         fold-var_1
80091                                                         rest_0))))
80092                                                  fold-var_0))))))
80093                                         (for-loop_0 null sc-bodys_0)))))))
80094                              (values
80095                               (if (begin-unsafe
80096                                    (expand-context/inner-to-parsed?
80097                                     (root-expand-context/outer-inner ctx_0)))
80098                                 (|#%app|
80099                                  unflatten-like-formals
80100                                  keys_0
80101                                  formals_0)
80102                                 sc-formals_0)
80103                               exp-body_0))))))))))))))))
80104(define effect_2301
80105  (begin
80106    (void
80107     (add-core-form!*
80108      'lambda
80109      (lambda (s_0 ctx_0)
80110        (begin
80111          (let ((obs_0
80112                 (begin-unsafe
80113                  (expand-context/inner-observer
80114                   (root-expand-context/outer-inner ctx_0)))))
80115            (if obs_0 (call-expand-observe obs_0 'prim-lambda s_0) (void)))
80116          (call-with-values
80117           (lambda ()
80118             (call-with-values
80119              (lambda ()
80120                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
80121                  (if (pair? s_1)
80122                    (let ((lambda40_0 (let ((s_2 (car s_1))) s_2)))
80123                      (call-with-values
80124                       (lambda ()
80125                         (let ((s_2 (cdr s_1)))
80126                           (let ((s_3
80127                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
80128                             (if (pair? s_3)
80129                               (let ((formals43_0 (let ((s_4 (car s_3))) s_4)))
80130                                 (let ((body44_0
80131                                        (let ((s_4 (cdr s_3)))
80132                                          (let ((s_5
80133                                                 (if (syntax?$1 s_4)
80134                                                   (syntax-e$1 s_4)
80135                                                   s_4)))
80136                                            (let ((flat-s_0
80137                                                   (to-syntax-list.1 s_5)))
80138                                              (if (not flat-s_0)
80139                                                (raise-syntax-error$1
80140                                                 #f
80141                                                 "bad syntax"
80142                                                 s_0)
80143                                                (if (null? flat-s_0)
80144                                                  (raise-syntax-error$1
80145                                                   #f
80146                                                   "bad syntax"
80147                                                   s_0)
80148                                                  flat-s_0)))))))
80149                                   (let ((formals43_1 formals43_0))
80150                                     (values formals43_1 body44_0))))
80151                               (raise-syntax-error$1 #f "bad syntax" s_0)))))
80152                       (case-lambda
80153                        ((formals41_0 body42_0)
80154                         (let ((lambda40_1 lambda40_0))
80155                           (values lambda40_1 formals41_0 body42_0)))
80156                        (args (raise-binding-result-arity-error 2 args)))))
80157                    (raise-syntax-error$1 #f "bad syntax" s_0))))
80158              (case-lambda
80159               ((lambda37_0 formals38_0 body39_0)
80160                (values #t lambda37_0 formals38_0 body39_0))
80161               (args (raise-binding-result-arity-error 3 args)))))
80162           (case-lambda
80163            ((ok?_0 lambda37_0 formals38_0 body39_0)
80164             (let ((rebuild-s_0 (keep-as-needed.1 #f #f #t ctx_0 s_0)))
80165               (call-with-values
80166                (lambda ()
80167                  (lambda-clause-expander s_0 formals38_0 body39_0 ctx_0))
80168                (case-lambda
80169                 ((formals_0 body_0)
80170                  (if (begin-unsafe
80171                       (expand-context/inner-to-parsed?
80172                        (root-expand-context/outer-inner ctx_0)))
80173                    (parsed-lambda5.1 rebuild-s_0 formals_0 body_0)
80174                    (let ((temp49_0 (list* lambda37_0 formals_0 body_0)))
80175                      (rebuild.1 #t rebuild-s_0 temp49_0))))
80176                 (args (raise-binding-result-arity-error 2 args))))))
80177            (args (raise-binding-result-arity-error 4 args))))))))
80178    (void)))
80179(define effect_1841
80180  (begin
80181    (void
80182     (add-core-form!*
8018380184      (lambda (s_0)
80185        (call-with-values
80186         (lambda ()
80187           (call-with-values
80188            (lambda ()
80189              (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
80190                (if (pair? s_1)
80191                  (let ((lam-id53_0 (let ((s_2 (car s_1))) s_2)))
80192                    (call-with-values
80193                     (lambda ()
80194                       (let ((s_2 (cdr s_1)))
80195                         (let ((s_3 (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
80196                           (if (pair? s_3)
80197                             (let ((formals56_0 (let ((s_4 (car s_3))) s_4)))
80198                               (let ((_0
80199                                      (let ((s_4 (cdr s_3)))
80200                                        (let ((s_5
80201                                               (if (syntax?$1 s_4)
80202                                                 (syntax-e$1 s_4)
80203                                                 s_4)))
80204                                          (let ((flat-s_0
80205                                                 (to-syntax-list.1 s_5)))
80206                                            (if (not flat-s_0)
80207                                              (raise-syntax-error$1
80208                                               #f
80209                                               "bad syntax"
80210                                               s_0)
80211                                              (if (null? flat-s_0)
80212                                                (raise-syntax-error$1
80213                                                 #f
80214                                                 "bad syntax"
80215                                                 s_0)
80216                                                flat-s_0)))))))
80217                                 (let ((formals56_1 formals56_0))
80218                                   (values formals56_1 _0))))
80219                             (raise-syntax-error$1 #f "bad syntax" s_0)))))
80220                     (case-lambda
80221                      ((formals54_0 _0)
80222                       (let ((lam-id53_1 lam-id53_0))
80223                         (values lam-id53_1 formals54_0 _0)))
80224                      (args (raise-binding-result-arity-error 2 args)))))
80225                  (raise-syntax-error$1 #f "bad syntax" s_0))))
80226            (case-lambda
80227             ((lam-id50_0 formals51_0 _0)
80228              (values #t lam-id50_0 formals51_0 _0))
80229             (args (raise-binding-result-arity-error 3 args)))))
80230         (case-lambda
80231          ((ok?_0 lam-id50_0 formals51_0 _0)
80232           (let ((ids_0
80233                  (|#%app| parse-and-flatten-formals formals51_0 #f s_0)))
80234             (let ((ctx_0 (get-current-expand-context.1 #t 'unexpected)))
80235               (let ((phase_0
80236                      (if ctx_0
80237                        (begin-unsafe
80238                         (expand-context/inner-phase
80239                          (root-expand-context/outer-inner ctx_0)))
80240                        0)))
80241                 (begin
80242                   (let ((temp61_0 "argument name"))
80243                     (check-no-duplicate-ids.1
80244                      temp61_0
80245                      ids_0
80246                      phase_0
80247                      s_0
80248                      unsafe-undefined))
80249                   (datum->syntax$1
80250                    s_0
80251                    (let ((app_0
80252                           (datum->syntax$1
80253                            (syntax-shift-phase-level$1 core-stx phase_0)
80254                            'lambda
80255                            lam-id50_0
80256                            lam-id50_0)))
80257                      (cons app_0 (cdr (syntax-e$1 s_0))))
80258                    s_0
80259                    s_0))))))
80260          (args (raise-binding-result-arity-error 4 args)))))))
80261    (void)))
80262(define effect_1694
80263  (begin
80264    (void
80265     (add-core-form!*
80266      'case-lambda
80267      (lambda (s_0 ctx_0)
80268        (begin
80269          (let ((obs_0
80270                 (begin-unsafe
80271                  (expand-context/inner-observer
80272                   (root-expand-context/outer-inner ctx_0)))))
80273            (if obs_0
80274              (call-expand-observe obs_0 'prim-case-lambda s_0)
80275              (void)))
80276          (call-with-values
80277           (lambda ()
80278             (call-with-values
80279              (lambda ()
80280                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
80281                  (if (pair? s_1)
80282                    (let ((case-lambda66_0 (let ((s_2 (car s_1))) s_2)))
80283                      (call-with-values
80284                       (lambda ()
80285                         (let ((s_2 (cdr s_1)))
80286                           (let ((s_3
80287                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
80288                             (let ((flat-s_0 (to-syntax-list.1 s_3)))
80289                               (if (not flat-s_0)
80290                                 (raise-syntax-error$1 #f "bad syntax" s_0)
80291                                 (call-with-values
80292                                  (lambda ()
80293                                    (begin
80294                                      (letrec*
80295                                       ((for-loop_0
80296                                         (|#%name|
80297                                          for-loop
80298                                          (lambda (formals_0 body_0 lst_0)
80299                                            (begin
80300                                              (if (pair? lst_0)
80301                                                (let ((s_4 (unsafe-car lst_0)))
80302                                                  (let ((rest_0
80303                                                         (unsafe-cdr lst_0)))
80304                                                    (call-with-values
80305                                                     (lambda ()
80306                                                       (call-with-values
80307                                                        (lambda ()
80308                                                          (call-with-values
80309                                                           (lambda ()
80310                                                             (let ((s_5
80311                                                                    (if (syntax?$1
80312                                                                         s_4)
80313                                                                      (syntax-e$1
80314                                                                       s_4)
80315                                                                      s_4)))
80316                                                               (if (pair? s_5)
80317                                                                 (let ((formals69_0
80318                                                                        (let ((s_6
80319                                                                               (car
80320                                                                                s_5)))
80321                                                                          s_6)))
80322                                                                   (let ((body70_0
80323                                                                          (let ((s_6
80324                                                                                 (cdr
80325                                                                                  s_5)))
80326                                                                            (let ((s_7
80327                                                                                   (if (syntax?$1
80328                                                                                        s_6)
80329                                                                                     (syntax-e$1
80330                                                                                      s_6)
80331                                                                                     s_6)))
80332                                                                              (let ((flat-s_1
80333                                                                                     (to-syntax-list.1
80334                                                                                      s_7)))
80335                                                                                (if (not
80336                                                                                     flat-s_1)
80337                                                                                  (raise-syntax-error$1
80338                                                                                   #f
80339                                                                                   "bad syntax"
80340                                                                                   s_0)
80341                                                                                  (if (null?
80342                                                                                       flat-s_1)
80343                                                                                    (raise-syntax-error$1
80344                                                                                     #f
80345                                                                                     "bad syntax"
80346                                                                                     s_0)
80347                                                                                    flat-s_1)))))))
80348                                                                     (let ((formals69_1
80349                                                                            formals69_0))
80350                                                                       (values
80351                                                                        formals69_1
80352                                                                        body70_0))))
80353                                                                 (raise-syntax-error$1
80354                                                                  #f
80355                                                                  "bad syntax"
80356                                                                  s_0))))
80357                                                           (case-lambda
80358                                                            ((formals75_0
80359                                                              body76_0)
80360                                                             (values
80361                                                              (cons
80362                                                               formals75_0
80363                                                               formals_0)
80364                                                              (cons
80365                                                               body76_0
80366                                                               body_0)))
80367                                                            (args
80368                                                             (raise-binding-result-arity-error
80369                                                              2
80370                                                              args)))))
80371                                                        (case-lambda
80372                                                         ((formals_1 body_1)
80373                                                          (values
80374                                                           formals_1
80375                                                           body_1))
80376                                                         (args
80377                                                          (raise-binding-result-arity-error
80378                                                           2
80379                                                           args)))))
80380                                                     (case-lambda
80381                                                      ((formals_1 body_1)
80382                                                       (for-loop_0
80383                                                        formals_1
80384                                                        body_1
80385                                                        rest_0))
80386                                                      (args
80387                                                       (raise-binding-result-arity-error
80388                                                        2
80389                                                        args))))))
80390                                                (values formals_0 body_0)))))))
80391                                       (for-loop_0 null null flat-s_0))))
80392                                  (case-lambda
80393                                   ((formals_0 body_0)
80394                                    (let ((app_0 (reverse$1 formals_0)))
80395                                      (values app_0 (reverse$1 body_0))))
80396                                   (args
80397                                    (raise-binding-result-arity-error
80398                                     2
80399                                     args)))))))))
80400                       (case-lambda
80401                        ((formals67_0 body68_0)
80402                         (let ((case-lambda66_1 case-lambda66_0))
80403                           (values case-lambda66_1 formals67_0 body68_0)))
80404                        (args (raise-binding-result-arity-error 2 args)))))
80405                    (raise-syntax-error$1 #f "bad syntax" s_0))))
80406              (case-lambda
80407               ((case-lambda63_0 formals64_0 body65_0)
80408                (values #t case-lambda63_0 formals64_0 body65_0))
80409               (args (raise-binding-result-arity-error 3 args)))))
80410           (case-lambda
80411            ((ok?_0 case-lambda63_0 formals64_0 body65_0)
80412             (call-with-values
80413              (lambda ()
80414                (call-with-values
80415                 (lambda ()
80416                   (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
80417                     (if (pair? s_1)
80418                       (let ((case-lambda73_0 (let ((s_2 (car s_1))) s_2)))
80419                         (let ((clause74_0
80420                                (let ((s_2 (cdr s_1)))
80421                                  (let ((s_3
80422                                         (if (syntax?$1 s_2)
80423                                           (syntax-e$1 s_2)
80424                                           s_2)))
80425                                    (let ((flat-s_0 (to-syntax-list.1 s_3)))
80426                                      (if (not flat-s_0)
80427                                        (raise-syntax-error$1
80428                                         #f
80429                                         "bad syntax"
80430                                         s_0)
80431                                        flat-s_0))))))
80432                           (let ((case-lambda73_1 case-lambda73_0))
80433                             (values case-lambda73_1 clause74_0))))
80434                       (raise-syntax-error$1 #f "bad syntax" s_0))))
80435                 (case-lambda
80436                  ((case-lambda71_0 clause72_0)
80437                   (values #t case-lambda71_0 clause72_0))
80438                  (args (raise-binding-result-arity-error 2 args)))))
80439              (case-lambda
80440               ((ok?_1 case-lambda71_0 clause72_0)
80441                (let ((rebuild-s_0 (keep-as-needed.1 #f #f #t ctx_0 s_0)))
80442                  (let ((clauses_0
80443                         (reverse$1
80444                          (begin
80445                            (letrec*
80446                             ((for-loop_0
80447                               (|#%name|
80448                                for-loop
80449                                (lambda (fold-var_0 lst_0 lst_1 lst_2)
80450                                  (begin
80451                                    (if (if (pair? lst_0)
80452                                          (if (pair? lst_1) (pair? lst_2) #f)
80453                                          #f)
80454                                      (let ((formals_0 (unsafe-car lst_0)))
80455                                        (let ((rest_0 (unsafe-cdr lst_0)))
80456                                          (let ((body_0 (unsafe-car lst_1)))
80457                                            (let ((rest_1 (unsafe-cdr lst_1)))
80458                                              (let ((clause_0
80459                                                     (unsafe-car lst_2)))
80460                                                (let ((rest_2
80461                                                       (unsafe-cdr lst_2)))
80462                                                  (let ((fold-var_1
80463                                                         (let ((fold-var_1
80464                                                                (cons
80465                                                                 (begin
80466                                                                   (let ((obs_0
80467                                                                          (begin-unsafe
80468                                                                           (expand-context/inner-observer
80469                                                                            (root-expand-context/outer-inner
80470                                                                             ctx_0)))))
80471                                                                     (if obs_0
80472                                                                       (call-expand-observe
80473                                                                        obs_0
80474                                                                        'next)
80475                                                                       (void)))
80476                                                                   (let ((rebuild-clause_0
80477                                                                          (keep-as-needed.1
80478                                                                           #f
80479                                                                           #f
80480                                                                           #f
80481                                                                           ctx_0
80482                                                                           clause_0)))
80483                                                                     (call-with-values
80484                                                                      (lambda ()
80485                                                                        (lambda-clause-expander
80486                                                                         s_0
80487                                                                         formals_0
80488                                                                         body_0
80489                                                                         ctx_0))
80490                                                                      (case-lambda
80491                                                                       ((exp-formals_0
80492                                                                         exp-body_0)
80493                                                                        (if (begin-unsafe
80494                                                                             (expand-context/inner-to-parsed?
80495                                                                              (root-expand-context/outer-inner
80496                                                                               ctx_0)))
80497                                                                          (list
80498                                                                           exp-formals_0
80499                                                                           exp-body_0)
80500                                                                          (let ((temp83_0
80501                                                                                 (list*
80502                                                                                  exp-formals_0
80503                                                                                  exp-body_0)))
80504                                                                            (rebuild.1
80505                                                                             #t
80506                                                                             rebuild-clause_0
80507                                                                             temp83_0))))
80508                                                                       (args
80509                                                                        (raise-binding-result-arity-error
80510                                                                         2
80511                                                                         args))))))
80512                                                                 fold-var_0)))
80513                                                           (values
80514                                                            fold-var_1))))
80515                                                    (for-loop_0
80516                                                     fold-var_1
80517                                                     rest_0
80518                                                     rest_1
80519                                                     rest_2))))))))
80520                                      fold-var_0))))))
80521                             (for-loop_0
80522                              null
80523                              formals64_0
80524                              body65_0
80525                              clause72_0))))))
80526                    (if (begin-unsafe
80527                         (expand-context/inner-to-parsed?
80528                          (root-expand-context/outer-inner ctx_0)))
80529                      (parsed-case-lambda6.1 rebuild-s_0 clauses_0)
80530                      (let ((temp85_0 (list* case-lambda63_0 clauses_0)))
80531                        (rebuild.1 #t rebuild-s_0 temp85_0))))))
80532               (args (raise-binding-result-arity-error 3 args)))))
80533            (args (raise-binding-result-arity-error 4 args))))))))
80534    (void)))
80535(define parse-and-flatten-formals
80536  (lambda (all-formals_0 sc_0 s_0)
80537    (letrec*
80538     ((loop_0
80539       (|#%name|
80540        loop
80541        (lambda (formals_0)
80542          (begin
80543            (if (identifier? formals_0)
80544              (list (if sc_0 (add-scope formals_0 sc_0) formals_0))
80545              (if (syntax?$1 formals_0)
80546                (let ((p_0 (syntax-e$1 formals_0)))
80547                  (if (pair? p_0)
80548                    (loop_0 p_0)
80549                    (if (null? p_0)
80550                      null
80551                      (raise-syntax-error$1 #f "not an identifier" s_0 p_0))))
80552                (if (pair? formals_0)
80553                  (begin
80554                    (if (identifier? (car formals_0))
80555                      (void)
80556                      (raise-syntax-error$1
80557                       #f
80558                       "not an identifier"
80559                       s_0
80560                       (car formals_0)))
80561                    (let ((app_0
80562                           (if sc_0
80563                             (add-scope (car formals_0) sc_0)
80564                             (car formals_0))))
80565                      (cons app_0 (loop_0 (cdr formals_0)))))
80566                  (if (null? formals_0)
80567                    null
80568                    (raise-syntax-error$1
80569                     "bad argument sequence"
80570                     s_0
80571                     all-formals_0))))))))))
80572     (loop_0 all-formals_0))))
80573(define unflatten-like-formals
80574  (lambda (keys_0 formals_0)
80575    (letrec*
80576     ((loop_0
80577       (|#%name|
80578        loop
80579        (lambda (keys_1 formals_1)
80580          (begin
80581            (if (null? formals_1)
80582              null
80583              (if (pair? formals_1)
80584                (let ((app_0 (car keys_1)))
80585                  (cons
80586                   app_0
80587                   (let ((app_1 (cdr keys_1)))
80588                     (loop_0 app_1 (cdr formals_1)))))
80589                (if (syntax?$1 formals_1)
80590                  (loop_0 keys_1 (syntax-e$1 formals_1))
80591                  (car keys_1)))))))))
80592     (loop_0 keys_0 formals_0))))
80593(define make-let-values-form.1
80594  (|#%name|
80595   make-let-values-form
80596   (lambda (log-tag1_0 rec?3_0 split-by-reference?4_0 syntaxes?2_0)
80597     (begin
80598       (lambda (s_0 ctx_0)
80599         (begin
80600           (let ((obs_0
80601                  (begin-unsafe
80602                   (expand-context/inner-observer
80603                    (root-expand-context/outer-inner ctx_0)))))
80604             (if obs_0 (call-expand-observe obs_0 log-tag1_0 s_0) (void)))
80605           (call-with-values
80606            (lambda ()
80607              (if (if syntaxes?2_0 #t #f)
80608                (call-with-values
80609                 (lambda ()
80610                   (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
80611                     (if (pair? s_1)
80612                       (let ((letrec-syntaxes+values92_0
80613                              (let ((s_2 (car s_1))) s_2)))
80614                         (call-with-values
80615                          (lambda ()
80616                            (let ((s_2 (cdr s_1)))
80617                              (let ((s_3
80618                                     (if (syntax?$1 s_2)
80619                                       (syntax-e$1 s_2)
80620                                       s_2)))
80621                                (if (pair? s_3)
80622                                  (call-with-values
80623                                   (lambda ()
80624                                     (let ((s_4 (car s_3)))
80625                                       (let ((s_5
80626                                              (if (syntax?$1 s_4)
80627                                                (syntax-e$1 s_4)
80628                                                s_4)))
80629                                         (let ((flat-s_0
80630                                                (to-syntax-list.1 s_5)))
80631                                           (if (not flat-s_0)
80632                                             (raise-syntax-error$1
80633                                              #f
80634                                              "bad syntax"
80635                                              s_0)
80636                                             (call-with-values
80637                                              (lambda ()
80638                                                (begin
80639                                                  (letrec*
80640                                                   ((for-loop_0
80641                                                     (|#%name|
80642                                                      for-loop
80643                                                      (lambda (id:trans_0
80644                                                               trans-rhs_0
80645                                                               lst_0)
80646                                                        (begin
80647                                                          (if (pair? lst_0)
80648                                                            (let ((s_6
80649                                                                   (unsafe-car
80650                                                                    lst_0)))
80651                                                              (let ((rest_0
80652                                                                     (unsafe-cdr
80653                                                                      lst_0)))
80654                                                                (call-with-values
80655                                                                 (lambda ()
80656                                                                   (call-with-values
80657                                                                    (lambda ()
80658                                                                      (call-with-values
80659                                                                       (lambda ()
80660                                                                         (let ((s_7
80661                                                                                (if (syntax?$1
80662                                                                                     s_6)
80663                                                                                  (syntax-e$1
80664                                                                                   s_6)
80665                                                                                  s_6)))
80666                                                                           (if (pair?
80667                                                                                s_7)
80668                                                                             (let ((id:trans103_0
80669                                                                                    (let ((s_8
80670                                                                                           (car
80671                                                                                            s_7)))
80672                                                                                      (let ((s_9
80673                                                                                             (if (syntax?$1
80674                                                                                                  s_8)
80675                                                                                               (syntax-e$1
80676                                                                                                s_8)
80677                                                                                               s_8)))
80678                                                                                        (let ((flat-s_1
80679                                                                                               (to-syntax-list.1
80680                                                                                                s_9)))
80681                                                                                          (if (not
80682                                                                                               flat-s_1)
80683                                                                                            (raise-syntax-error$1
80684                                                                                             #f
80685                                                                                             "bad syntax"
80686                                                                                             s_0)
80687                                                                                            (let ((id:trans_1
80688                                                                                                   (begin
80689                                                                                                     (letrec*
80690                                                                                                      ((for-loop_1
80691                                                                                                        (|#%name|
80692                                                                                                         for-loop
80693                                                                                                         (lambda (id:trans_1
80694                                                                                                                  lst_1)
80695                                                                                                           (begin
80696                                                                                                             (if (pair?
80697                                                                                                                  lst_1)
80698                                                                                                               (let ((s_10
80699                                                                                                                      (unsafe-car
80700                                                                                                                       lst_1)))
80701                                                                                                                 (let ((rest_1
80702                                                                                                                        (unsafe-cdr
80703                                                                                                                         lst_1)))
80704                                                                                                                   (let ((id:trans_2
80705                                                                                                                          (let ((id:trans_2
80706                                                                                                                                 (let ((id:trans131_0
80707                                                                                                                                        (if (let ((or-part_0
80708                                                                                                                                                   (if (syntax?$1
80709                                                                                                                                                        s_10)
80710                                                                                                                                                     (symbol?
80711                                                                                                                                                      (syntax-e$1
80712                                                                                                                                                       s_10))
80713                                                                                                                                                     #f)))
80714                                                                                                                                              (if or-part_0
80715                                                                                                                                                or-part_0
80716                                                                                                                                                (symbol?
80717                                                                                                                                                 s_10)))
80718                                                                                                                                          s_10
80719                                                                                                                                          (raise-syntax-error$1
80720                                                                                                                                           #f
80721                                                                                                                                           "not an identifier"
80722                                                                                                                                           s_0
80723                                                                                                                                           s_10))))
80724                                                                                                                                   (cons
80725                                                                                                                                    id:trans131_0
80726                                                                                                                                    id:trans_1))))
80727                                                                                                                            (values
80728                                                                                                                             id:trans_2))))
80729                                                                                                                     (for-loop_1
80730                                                                                                                      id:trans_2
80731                                                                                                                      rest_1))))
80732                                                                                                               id:trans_1))))))
80733                                                                                                      (for-loop_1
80734                                                                                                       null
80735                                                                                                       flat-s_1)))))
80736                                                                                              (reverse$1
80737                                                                                               id:trans_1))))))))
80738                                                                               (let ((trans-rhs104_0
80739                                                                                      (let ((s_8
80740                                                                                             (cdr
80741                                                                                              s_7)))
80742                                                                                        (let ((s_9
80743                                                                                               (if (syntax?$1
80744                                                                                                    s_8)
80745                                                                                                 (syntax-e$1
80746                                                                                                  s_8)
80747                                                                                                 s_8)))
80748                                                                                          (if (pair?
80749                                                                                               s_9)
80750                                                                                            (let ((trans-rhs105_0
80751                                                                                                   (let ((s_10
80752                                                                                                          (car
80753                                                                                                           s_9)))
80754                                                                                                     s_10)))
80755                                                                                              (call-with-values
80756                                                                                               (lambda ()
80757                                                                                                 (let ((s_10
80758                                                                                                        (cdr
80759                                                                                                         s_9)))
80760                                                                                                   (let ((s_11
80761                                                                                                          (if (syntax?$1
80762                                                                                                               s_10)
80763                                                                                                            (syntax-e$1
80764                                                                                                             s_10)
80765                                                                                                            s_10)))
80766                                                                                                     (if (null?
80767                                                                                                          s_11)
80768                                                                                                       (values)
80769                                                                                                       (raise-syntax-error$1
80770                                                                                                        #f
80771                                                                                                        "bad syntax"
80772                                                                                                        s_0)))))
80773                                                                                               (case-lambda
80774                                                                                                (()
80775                                                                                                 (let ((trans-rhs105_1
80776                                                                                                        trans-rhs105_0))
80777                                                                                                   (values
80778                                                                                                    trans-rhs105_1)))
80779                                                                                                (args
80780                                                                                                 (raise-binding-result-arity-error
80781                                                                                                  0
80782                                                                                                  args)))))
80783                                                                                            (raise-syntax-error$1
80784                                                                                             #f
80785                                                                                             "bad syntax"
80786                                                                                             s_0))))))
80787                                                                                 (let ((id:trans103_1
80788                                                                                        id:trans103_0))
80789                                                                                   (values
80790                                                                                    id:trans103_1
80791                                                                                    trans-rhs104_0))))
80792                                                                             (raise-syntax-error$1
80793                                                                              #f
80794                                                                              "bad syntax"
80795                                                                              s_0))))
80796                                                                       (case-lambda
80797                                                                        ((id:trans129_0
80798                                                                          trans-rhs130_0)
80799                                                                         (values
80800                                                                          (cons
80801                                                                           id:trans129_0
80802                                                                           id:trans_0)
80803                                                                          (cons
80804                                                                           trans-rhs130_0
80805                                                                           trans-rhs_0)))
80806                                                                        (args
80807                                                                         (raise-binding-result-arity-error
80808                                                                          2
80809                                                                          args)))))
80810                                                                    (case-lambda
80811                                                                     ((id:trans_1
80812                                                                       trans-rhs_1)
80813                                                                      (values
80814                                                                       id:trans_1
80815                                                                       trans-rhs_1))
80816                                                                     (args
80817                                                                      (raise-binding-result-arity-error
80818                                                                       2
80819                                                                       args)))))
80820                                                                 (case-lambda
80821                                                                  ((id:trans_1
80822                                                                    trans-rhs_1)
80823                                                                   (for-loop_0
80824                                                                    id:trans_1
80825                                                                    trans-rhs_1
80826                                                                    rest_0))
80827                                                                  (args
80828                                                                   (raise-binding-result-arity-error
80829                                                                    2
80830                                                                    args))))))
80831                                                            (values
80832                                                             id:trans_0
80833                                                             trans-rhs_0)))))))
80834                                                   (for-loop_0
80835                                                    null
80836                                                    null
80837                                                    flat-s_0))))
80838                                              (case-lambda
80839                                               ((id:trans_0 trans-rhs_0)
80840                                                (let ((app_0
80841                                                       (reverse$1 id:trans_0)))
80842                                                  (values
80843                                                   app_0
80844                                                   (reverse$1 trans-rhs_0))))
80845                                               (args
80846                                                (raise-binding-result-arity-error
80847                                                 2
80848                                                 args)))))))))
80849                                   (case-lambda
80850                                    ((id:trans98_0 trans-rhs99_0)
80851                                     (call-with-values
80852                                      (lambda ()
80853                                        (let ((s_4 (cdr s_3)))
80854                                          (let ((s_5
80855                                                 (if (syntax?$1 s_4)
80856                                                   (syntax-e$1 s_4)
80857                                                   s_4)))
80858                                            (if (pair? s_5)
80859                                              (call-with-values
80860                                               (lambda ()
80861                                                 (let ((s_6 (car s_5)))
80862                                                   (let ((s_7
80863                                                          (if (syntax?$1 s_6)
80864                                                            (syntax-e$1 s_6)
80865                                                            s_6)))
80866                                                     (let ((flat-s_0
80867                                                            (to-syntax-list.1
80868                                                             s_7)))
80869                                                       (if (not flat-s_0)
80870                                                         (raise-syntax-error$1
80871                                                          #f
80872                                                          "bad syntax"
80873                                                          s_0)
80874                                                         (call-with-values
80875                                                          (lambda ()
80876                                                            (begin
80877                                                              (letrec*
80878                                                               ((for-loop_0
80879                                                                 (|#%name|
80880                                                                  for-loop
80881                                                                  (lambda (id:val_0
80882                                                                           val-rhs_0
80883                                                                           lst_0)
80884                                                                    (begin
80885                                                                      (if (pair?
80886                                                                           lst_0)
80887                                                                        (let ((s_8
80888                                                                               (unsafe-car
80889                                                                                lst_0)))
80890                                                                          (let ((rest_0
80891                                                                                 (unsafe-cdr
80892                                                                                  lst_0)))
80893                                                                            (call-with-values
80894                                                                             (lambda ()
80895                                                                               (call-with-values
80896                                                                                (lambda ()
80897                                                                                  (call-with-values
80898                                                                                   (lambda ()
80899                                                                                     (let ((s_9
80900                                                                                            (if (syntax?$1
80901                                                                                                 s_8)
80902                                                                                              (syntax-e$1
80903                                                                                               s_8)
80904                                                                                              s_8)))
80905                                                                                       (if (pair?
80906                                                                                            s_9)
80907                                                                                         (let ((id:val109_0
80908                                                                                                (let ((s_10
80909                                                                                                       (car
80910                                                                                                        s_9)))
80911                                                                                                  (let ((s_11
80912                                                                                                         (if (syntax?$1
80913                                                                                                              s_10)
80914                                                                                                           (syntax-e$1
80915                                                                                                            s_10)
80916                                                                                                           s_10)))
80917                                                                                                    (let ((flat-s_1
80918                                                                                                           (to-syntax-list.1
80919                                                                                                            s_11)))
80920                                                                                                      (if (not
80921                                                                                                           flat-s_1)
80922                                                                                                        (raise-syntax-error$1
80923                                                                                                         #f
80924                                                                                                         "bad syntax"
80925                                                                                                         s_0)
80926                                                                                                        (let ((id:val_1
80927                                                                                                               (begin
80928                                                                                                                 (letrec*
80929                                                                                                                  ((for-loop_1
80930                                                                                                                    (|#%name|
80931                                                                                                                     for-loop
80932                                                                                                                     (lambda (id:val_1
80933                                                                                                                              lst_1)
80934                                                                                                                       (begin
80935                                                                                                                         (if (pair?
80936                                                                                                                              lst_1)
80937                                                                                                                           (let ((s_12
80938                                                                                                                                  (unsafe-car
80939                                                                                                                                   lst_1)))
80940                                                                                                                             (let ((rest_1
80941                                                                                                                                    (unsafe-cdr
80942                                                                                                                                     lst_1)))
80943                                                                                                                               (let ((id:val_2
80944                                                                                                                                      (let ((id:val_2
80945                                                                                                                                             (let ((id:val134_0
80946                                                                                                                                                    (if (let ((or-part_0
80947                                                                                                                                                               (if (syntax?$1
80948                                                                                                                                                                    s_12)
80949                                                                                                                                                                 (symbol?
80950                                                                                                                                                                  (syntax-e$1
80951                                                                                                                                                                   s_12))
80952                                                                                                                                                                 #f)))
80953                                                                                                                                                          (if or-part_0
80954                                                                                                                                                            or-part_0
80955                                                                                                                                                            (symbol?
80956                                                                                                                                                             s_12)))
80957                                                                                                                                                      s_12
80958                                                                                                                                                      (raise-syntax-error$1
80959                                                                                                                                                       #f
80960                                                                                                                                                       "not an identifier"
80961                                                                                                                                                       s_0
80962                                                                                                                                                       s_12))))
80963                                                                                                                                               (cons
80964                                                                                                                                                id:val134_0
80965                                                                                                                                                id:val_1))))
80966                                                                                                                                        (values
80967                                                                                                                                         id:val_2))))
80968                                                                                                                                 (for-loop_1
80969                                                                                                                                  id:val_2
80970                                                                                                                                  rest_1))))
80971                                                                                                                           id:val_1))))))
80972                                                                                                                  (for-loop_1
80973                                                                                                                   null
80974                                                                                                                   flat-s_1)))))
80975                                                                                                          (reverse$1
80976                                                                                                           id:val_1))))))))
80977                                                                                           (let ((val-rhs110_0
80978                                                                                                  (let ((s_10
80979                                                                                                         (cdr
80980                                                                                                          s_9)))
80981                                                                                                    (let ((s_11
80982                                                                                                           (if (syntax?$1
80983                                                                                                                s_10)
80984                                                                                                             (syntax-e$1
80985                                                                                                              s_10)
80986                                                                                                             s_10)))
80987                                                                                                      (if (pair?
80988                                                                                                           s_11)
80989                                                                                                        (let ((val-rhs111_0
80990                                                                                                               (let ((s_12
80991                                                                                                                      (car
80992                                                                                                                       s_11)))
80993                                                                                                                 s_12)))
80994                                                                                                          (call-with-values
80995                                                                                                           (lambda ()
80996                                                                                                             (let ((s_12
80997                                                                                                                    (cdr
80998                                                                                                                     s_11)))
80999                                                                                                               (let ((s_13
81000                                                                                                                      (if (syntax?$1
81001                                                                                                                           s_12)
81002                                                                                                                        (syntax-e$1
81003                                                                                                                         s_12)
81004                                                                                                                        s_12)))
81005                                                                                                                 (if (null?
81006                                                                                                                      s_13)
81007                                                                                                                   (values)
81008                                                                                                                   (raise-syntax-error$1
81009                                                                                                                    #f
81010                                                                                                                    "bad syntax"
81011                                                                                                                    s_0)))))
81012                                                                                                           (case-lambda
81013                                                                                                            (()
81014                                                                                                             (let ((val-rhs111_1
81015                                                                                                                    val-rhs111_0))
81016                                                                                                               (values
81017                                                                                                                val-rhs111_1)))
81018                                                                                                            (args
81019                                                                                                             (raise-binding-result-arity-error
81020                                                                                                              0
81021                                                                                                              args)))))
81022                                                                                                        (raise-syntax-error$1
81023                                                                                                         #f
81024                                                                                                         "bad syntax"
81025                                                                                                         s_0))))))
81026                                                                                             (let ((id:val109_1
81027                                                                                                    id:val109_0))
81028                                                                                               (values
81029                                                                                                id:val109_1
81030                                                                                                val-rhs110_0))))
81031                                                                                         (raise-syntax-error$1
81032                                                                                          #f
81033                                                                                          "bad syntax"
81034                                                                                          s_0))))
81035                                                                                   (case-lambda
81036                                                                                    ((id:val132_0
81037                                                                                      val-rhs133_0)
81038                                                                                     (values
81039                                                                                      (cons
81040                                                                                       id:val132_0
81041                                                                                       id:val_0)
81042                                                                                      (cons
81043                                                                                       val-rhs133_0
81044                                                                                       val-rhs_0)))
81045                                                                                    (args
81046                                                                                     (raise-binding-result-arity-error
81047                                                                                      2
81048                                                                                      args)))))
81049                                                                                (case-lambda
81050                                                                                 ((id:val_1
81051                                                                                   val-rhs_1)
81052                                                                                  (values
81053                                                                                   id:val_1
81054                                                                                   val-rhs_1))
81055                                                                                 (args
81056                                                                                  (raise-binding-result-arity-error
81057                                                                                   2
81058                                                                                   args)))))
81059                                                                             (case-lambda
81060                                                                              ((id:val_1
81061                                                                                val-rhs_1)
81062                                                                               (for-loop_0
81063                                                                                id:val_1
81064                                                                                val-rhs_1
81065                                                                                rest_0))
81066                                                                              (args
81067                                                                               (raise-binding-result-arity-error
81068                                                                                2
81069                                                                                args))))))
81070                                                                        (values
81071                                                                         id:val_0
81072                                                                         val-rhs_0)))))))
81073                                                               (for-loop_0
81074                                                                null
81075                                                                null
81076                                                                flat-s_0))))
81077                                                          (case-lambda
81078                                                           ((id:val_0
81079                                                             val-rhs_0)
81080                                                            (let ((app_0
81081                                                                   (reverse$1
81082                                                                    id:val_0)))
81083                                                              (values
81084                                                               app_0
81085                                                               (reverse$1
81086                                                                val-rhs_0))))
81087                                                           (args
81088                                                            (raise-binding-result-arity-error
81089                                                             2
81090                                                             args)))))))))
81091                                               (case-lambda
81092                                                ((id:val106_0 val-rhs107_0)
81093                                                 (let ((body108_0
81094                                                        (let ((s_6 (cdr s_5)))
81095                                                          (let ((s_7
81096                                                                 (if (syntax?$1
81097                                                                      s_6)
81098                                                                   (syntax-e$1
81099                                                                    s_6)
81100                                                                   s_6)))
81101                                                            (let ((flat-s_0
81102                                                                   (to-syntax-list.1
81103                                                                    s_7)))
81104                                                              (if (not
81105                                                                   flat-s_0)
81106                                                                (raise-syntax-error$1
81107                                                                 #f
81108                                                                 "bad syntax"
81109                                                                 s_0)
81110                                                                (if (null?
81111                                                                     flat-s_0)
81112                                                                  (raise-syntax-error$1
81113                                                                   #f
81114                                                                   "bad syntax"
81115                                                                   s_0)
81116                                                                  flat-s_0)))))))
81117                                                   (let ((id:val106_1
81118                                                          id:val106_0)
81119                                                         (val-rhs107_1
81120                                                          val-rhs107_0))
81121                                                     (values
81122                                                      id:val106_1
81123                                                      val-rhs107_1
81124                                                      body108_0))))
81125                                                (args
81126                                                 (raise-binding-result-arity-error
81127                                                  2
81128                                                  args))))
81129                                              (raise-syntax-error$1
81130                                               #f
81131                                               "bad syntax"
81132                                               s_0)))))
81133                                      (case-lambda
81134                                       ((id:val100_0 val-rhs101_0 body102_0)
81135                                        (let ((id:trans98_1 id:trans98_0)
81136                                              (trans-rhs99_1 trans-rhs99_0))
81137                                          (values
81138                                           id:trans98_1
81139                                           trans-rhs99_1
81140                                           id:val100_0
81141                                           val-rhs101_0
81142                                           body102_0)))
81143                                       (args
81144                                        (raise-binding-result-arity-error
81145                                         3
81146                                         args)))))
81147                                    (args
81148                                     (raise-binding-result-arity-error
81149                                      2
81150                                      args))))
81151                                  (raise-syntax-error$1
81152                                   #f
81153                                   "bad syntax"
81154                                   s_0)))))
81155                          (case-lambda
81156                           ((id:trans93_0
81157                             trans-rhs94_0
81158                             id:val95_0
81159                             val-rhs96_0
81160                             body97_0)
81161                            (let ((letrec-syntaxes+values92_1
81162                                   letrec-syntaxes+values92_0))
81163                              (values
81164                               letrec-syntaxes+values92_1
81165                               id:trans93_0
81166                               trans-rhs94_0
81167                               id:val95_0
81168                               val-rhs96_0
81169                               body97_0)))
81170                           (args (raise-binding-result-arity-error 5 args)))))
81171                       (raise-syntax-error$1 #f "bad syntax" s_0))))
81172                 (case-lambda
81173                  ((letrec-syntaxes+values86_0
81174                    id:trans87_0
81175                    trans-rhs88_0
81176                    id:val89_0
81177                    val-rhs90_0
81178                    body91_0)
81179                   (values
81180                    #t
81181                    letrec-syntaxes+values86_0
81182                    id:trans87_0
81183                    trans-rhs88_0
81184                    id:val89_0
81185                    val-rhs90_0
81186                    body91_0))
81187                  (args (raise-binding-result-arity-error 6 args))))
81188                (values #f #f #f #f #f #f #f)))
81189            (case-lambda
81190             ((ok?_0
81191               letrec-syntaxes+values86_0
81192               id:trans87_0
81193               trans-rhs88_0
81194               id:val89_0
81195               val-rhs90_0
81196               body91_0)
81197              (call-with-values
81198               (lambda ()
81199                 (if (if (not syntaxes?2_0) #t #f)
81200                   (call-with-values
81201                    (lambda ()
81202                      (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
81203                        (if (pair? s_1)
81204                          (let ((let-values116_0 (let ((s_2 (car s_1))) s_2)))
81205                            (call-with-values
81206                             (lambda ()
81207                               (let ((s_2 (cdr s_1)))
81208                                 (let ((s_3
81209                                        (if (syntax?$1 s_2)
81210                                          (syntax-e$1 s_2)
81211                                          s_2)))
81212                                   (if (pair? s_3)
81213                                     (call-with-values
81214                                      (lambda ()
81215                                        (let ((s_4 (car s_3)))
81216                                          (let ((s_5
81217                                                 (if (syntax?$1 s_4)
81218                                                   (syntax-e$1 s_4)
81219                                                   s_4)))
81220                                            (let ((flat-s_0
81221                                                   (to-syntax-list.1 s_5)))
81222                                              (if (not flat-s_0)
81223                                                (raise-syntax-error$1
81224                                                 #f
81225                                                 "bad syntax"
81226                                                 s_0)
81227                                                (call-with-values
81228                                                 (lambda ()
81229                                                   (begin
81230                                                     (letrec*
81231                                                      ((for-loop_0
81232                                                        (|#%name|
81233                                                         for-loop
81234                                                         (lambda (id:val_0
81235                                                                  val-rhs_0
81236                                                                  lst_0)
81237                                                           (begin
81238                                                             (if (pair? lst_0)
81239                                                               (let ((s_6
81240                                                                      (unsafe-car
81241                                                                       lst_0)))
81242                                                                 (let ((rest_0
81243                                                                        (unsafe-cdr
81244                                                                         lst_0)))
81245                                                                   (call-with-values
81246                                                                    (lambda ()
81247                                                                      (call-with-values
81248                                                                       (lambda ()
81249                                                                         (call-with-values
81250                                                                          (lambda ()
81251                                                                            (let ((s_7
81252                                                                                   (if (syntax?$1
81253                                                                                        s_6)
81254                                                                                     (syntax-e$1
81255                                                                                      s_6)
81256                                                                                     s_6)))
81257                                                                              (if (pair?
81258                                                                                   s_7)
81259                                                                                (let ((id:val123_0
81260                                                                                       (let ((s_8
81261                                                                                              (car
81262                                                                                               s_7)))
81263                                                                                         (let ((s_9
81264                                                                                                (if (syntax?$1
81265                                                                                                     s_8)
81266                                                                                                  (syntax-e$1
81267                                                                                                   s_8)
81268                                                                                                  s_8)))
81269                                                                                           (let ((flat-s_1
81270                                                                                                  (to-syntax-list.1
81271                                                                                                   s_9)))
81272                                                                                             (if (not
81273                                                                                                  flat-s_1)
81274                                                                                               (raise-syntax-error$1
81275                                                                                                #f
81276                                                                                                "bad syntax"
81277                                                                                                s_0)
81278                                                                                               (let ((id:val_1
81279                                                                                                      (begin
81280                                                                                                        (letrec*
81281                                                                                                         ((for-loop_1
81282                                                                                                           (|#%name|
81283                                                                                                            for-loop
81284                                                                                                            (lambda (id:val_1
81285                                                                                                                     lst_1)
81286                                                                                                              (begin
81287                                                                                                                (if (pair?
81288                                                                                                                     lst_1)
81289                                                                                                                  (let ((s_10
81290                                                                                                                         (unsafe-car
81291                                                                                                                          lst_1)))
81292                                                                                                                    (let ((rest_1
81293                                                                                                                           (unsafe-cdr
81294                                                                                                                            lst_1)))
81295                                                                                                                      (let ((id:val_2
81296                                                                                                                             (let ((id:val_2
81297                                                                                                                                    (let ((id:val137_0
81298                                                                                                                                           (if (let ((or-part_0
81299                                                                                                                                                      (if (syntax?$1
81300                                                                                                                                                           s_10)
81301                                                                                                                                                        (symbol?
81302                                                                                                                                                         (syntax-e$1
81303                                                                                                                                                          s_10))
81304                                                                                                                                                        #f)))
81305                                                                                                                                                 (if or-part_0
81306                                                                                                                                                   or-part_0
81307                                                                                                                                                   (symbol?
81308                                                                                                                                                    s_10)))
81309                                                                                                                                             s_10
81310                                                                                                                                             (raise-syntax-error$1
81311                                                                                                                                              #f
81312                                                                                                                                              "not an identifier"
81313                                                                                                                                              s_0
81314                                                                                                                                              s_10))))
81315                                                                                                                                      (cons
81316                                                                                                                                       id:val137_0
81317                                                                                                                                       id:val_1))))
81318                                                                                                                               (values
81319                                                                                                                                id:val_2))))
81320                                                                                                                        (for-loop_1
81321                                                                                                                         id:val_2
81322                                                                                                                         rest_1))))
81323                                                                                                                  id:val_1))))))
81324                                                                                                         (for-loop_1
81325                                                                                                          null
81326                                                                                                          flat-s_1)))))
81327                                                                                                 (reverse$1
81328                                                                                                  id:val_1))))))))
81329                                                                                  (let ((val-rhs124_0
81330                                                                                         (let ((s_8
81331                                                                                                (cdr
81332                                                                                                 s_7)))
81333                                                                                           (let ((s_9
81334                                                                                                  (if (syntax?$1
81335                                                                                                       s_8)
81336                                                                                                    (syntax-e$1
81337                                                                                                     s_8)
81338                                                                                                    s_8)))
81339                                                                                             (if (pair?
81340                                                                                                  s_9)
81341                                                                                               (let ((val-rhs125_0
81342                                                                                                      (let ((s_10
81343                                                                                                             (car
81344                                                                                                              s_9)))
81345                                                                                                        s_10)))
81346                                                                                                 (call-with-values
81347                                                                                                  (lambda ()
81348                                                                                                    (let ((s_10
81349                                                                                                           (cdr
81350                                                                                                            s_9)))
81351                                                                                                      (let ((s_11
81352                                                                                                             (if (syntax?$1
81353                                                                                                                  s_10)
81354                                                                                                               (syntax-e$1
81355                                                                                                                s_10)
81356                                                                                                               s_10)))
81357                                                                                                        (if (null?
81358                                                                                                             s_11)
81359                                                                                                          (values)
81360                                                                                                          (raise-syntax-error$1
81361                                                                                                           #f
81362                                                                                                           "bad syntax"
81363                                                                                                           s_0)))))
81364                                                                                                  (case-lambda
81365                                                                                                   (()
81366                                                                                                    (let ((val-rhs125_1
81367                                                                                                           val-rhs125_0))
81368                                                                                                      (values
81369                                                                                                       val-rhs125_1)))
81370                                                                                                   (args
81371                                                                                                    (raise-binding-result-arity-error
81372                                                                                                     0
81373                                                                                                     args)))))
81374                                                                                               (raise-syntax-error$1
81375                                                                                                #f
81376                                                                                                "bad syntax"
81377                                                                                                s_0))))))
81378                                                                                    (let ((id:val123_1
81379                                                                                           id:val123_0))
81380                                                                                      (values
81381                                                                                       id:val123_1
81382                                                                                       val-rhs124_0))))
81383                                                                                (raise-syntax-error$1
81384                                                                                 #f
81385                                                                                 "bad syntax"
81386                                                                                 s_0))))
81387                                                                          (case-lambda
81388                                                                           ((id:val135_0
81389                                                                             val-rhs136_0)
81390                                                                            (values
81391                                                                             (cons
81392                                                                              id:val135_0
81393                                                                              id:val_0)
81394                                                                             (cons
81395                                                                              val-rhs136_0
81396                                                                              val-rhs_0)))
81397                                                                           (args
81398                                                                            (raise-binding-result-arity-error
81399                                                                             2
81400                                                                             args)))))
81401                                                                       (case-lambda
81402                                                                        ((id:val_1
81403                                                                          val-rhs_1)
81404                                                                         (values
81405                                                                          id:val_1
81406                                                                          val-rhs_1))
81407                                                                        (args
81408                                                                         (raise-binding-result-arity-error
81409                                                                          2
81410                                                                          args)))))
81411                                                                    (case-lambda
81412                                                                     ((id:val_1
81413                                                                       val-rhs_1)
81414                                                                      (for-loop_0
81415                                                                       id:val_1
81416                                                                       val-rhs_1
81417                                                                       rest_0))
81418                                                                     (args
81419                                                                      (raise-binding-result-arity-error
81420                                                                       2
81421                                                                       args))))))
81422                                                               (values
81423                                                                id:val_0
81424                                                                val-rhs_0)))))))
81425                                                      (for-loop_0
81426                                                       null
81427                                                       null
81428                                                       flat-s_0))))
81429                                                 (case-lambda
81430                                                  ((id:val_0 val-rhs_0)
81431                                                   (let ((app_0
81432                                                          (reverse$1
81433                                                           id:val_0)))
81434                                                     (values
81435                                                      app_0
81436                                                      (reverse$1 val-rhs_0))))
81437                                                  (args
81438                                                   (raise-binding-result-arity-error
81439                                                    2
81440                                                    args)))))))))
81441                                      (case-lambda
81442                                       ((id:val120_0 val-rhs121_0)
81443                                        (let ((body122_0
81444                                               (let ((s_4 (cdr s_3)))
81445                                                 (let ((s_5
81446                                                        (if (syntax?$1 s_4)
81447                                                          (syntax-e$1 s_4)
81448                                                          s_4)))
81449                                                   (let ((flat-s_0
81450                                                          (to-syntax-list.1
81451                                                           s_5)))
81452                                                     (if (not flat-s_0)
81453                                                       (raise-syntax-error$1
81454                                                        #f
81455                                                        "bad syntax"
81456                                                        s_0)
81457                                                       (if (null? flat-s_0)
81458                                                         (raise-syntax-error$1
81459                                                          #f
81460                                                          "bad syntax"
81461                                                          s_0)
81462                                                         flat-s_0)))))))
81463                                          (let ((id:val120_1 id:val120_0)
81464                                                (val-rhs121_1 val-rhs121_0))
81465                                            (values
81466                                             id:val120_1
81467                                             val-rhs121_1
81468                                             body122_0))))
81469                                       (args
81470                                        (raise-binding-result-arity-error
81471                                         2
81472                                         args))))
81473                                     (raise-syntax-error$1
81474                                      #f
81475                                      "bad syntax"
81476                                      s_0)))))
81477                             (case-lambda
81478                              ((id:val117_0 val-rhs118_0 body119_0)
81479                               (let ((let-values116_1 let-values116_0))
81480                                 (values
81481                                  let-values116_1
81482                                  id:val117_0
81483                                  val-rhs118_0
81484                                  body119_0)))
81485                              (args
81486                               (raise-binding-result-arity-error 3 args)))))
81487                          (raise-syntax-error$1 #f "bad syntax" s_0))))
81488                    (case-lambda
81489                     ((let-values112_0 id:val113_0 val-rhs114_0 body115_0)
81490                      (values
81491                       #t
81492                       let-values112_0
81493                       id:val113_0
81494                       val-rhs114_0
81495                       body115_0))
81496                     (args (raise-binding-result-arity-error 4 args))))
81497                   (values #f #f #f #f #f)))
81498               (case-lambda
81499                ((ok?_1 let-values112_0 id:val113_0 val-rhs114_0 body115_0)
81500                 (let ((sc_0
81501                        (if (not
81502                             (begin-unsafe
81503                              (expand-context/inner-parsing-expanded?
81504                               (root-expand-context/outer-inner ctx_0))))
81505                          (new-scope 'local)
81506                          #f)))
81507                   (begin
81508                     (if (if syntaxes?2_0 (not sc_0) #f)
81509                       (raise-syntax-error$1
81510                        #f
81511                        "encountered `letrec-syntaxes` in form that should be fully expanded"
81512                        s_0)
81513                       (void))
81514                     (let ((body-sc_0
81515                            (if sc_0
81516                              (if rec?3_0 (new-scope 'letrec-body) #f)
81517                              #f)))
81518                       (let ((phase_0
81519                              (begin-unsafe
81520                               (expand-context/inner-phase
81521                                (root-expand-context/outer-inner ctx_0)))))
81522                         (let ((frame-id_0
81523                                (if syntaxes?2_0 (make-reference-record) #f)))
81524                           (let ((trans-idss_0
81525                                  (reverse$1
81526                                   (let ((lst_0
81527                                          (if syntaxes?2_0 id:trans87_0 null)))
81528                                     (begin
81529                                       (letrec*
81530                                        ((for-loop_0
81531                                          (|#%name|
81532                                           for-loop
81533                                           (lambda (fold-var_0 lst_1)
81534                                             (begin
81535                                               (if (pair? lst_1)
81536                                                 (let ((ids_0
81537                                                        (unsafe-car lst_1)))
81538                                                   (let ((rest_0
81539                                                          (unsafe-cdr lst_1)))
81540                                                     (let ((fold-var_1
81541                                                            (let ((fold-var_1
81542                                                                   (cons
81543                                                                    (reverse$1
81544                                                                     (begin
81545                                                                       (letrec*
81546                                                                        ((for-loop_1
81547                                                                          (|#%name|
81548                                                                           for-loop
81549                                                                           (lambda (fold-var_1
81550                                                                                    lst_2)
81551                                                                             (begin
81552                                                                               (if (pair?
81553                                                                                    lst_2)
81554                                                                                 (let ((id_0
81555                                                                                        (unsafe-car
81556                                                                                         lst_2)))
81557                                                                                   (let ((rest_1
81558                                                                                          (unsafe-cdr
81559                                                                                           lst_2)))
81560                                                                                     (let ((fold-var_2
81561                                                                                            (let ((fold-var_2
81562                                                                                                   (cons
81563                                                                                                    (add-scope
81564                                                                                                     id_0
81565                                                                                                     sc_0)
81566                                                                                                    fold-var_1)))
81567                                                                                              (values
81568                                                                                               fold-var_2))))
81569                                                                                       (for-loop_1
81570                                                                                        fold-var_2
81571                                                                                        rest_1))))
81572                                                                                 fold-var_1))))))
81573                                                                        (for-loop_1
81574                                                                         null
81575                                                                         ids_0))))
81576                                                                    fold-var_0)))
81577                                                              (values
81578                                                               fold-var_1))))
81579                                                       (for-loop_0
81580                                                        fold-var_1
81581                                                        rest_0))))
81582                                                 fold-var_0))))))
81583                                        (for-loop_0 null lst_0)))))))
81584                             (let ((trans-rhss_0
81585                                    (if syntaxes?2_0
81586                                      (reverse$1
81587                                       (begin
81588                                         (letrec*
81589                                          ((for-loop_0
81590                                            (|#%name|
81591                                             for-loop
81592                                             (lambda (fold-var_0 lst_0)
81593                                               (begin
81594                                                 (if (pair? lst_0)
81595                                                   (let ((rhs_0
81596                                                          (unsafe-car lst_0)))
81597                                                     (let ((rest_0
81598                                                            (unsafe-cdr
81599                                                             lst_0)))
81600                                                       (let ((fold-var_1
81601                                                              (let ((fold-var_1
81602                                                                     (cons
81603                                                                      (add-scope
81604                                                                       rhs_0
81605                                                                       sc_0)
81606                                                                      fold-var_0)))
81607                                                                (values
81608                                                                 fold-var_1))))
81609                                                         (for-loop_0
81610                                                          fold-var_1
81611                                                          rest_0))))
81612                                                   fold-var_0))))))
81613                                          (for-loop_0 null trans-rhs88_0))))
81614                                      '())))
81615                               (let ((val-idss_0
81616                                      (let ((val-idss_0
81617                                             (if syntaxes?2_0
81618                                               id:val89_0
81619                                               id:val113_0)))
81620                                        (if sc_0
81621                                          (reverse$1
81622                                           (begin
81623                                             (letrec*
81624                                              ((for-loop_0
81625                                                (|#%name|
81626                                                 for-loop
81627                                                 (lambda (fold-var_0 lst_0)
81628                                                   (begin
81629                                                     (if (pair? lst_0)
81630                                                       (let ((ids_0
81631                                                              (unsafe-car
81632                                                               lst_0)))
81633                                                         (let ((rest_0
81634                                                                (unsafe-cdr
81635                                                                 lst_0)))
81636                                                           (let ((fold-var_1
81637                                                                  (let ((fold-var_1
81638                                                                         (cons
81639                                                                          (reverse$1
81640                                                                           (begin
81641                                                                             (letrec*
81642                                                                              ((for-loop_1
81643                                                                                (|#%name|
81644                                                                                 for-loop
81645                                                                                 (lambda (fold-var_1
81646                                                                                          lst_1)
81647                                                                                   (begin
81648                                                                                     (if (pair?
81649                                                                                          lst_1)
81650                                                                                       (let ((id_0
81651                                                                                              (unsafe-car
81652                                                                                               lst_1)))
81653                                                                                         (let ((rest_1
81654                                                                                                (unsafe-cdr
81655                                                                                                 lst_1)))
81656                                                                                           (let ((fold-var_2
81657                                                                                                  (let ((fold-var_2
81658                                                                                                         (cons
81659                                                                                                          (add-scope
81660                                                                                                           id_0
81661                                                                                                           sc_0)
81662                                                                                                          fold-var_1)))
81663                                                                                                    (values
81664                                                                                                     fold-var_2))))
81665                                                                                             (for-loop_1
81666                                                                                              fold-var_2
81667                                                                                              rest_1))))
81668                                                                                       fold-var_1))))))
81669                                                                              (for-loop_1
81670                                                                               null
81671                                                                               ids_0))))
81672                                                                          fold-var_0)))
81673                                                                    (values
81674                                                                     fold-var_1))))
81675                                                             (for-loop_0
81676                                                              fold-var_1
81677                                                              rest_0))))
81678                                                       fold-var_0))))))
81679                                              (for-loop_0 null val-idss_0))))
81680                                          val-idss_0))))
81681                                 (let ((val-rhss_0
81682                                        (let ((val-rhss_0
81683                                               (if syntaxes?2_0
81684                                                 val-rhs90_0
81685                                                 val-rhs114_0)))
81686                                          (if (if rec?3_0 sc_0 #f)
81687                                            (reverse$1
81688                                             (begin
81689                                               (letrec*
81690                                                ((for-loop_0
81691                                                  (|#%name|
81692                                                   for-loop
81693                                                   (lambda (fold-var_0 lst_0)
81694                                                     (begin
81695                                                       (if (pair? lst_0)
81696                                                         (let ((rhs_0
81697                                                                (unsafe-car
81698                                                                 lst_0)))
81699                                                           (let ((rest_0
81700                                                                  (unsafe-cdr
81701                                                                   lst_0)))
81702                                                             (let ((fold-var_1
81703                                                                    (let ((fold-var_1
81704                                                                           (cons
81705                                                                            (add-scope
81706                                                                             rhs_0
81707                                                                             sc_0)
81708                                                                            fold-var_0)))
81709                                                                      (values
81710                                                                       fold-var_1))))
81711                                                               (for-loop_0
81712                                                                fold-var_1
81713                                                                rest_0))))
81714                                                         fold-var_0))))))
81715                                                (for-loop_0 null val-rhss_0))))
81716                                            val-rhss_0))))
81717                                   (let ((val-clauses_0
81718                                          (if syntaxes?2_0
81719                                            (call-with-values
81720                                             (lambda ()
81721                                               (call-with-values
81722                                                (lambda ()
81723                                                  (let ((s_1
81724                                                         (if (syntax?$1 s_0)
81725                                                           (syntax-e$1 s_0)
81726                                                           s_0)))
81727                                                    (if (pair? s_1)
81728                                                      (let ((_0
81729                                                             (let ((s_2
81730                                                                    (car s_1)))
81731                                                               s_2)))
81732                                                        (call-with-values
81733                                                         (lambda ()
81734                                                           (let ((s_2
81735                                                                  (cdr s_1)))
81736                                                             (let ((s_3
81737                                                                    (if (syntax?$1
81738                                                                         s_2)
81739                                                                      (syntax-e$1
81740                                                                       s_2)
81741                                                                      s_2)))
81742                                                               (if (pair? s_3)
81743                                                                 (let ((_1
81744                                                                        (let ((s_4
81745                                                                               (car
81746                                                                                s_3)))
81747                                                                          s_4)))
81748                                                                   (call-with-values
81749                                                                    (lambda ()
81750                                                                      (let ((s_4
81751                                                                             (cdr
81752                                                                              s_3)))
81753                                                                        (let ((s_5
81754                                                                               (if (syntax?$1
81755                                                                                    s_4)
81756                                                                                 (syntax-e$1
81757                                                                                  s_4)
81758                                                                                 s_4)))
81759                                                                          (if (pair?
81760                                                                               s_5)
81761                                                                            (let ((clause149_0
81762                                                                                   (let ((s_6
81763                                                                                          (car
81764                                                                                           s_5)))
81765                                                                                     (let ((s_7
81766                                                                                            (if (syntax?$1
81767                                                                                                 s_6)
81768                                                                                              (syntax-e$1
81769                                                                                               s_6)
81770                                                                                              s_6)))
81771                                                                                       (let ((flat-s_0
81772                                                                                              (to-syntax-list.1
81773                                                                                               s_7)))
81774                                                                                         (if (not
81775                                                                                              flat-s_0)
81776                                                                                           (raise-syntax-error$1
81777                                                                                            #f
81778                                                                                            "bad syntax"
81779                                                                                            s_0)
81780                                                                                           flat-s_0))))))
81781                                                                              (let ((_2
81782                                                                                     (let ((s_6
81783                                                                                            (cdr
81784                                                                                             s_5)))
81785                                                                                       s_6)))
81786                                                                                (let ((clause149_1
81787                                                                                       clause149_0))
81788                                                                                  (values
81789                                                                                   clause149_1
81790                                                                                   _2))))
81791                                                                            (raise-syntax-error$1
81792                                                                             #f
81793                                                                             "bad syntax"
81794                                                                             s_0)))))
81795                                                                    (case-lambda
81796                                                                     ((clause147_0
81797                                                                       _2)
81798                                                                      (let ((_3
81799                                                                             _1))
81800                                                                        (values
81801                                                                         _3
81802                                                                         clause147_0
81803                                                                         _2)))
81804                                                                     (args
81805                                                                      (raise-binding-result-arity-error
81806                                                                       2
81807                                                                       args)))))
81808                                                                 (raise-syntax-error$1
81809                                                                  #f
81810                                                                  "bad syntax"
81811                                                                  s_0)))))
81812                                                         (case-lambda
81813                                                          ((_1 clause144_0 _2)
81814                                                           (let ((_3 _0))
81815                                                             (values
81816                                                              _3
81817                                                              _1
81818                                                              clause144_0
81819                                                              _2)))
81820                                                          (args
81821                                                           (raise-binding-result-arity-error
81822                                                            3
81823                                                            args)))))
81824                                                      (raise-syntax-error$1
81825                                                       #f
81826                                                       "bad syntax"
81827                                                       s_0))))
81828                                                (case-lambda
81829                                                 ((_0 _1 clause140_0 _2)
81830                                                  (values
81831                                                   #t
81832                                                   _0
81833                                                   _1
81834                                                   clause140_0
81835                                                   _2))
81836                                                 (args
81837                                                  (raise-binding-result-arity-error
81838                                                   4
81839                                                   args)))))
81840                                             (case-lambda
81841                                              ((ok?_2 _0 _1 clause140_0 _2)
81842                                               clause140_0)
81843                                              (args
81844                                               (raise-binding-result-arity-error
81845                                                5
81846                                                args))))
81847                                            (call-with-values
81848                                             (lambda ()
81849                                               (call-with-values
81850                                                (lambda ()
81851                                                  (let ((s_1
81852                                                         (if (syntax?$1 s_0)
81853                                                           (syntax-e$1 s_0)
81854                                                           s_0)))
81855                                                    (if (pair? s_1)
81856                                                      (let ((_0
81857                                                             (let ((s_2
81858                                                                    (car s_1)))
81859                                                               s_2)))
81860                                                        (call-with-values
81861                                                         (lambda ()
81862                                                           (let ((s_2
81863                                                                  (cdr s_1)))
81864                                                             (let ((s_3
81865                                                                    (if (syntax?$1
81866                                                                         s_2)
81867                                                                      (syntax-e$1
81868                                                                       s_2)
81869                                                                      s_2)))
81870                                                               (if (pair? s_3)
81871                                                                 (let ((clause157_0
81872                                                                        (let ((s_4
81873                                                                               (car
81874                                                                                s_3)))
81875                                                                          (let ((s_5
81876                                                                                 (if (syntax?$1
81877                                                                                      s_4)
81878                                                                                   (syntax-e$1
81879                                                                                    s_4)
81880                                                                                   s_4)))
81881                                                                            (let ((flat-s_0
81882                                                                                   (to-syntax-list.1
81883                                                                                    s_5)))
81884                                                                              (if (not
81885                                                                                   flat-s_0)
81886                                                                                (raise-syntax-error$1
81887                                                                                 #f
81888                                                                                 "bad syntax"
81889                                                                                 s_0)
81890                                                                                flat-s_0))))))
81891                                                                   (let ((_1
81892                                                                          (let ((s_4
81893                                                                                 (cdr
81894                                                                                  s_3)))
81895                                                                            s_4)))
81896                                                                     (let ((clause157_1
81897                                                                            clause157_0))
81898                                                                       (values
81899                                                                        clause157_1
81900                                                                        _1))))
81901                                                                 (raise-syntax-error$1
81902                                                                  #f
81903                                                                  "bad syntax"
81904                                                                  s_0)))))
81905                                                         (case-lambda
81906                                                          ((clause155_0 _1)
81907                                                           (let ((_2 _0))
81908                                                             (values
81909                                                              _2
81910                                                              clause155_0
81911                                                              _1)))
81912                                                          (args
81913                                                           (raise-binding-result-arity-error
81914                                                            2
81915                                                            args)))))
81916                                                      (raise-syntax-error$1
81917                                                       #f
81918                                                       "bad syntax"
81919                                                       s_0))))
81920                                                (case-lambda
81921                                                 ((_0 clause152_0 _1)
81922                                                  (values
81923                                                   #t
81924                                                   _0
81925                                                   clause152_0
81926                                                   _1))
81927                                                 (args
81928                                                  (raise-binding-result-arity-error
81929                                                   3
81930                                                   args)))))
81931                                             (case-lambda
81932                                              ((ok?_2 _0 clause152_0 _1)
81933                                               clause152_0)
81934                                              (args
81935                                               (raise-binding-result-arity-error
81936                                                4
81937                                                args)))))))
81938                                     (begin
81939                                       (let ((temp126_0
81940                                              (list trans-idss_0 val-idss_0)))
81941                                         (check-no-duplicate-ids.1
81942                                          unsafe-undefined
81943                                          temp126_0
81944                                          phase_0
81945                                          s_0
81946                                          unsafe-undefined))
81947                                       (let ((counter_0
81948                                              (begin-unsafe
81949                                               (root-expand-context/inner-counter
81950                                                (root-expand-context/outer-inner
81951                                                 ctx_0)))))
81952                                         (let ((local-sym_0
81953                                                (if (begin-unsafe
81954                                                     (expand-context/inner-normalize-locals?
81955                                                      (root-expand-context/outer-inner
81956                                                       ctx_0)))
81957                                                  'loc
81958                                                  #f)))
81959                                           (let ((trans-keyss_0
81960                                                  (reverse$1
81961                                                   (begin
81962                                                     (letrec*
81963                                                      ((for-loop_0
81964                                                        (|#%name|
81965                                                         for-loop
81966                                                         (lambda (fold-var_0
81967                                                                  lst_0)
81968                                                           (begin
81969                                                             (if (pair? lst_0)
81970                                                               (let ((ids_0
81971                                                                      (unsafe-car
81972                                                                       lst_0)))
81973                                                                 (let ((rest_0
81974                                                                        (unsafe-cdr
81975                                                                         lst_0)))
81976                                                                   (let ((fold-var_1
81977                                                                          (let ((fold-var_1
81978                                                                                 (cons
81979                                                                                  (reverse$1
81980                                                                                   (begin
81981                                                                                     (letrec*
81982                                                                                      ((for-loop_1
81983                                                                                        (|#%name|
81984                                                                                         for-loop
81985                                                                                         (lambda (fold-var_1
81986                                                                                                  lst_1)
81987                                                                                           (begin
81988                                                                                             (if (pair?
81989                                                                                                  lst_1)
81990                                                                                               (let ((id_0
81991                                                                                                      (unsafe-car
81992                                                                                                       lst_1)))
81993                                                                                                 (let ((rest_1
81994                                                                                                        (unsafe-cdr
81995                                                                                                         lst_1)))
81996                                                                                                   (let ((fold-var_2
81997                                                                                                          (let ((fold-var_2
81998                                                                                                                 (cons
81999                                                                                                                  (add-local-binding!.1
82000                                                                                                                   frame-id_0
82001                                                                                                                   s_0
82002                                                                                                                   local-sym_0
82003                                                                                                                   id_0
82004                                                                                                                   phase_0
82005                                                                                                                   counter_0)
82006                                                                                                                  fold-var_1)))
82007                                                                                                            (values
82008                                                                                                             fold-var_2))))
82009                                                                                                     (for-loop_1
82010                                                                                                      fold-var_2
82011                                                                                                      rest_1))))
82012                                                                                               fold-var_1))))))
82013                                                                                      (for-loop_1
82014                                                                                       null
82015                                                                                       ids_0))))
82016                                                                                  fold-var_0)))
82017                                                                            (values
82018                                                                             fold-var_1))))
82019                                                                     (for-loop_0
82020                                                                      fold-var_1
82021                                                                      rest_0))))
82022                                                               fold-var_0))))))
82023                                                      (for-loop_0
82024                                                       null
82025                                                       trans-idss_0))))))
82026                                             (let ((val-keyss_0
82027                                                    (reverse$1
82028                                                     (begin
82029                                                       (letrec*
82030                                                        ((for-loop_0
82031                                                          (|#%name|
82032                                                           for-loop
82033                                                           (lambda (fold-var_0
82034                                                                    lst_0)
82035                                                             (begin
82036                                                               (if (pair?
82037                                                                    lst_0)
82038                                                                 (let ((ids_0
82039                                                                        (unsafe-car
82040                                                                         lst_0)))
82041                                                                   (let ((rest_0
82042                                                                          (unsafe-cdr
82043                                                                           lst_0)))
82044                                                                     (let ((fold-var_1
82045                                                                            (let ((fold-var_1
82046                                                                                   (cons
82047                                                                                    (reverse$1
82048                                                                                     (begin
82049                                                                                       (letrec*
82050                                                                                        ((for-loop_1
82051                                                                                          (|#%name|
82052                                                                                           for-loop
82053                                                                                           (lambda (fold-var_1
82054                                                                                                    lst_1)
82055                                                                                             (begin
82056                                                                                               (if (pair?
82057                                                                                                    lst_1)
82058                                                                                                 (let ((id_0
82059                                                                                                        (unsafe-car
82060                                                                                                         lst_1)))
82061                                                                                                   (let ((rest_1
82062                                                                                                          (unsafe-cdr
82063                                                                                                           lst_1)))
82064                                                                                                     (let ((fold-var_2
82065                                                                                                            (let ((fold-var_2
82066                                                                                                                   (cons
82067                                                                                                                    (if sc_0
82068                                                                                                                      (add-local-binding!.1
82069                                                                                                                       frame-id_0
82070                                                                                                                       s_0
82071                                                                                                                       local-sym_0
82072                                                                                                                       id_0
82073                                                                                                                       phase_0
82074                                                                                                                       counter_0)
82075                                                                                                                      (existing-binding-key
82076                                                                                                                       id_0
82077                                                                                                                       (begin-unsafe
82078                                                                                                                        (expand-context/inner-phase
82079                                                                                                                         (root-expand-context/outer-inner
82080                                                                                                                          ctx_0)))))
82081                                                                                                                    fold-var_1)))
82082                                                                                                              (values
82083                                                                                                               fold-var_2))))
82084                                                                                                       (for-loop_1
82085                                                                                                        fold-var_2
82086                                                                                                        rest_1))))
82087                                                                                                 fold-var_1))))))
82088                                                                                        (for-loop_1
82089                                                                                         null
82090                                                                                         ids_0))))
82091                                                                                    fold-var_0)))
82092                                                                              (values
82093                                                                               fold-var_1))))
82094                                                                       (for-loop_0
82095                                                                        fold-var_1
82096                                                                        rest_0))))
82097                                                                 fold-var_0))))))
82098                                                        (for-loop_0
82099                                                         null
82100                                                         val-idss_0))))))
82101                                               (let ((bodys_0
82102                                                      (let ((bodys_0
82103                                                             (if syntaxes?2_0
82104                                                               body91_0
82105                                                               body115_0)))
82106                                                        (if sc_0
82107                                                          (reverse$1
82108                                                           (begin
82109                                                             (letrec*
82110                                                              ((for-loop_0
82111                                                                (|#%name|
82112                                                                 for-loop
82113                                                                 (lambda (fold-var_0
82114                                                                          lst_0)
82115                                                                   (begin
82116                                                                     (if (pair?
82117                                                                          lst_0)
82118                                                                       (let ((body_0
82119                                                                              (unsafe-car
82120                                                                               lst_0)))
82121                                                                         (let ((rest_0
82122                                                                                (unsafe-cdr
82123                                                                                 lst_0)))
82124                                                                           (let ((fold-var_1
82125                                                                                  (let ((fold-var_1
82126                                                                                         (cons
82127                                                                                          (let ((new-body_0
82128                                                                                                 (add-scope
82129                                                                                                  body_0
82130                                                                                                  sc_0)))
82131                                                                                            (if rec?3_0
82132                                                                                              (add-scope
82133                                                                                               new-body_0
82134                                                                                               body-sc_0)
82135                                                                                              new-body_0))
82136                                                                                          fold-var_0)))
82137                                                                                    (values
82138                                                                                     fold-var_1))))
82139                                                                             (for-loop_0
82140                                                                              fold-var_1
82141                                                                              rest_0))))
82142                                                                       fold-var_0))))))
82143                                                              (for-loop_0
82144                                                               null
82145                                                               bodys_0))))
82146                                                          bodys_0))))
82147                                                 (begin
82148                                                   (let ((obs_0
82149                                                          (begin-unsafe
82150                                                           (expand-context/inner-observer
82151                                                            (root-expand-context/outer-inner
82152                                                             ctx_0)))))
82153                                                     (if obs_0
82154                                                       (call-expand-observe
82155                                                        obs_0
82156                                                        'letX-renames
82157                                                        trans-idss_0
82158                                                        trans-rhss_0
82159                                                        val-idss_0
82160                                                        val-rhss_0
82161                                                        bodys_0)
82162                                                       (void)))
82163                                                   (begin
82164                                                     (if syntaxes?2_0
82165                                                       (begin
82166                                                         (let ((obs_0
82167                                                                (begin-unsafe
82168                                                                 (expand-context/inner-observer
82169                                                                  (root-expand-context/outer-inner
82170                                                                   ctx_0)))))
82171                                                           (if obs_0
82172                                                             (call-expand-observe
82173                                                              obs_0
82174                                                              'prepare-env)
82175                                                             (void)))
82176                                                         (prepare-next-phase-namespace
82177                                                          ctx_0))
82178                                                       (void))
82179                                                     (let ((trans-valss_0
82180                                                            (reverse$1
82181                                                             (begin
82182                                                               (letrec*
82183                                                                ((for-loop_0
82184                                                                  (|#%name|
82185                                                                   for-loop
82186                                                                   (lambda (fold-var_0
82187                                                                            lst_0
82188                                                                            lst_1)
82189                                                                     (begin
82190                                                                       (if (if (pair?
82191                                                                                lst_0)
82192                                                                             (pair?
82193                                                                              lst_1)
82194                                                                             #f)
82195                                                                         (let ((rhs_0
82196                                                                                (unsafe-car
82197                                                                                 lst_0)))
82198                                                                           (let ((rest_0
82199                                                                                  (unsafe-cdr
82200                                                                                   lst_0)))
82201                                                                             (let ((ids_0
82202                                                                                    (unsafe-car
82203                                                                                     lst_1)))
82204                                                                               (let ((rest_1
82205                                                                                      (unsafe-cdr
82206                                                                                       lst_1)))
82207                                                                                 (let ((fold-var_1
82208                                                                                        (let ((fold-var_1
82209                                                                                               (cons
82210                                                                                                (begin
82211                                                                                                  (let ((obs_0
82212                                                                                                         (begin-unsafe
82213                                                                                                          (expand-context/inner-observer
82214                                                                                                           (root-expand-context/outer-inner
82215                                                                                                            ctx_0)))))
82216                                                                                                    (if obs_0
82217                                                                                                      (begin
82218                                                                                                        (call-expand-observe
82219                                                                                                         obs_0
82220                                                                                                         'next)
82221                                                                                                        (call-expand-observe
82222                                                                                                         obs_0
82223                                                                                                         'enter-bind))
82224                                                                                                      (void)))
82225                                                                                                  (let ((trans-val_0
82226                                                                                                         (eval-for-syntaxes-binding
82227                                                                                                          'letrec-syntaxes+values
82228                                                                                                          rhs_0
82229                                                                                                          ids_0
82230                                                                                                          ctx_0)))
82231                                                                                                    (begin
82232                                                                                                      (let ((obs_0
82233                                                                                                             (begin-unsafe
82234                                                                                                              (expand-context/inner-observer
82235                                                                                                               (root-expand-context/outer-inner
82236                                                                                                                ctx_0)))))
82237                                                                                                        (if obs_0
82238                                                                                                          (call-expand-observe
82239                                                                                                           obs_0
82240                                                                                                           'exit-bind)
82241                                                                                                          (void)))
82242                                                                                                      trans-val_0)))
82243                                                                                                fold-var_0)))
82244                                                                                          (values
82245                                                                                           fold-var_1))))
82246                                                                                   (for-loop_0
82247                                                                                    fold-var_1
82248                                                                                    rest_0
82249                                                                                    rest_1))))))
82250                                                                         fold-var_0))))))
82251                                                                (for-loop_0
82252                                                                 null
82253                                                                 trans-rhss_0
82254                                                                 trans-idss_0))))))
82255                                                       (let ((rec-val-env_0
82256                                                              (begin
82257                                                                (letrec*
82258                                                                 ((for-loop_0
82259                                                                   (|#%name|
82260                                                                    for-loop
82261                                                                    (lambda (env_0
82262                                                                             lst_0
82263                                                                             lst_1)
82264                                                                      (begin
82265                                                                        (if (if (pair?
82266                                                                                 lst_0)
82267                                                                              (pair?
82268                                                                               lst_1)
82269                                                                              #f)
82270                                                                          (let ((keys_0
82271                                                                                 (unsafe-car
82272                                                                                  lst_0)))
82273                                                                            (let ((rest_0
82274                                                                                   (unsafe-cdr
82275                                                                                    lst_0)))
82276                                                                              (let ((ids_0
82277                                                                                     (unsafe-car
82278                                                                                      lst_1)))
82279                                                                                (let ((rest_1
82280                                                                                       (unsafe-cdr
82281                                                                                        lst_1)))
82282                                                                                  (let ((env_1
82283                                                                                         (begin
82284                                                                                           (letrec*
82285                                                                                            ((for-loop_1
82286                                                                                              (|#%name|
82287                                                                                               for-loop
82288                                                                                               (lambda (env_1
82289                                                                                                        lst_2
82290                                                                                                        lst_3)
82291                                                                                                 (begin
82292                                                                                                   (if (if (pair?
82293                                                                                                            lst_2)
82294                                                                                                         (pair?
82295                                                                                                          lst_3)
82296                                                                                                         #f)
82297                                                                                                     (let ((key_0
82298                                                                                                            (unsafe-car
82299                                                                                                             lst_2)))
82300                                                                                                       (let ((rest_2
82301                                                                                                              (unsafe-cdr
82302                                                                                                               lst_2)))
82303                                                                                                         (let ((id_0
82304                                                                                                                (unsafe-car
82305                                                                                                                 lst_3)))
82306                                                                                                           (let ((rest_3
82307                                                                                                                  (unsafe-cdr
82308                                                                                                                   lst_3)))
82309                                                                                                             (let ((val_0
82310                                                                                                                    (local-variable1.1
82311                                                                                                                     id_0)))
82312                                                                                                               (let ((env_2
82313                                                                                                                      (let ((env_2
82314                                                                                                                             (begin-unsafe
82315                                                                                                                              (hash-set
82316                                                                                                                               env_1
82317                                                                                                                               key_0
82318                                                                                                                               val_0))))
82319                                                                                                                        (values
82320                                                                                                                         env_2))))
82321                                                                                                                 (for-loop_1
82322                                                                                                                  env_2
82323                                                                                                                  rest_2
82324                                                                                                                  rest_3)))))))
82325                                                                                                     env_1))))))
82326                                                                                            (for-loop_1
82327                                                                                             env_0
82328                                                                                             keys_0
82329                                                                                             ids_0)))))
82330                                                                                    (for-loop_0
82331                                                                                     env_1
82332                                                                                     rest_0
82333                                                                                     rest_1))))))
82334                                                                          env_0))))))
82335                                                                 (for-loop_0
82336                                                                  (begin-unsafe
82337                                                                   (expand-context/outer-env
82338                                                                    ctx_0))
82339                                                                  val-keyss_0
82340                                                                  val-idss_0)))))
82341                                                         (let ((rec-env_0
82342                                                                (begin
82343                                                                  (letrec*
82344                                                                   ((for-loop_0
82345                                                                     (|#%name|
82346                                                                      for-loop
82347                                                                      (lambda (env_0
82348                                                                               lst_0
82349                                                                               lst_1
82350                                                                               lst_2)
82351                                                                        (begin
82352                                                                          (if (if (pair?
82353                                                                                   lst_0)
82354                                                                                (if (pair?
82355                                                                                     lst_1)
82356                                                                                  (pair?
82357                                                                                   lst_2)
82358                                                                                  #f)
82359                                                                                #f)
82360                                                                            (let ((keys_0
82361                                                                                   (unsafe-car
82362                                                                                    lst_0)))
82363                                                                              (let ((rest_0
82364                                                                                     (unsafe-cdr
82365                                                                                      lst_0)))
82366                                                                                (let ((vals_0
82367                                                                                       (unsafe-car
82368                                                                                        lst_1)))
82369                                                                                  (let ((rest_1
82370                                                                                         (unsafe-cdr
82371                                                                                          lst_1)))
82372                                                                                    (let ((ids_0
82373                                                                                           (unsafe-car
82374                                                                                            lst_2)))
82375                                                                                      (let ((rest_2
82376                                                                                             (unsafe-cdr
82377                                                                                              lst_2)))
82378                                                                                        (let ((env_1
82379                                                                                               (let ((env_1
82380                                                                                                      (begin
82381                                                                                                        (letrec*
82382                                                                                                         ((for-loop_1
82383                                                                                                           (|#%name|
82384                                                                                                            for-loop
82385                                                                                                            (lambda (env_1
82386                                                                                                                     lst_3
82387                                                                                                                     lst_4
82388                                                                                                                     lst_5)
82389                                                                                                              (begin
82390                                                                                                                (if (if (pair?
82391                                                                                                                         lst_3)
82392                                                                                                                      (if (pair?
82393                                                                                                                           lst_4)
82394                                                                                                                        (pair?
82395                                                                                                                         lst_5)
82396                                                                                                                        #f)
82397                                                                                                                      #f)
82398                                                                                                                  (let ((key_0
82399                                                                                                                         (unsafe-car
82400                                                                                                                          lst_3)))
82401                                                                                                                    (let ((rest_3
82402                                                                                                                           (unsafe-cdr
82403                                                                                                                            lst_3)))
82404                                                                                                                      (let ((val_0
82405                                                                                                                             (unsafe-car
82406                                                                                                                              lst_4)))
82407                                                                                                                        (let ((rest_4
82408                                                                                                                               (unsafe-cdr
82409                                                                                                                                lst_4)))
82410                                                                                                                          (let ((id_0
82411                                                                                                                                 (unsafe-car
82412                                                                                                                                  lst_5)))
82413                                                                                                                            (let ((rest_5
82414                                                                                                                                   (unsafe-cdr
82415                                                                                                                                    lst_5)))
82416                                                                                                                              (let ((env_2
82417                                                                                                                                     (let ((env_2
82418                                                                                                                                            (begin
82419                                                                                                                                              (maybe-install-free=id-in-context!
82420                                                                                                                                               val_0
82421                                                                                                                                               id_0
82422                                                                                                                                               phase_0
82423                                                                                                                                               ctx_0)
82424                                                                                                                                              (begin-unsafe
82425                                                                                                                                               (hash-set
82426                                                                                                                                                env_1
82427                                                                                                                                                key_0
82428                                                                                                                                                val_0)))))
82429                                                                                                                                       (values
82430                                                                                                                                        env_2))))
82431                                                                                                                                (for-loop_1
82432                                                                                                                                 env_2
82433                                                                                                                                 rest_3
82434                                                                                                                                 rest_4
82435                                                                                                                                 rest_5))))))))
82436                                                                                                                  env_1))))))
82437                                                                                                         (for-loop_1
82438                                                                                                          env_0
82439                                                                                                          keys_0
82440                                                                                                          vals_0
82441                                                                                                          ids_0)))))
82442                                                                                                 (values
82443                                                                                                  env_1))))
82444                                                                                          (for-loop_0
82445                                                                                           env_1
82446                                                                                           rest_0
82447                                                                                           rest_1
82448                                                                                           rest_2))))))))
82449                                                                            env_0))))))
82450                                                                   (for-loop_0
82451                                                                    rec-val-env_0
82452                                                                    trans-keyss_0
82453                                                                    trans-valss_0
82454                                                                    trans-idss_0)))))
82455                                                           (begin
82456                                                             (if syntaxes?2_0
82457                                                               (let ((obs_0
82458                                                                      (begin-unsafe
82459                                                                       (expand-context/inner-observer
82460                                                                        (root-expand-context/outer-inner
82461                                                                         ctx_0)))))
82462                                                                 (if obs_0
82463                                                                   (call-expand-observe
82464                                                                    obs_0
82465                                                                    'next-group)
82466                                                                   (void)))
82467                                                               (void))
82468                                                             (let ((expr-ctx_0
82469                                                                    (as-expression-context
82470                                                                     ctx_0)))
82471                                                               (let ((orig-rrs_0
82472                                                                      (begin-unsafe
82473                                                                       (expand-context/outer-reference-records
82474                                                                        expr-ctx_0))))
82475                                                                 (let ((rec-ctx_0
82476                                                                        (if (expand-context/outer?
82477                                                                             expr-ctx_0)
82478                                                                          (let ((scopes172_0
82479                                                                                 (if sc_0
82480                                                                                   (let ((scopes_0
82481                                                                                          (cons
82482                                                                                           sc_0
82483                                                                                           (begin-unsafe
82484                                                                                            (expand-context/outer-scopes
82485                                                                                             ctx_0)))))
82486                                                                                     (if rec?3_0
82487                                                                                       (cons
82488                                                                                        body-sc_0
82489                                                                                        scopes_0)
82490                                                                                       scopes_0))
82491                                                                                   (begin-unsafe
82492                                                                                    (expand-context/outer-scopes
82493                                                                                     ctx_0)))))
82494                                                                            (let ((reference-records173_0
82495                                                                                   (if split-by-reference?4_0
82496                                                                                     (cons
82497                                                                                      frame-id_0
82498                                                                                      orig-rrs_0)
82499                                                                                     orig-rrs_0)))
82500                                                                              (let ((binding-layer174_0
82501                                                                                     (if sc_0
82502                                                                                       (increment-binding-layer
82503                                                                                        (cons
82504                                                                                         trans-idss_0
82505                                                                                         val-idss_0)
82506                                                                                        ctx_0
82507                                                                                        sc_0)
82508                                                                                       (begin-unsafe
82509                                                                                        (expand-context/outer-binding-layer
82510                                                                                         ctx_0)))))
82511                                                                                (let ((inner175_0
82512                                                                                       (root-expand-context/outer-inner
82513                                                                                        expr-ctx_0)))
82514                                                                                  (let ((binding-layer174_1
82515                                                                                         binding-layer174_0)
82516                                                                                        (reference-records173_1
82517                                                                                         reference-records173_0)
82518                                                                                        (scopes172_1
82519                                                                                         scopes172_0))
82520                                                                                    (expand-context/outer1.1
82521                                                                                     inner175_0
82522                                                                                     (root-expand-context/outer-post-expansion
82523                                                                                      expr-ctx_0)
82524                                                                                     (root-expand-context/outer-use-site-scopes
82525                                                                                      expr-ctx_0)
82526                                                                                     (root-expand-context/outer-frame-id
82527                                                                                      expr-ctx_0)
82528                                                                                     (expand-context/outer-context
82529                                                                                      expr-ctx_0)
82530                                                                                     rec-env_0
82531                                                                                     scopes172_1
82532                                                                                     (expand-context/outer-def-ctx-scopes
82533                                                                                      expr-ctx_0)
82534                                                                                     binding-layer174_1
82535                                                                                     reference-records173_1
82536                                                                                     (expand-context/outer-only-immediate?
82537                                                                                      expr-ctx_0)
82538                                                                                     (expand-context/outer-need-eventually-defined
82539                                                                                      expr-ctx_0)
82540                                                                                     (expand-context/outer-current-introduction-scopes
82541                                                                                      expr-ctx_0)
82542                                                                                     (expand-context/outer-current-use-scopes
82543                                                                                      expr-ctx_0)
82544                                                                                     (expand-context/outer-name
82545                                                                                      expr-ctx_0)))))))
82546                                                                          (raise-argument-error
82547                                                                           'struct-copy
82548                                                                           "expand-context/outer?"
82549                                                                           expr-ctx_0))))
82550                                                                   (let ((letrec-values-id_0
82551                                                                          (if (not
82552                                                                               (begin-unsafe
82553                                                                                (expand-context/inner-to-parsed?
82554                                                                                 (root-expand-context/outer-inner
82555                                                                                  ctx_0))))
82556                                                                            (if syntaxes?2_0
82557                                                                              (core-id
82558                                                                               'letrec-values
82559                                                                               phase_0)
82560                                                                              let-values112_0)
82561                                                                            #f)))
82562                                                                     (let ((rebuild-s_0
82563                                                                            (keep-as-needed.1
82564                                                                             #f
82565                                                                             #t
82566                                                                             #f
82567                                                                             ctx_0
82568                                                                             s_0)))
82569                                                                       (let ((val-name-idss_0
82570                                                                              (if (begin-unsafe
82571                                                                                   (expand-context/inner-to-parsed?
82572                                                                                    (root-expand-context/outer-inner
82573                                                                                     ctx_0)))
82574                                                                                (reverse$1
82575                                                                                 (begin
82576                                                                                   (letrec*
82577                                                                                    ((for-loop_0
82578                                                                                      (|#%name|
82579                                                                                       for-loop
82580                                                                                       (lambda (fold-var_0
82581                                                                                                lst_0)
82582                                                                                         (begin
82583                                                                                           (if (pair?
82584                                                                                                lst_0)
82585                                                                                             (let ((val-ids_0
82586                                                                                                    (unsafe-car
82587                                                                                                     lst_0)))
82588                                                                                               (let ((rest_0
82589                                                                                                      (unsafe-cdr
82590                                                                                                       lst_0)))
82591                                                                                                 (let ((fold-var_1
82592                                                                                                        (let ((fold-var_1
82593                                                                                                               (cons
82594                                                                                                                (reverse$1
82595                                                                                                                 (begin
82596                                                                                                                   (letrec*
82597                                                                                                                    ((for-loop_1
82598                                                                                                                      (|#%name|
82599                                                                                                                       for-loop
82600                                                                                                                       (lambda (fold-var_1
82601                                                                                                                                lst_1)
82602                                                                                                                         (begin
82603                                                                                                                           (if (pair?
82604                                                                                                                                lst_1)
82605                                                                                                                             (let ((val-id_0
82606                                                                                                                                    (unsafe-car
82607                                                                                                                                     lst_1)))
82608                                                                                                                               (let ((rest_1
82609                                                                                                                                      (unsafe-cdr
82610                                                                                                                                       lst_1)))
82611                                                                                                                                 (let ((fold-var_2
82612                                                                                                                                        (let ((fold-var_2
82613                                                                                                                                               (cons
82614                                                                                                                                                (datum->syntax$1
82615                                                                                                                                                 #f
82616                                                                                                                                                 (syntax-e$1
82617                                                                                                                                                  val-id_0)
82618                                                                                                                                                 val-id_0
82619                                                                                                                                                 val-id_0)
82620                                                                                                                                                fold-var_1)))
82621                                                                                                                                          (values
82622                                                                                                                                           fold-var_2))))
82623                                                                                                                                   (for-loop_1
82624                                                                                                                                    fold-var_2
82625                                                                                                                                    rest_1))))
82626                                                                                                                             fold-var_1))))))
82627                                                                                                                    (for-loop_1
82628                                                                                                                     null
82629                                                                                                                     val-ids_0))))
82630                                                                                                                fold-var_0)))
82631                                                                                                          (values
82632                                                                                                           fold-var_1))))
82633                                                                                                   (for-loop_0
82634                                                                                                    fold-var_1
82635                                                                                                    rest_0))))
82636                                                                                             fold-var_0))))))
82637                                                                                    (for-loop_0
82638                                                                                     null
82639                                                                                     val-idss_0))))
82640                                                                                val-idss_0)))
82641                                                                         (let ((get-body_0
82642                                                                                (|#%name|
82643                                                                                 get-body
82644                                                                                 (lambda ()
82645                                                                                   (begin
82646                                                                                     (if (begin-unsafe
82647                                                                                          (expand-context/inner-parsing-expanded?
82648                                                                                           (root-expand-context/outer-inner
82649                                                                                            ctx_0)))
82650                                                                                       (reverse$1
82651                                                                                        (begin
82652                                                                                          (letrec*
82653                                                                                           ((for-loop_0
82654                                                                                             (|#%name|
82655                                                                                              for-loop
82656                                                                                              (lambda (fold-var_0
82657                                                                                                       lst_0)
82658                                                                                                (begin
82659                                                                                                  (if (pair?
82660                                                                                                       lst_0)
82661                                                                                                    (let ((body_0
82662                                                                                                           (unsafe-car
82663                                                                                                            lst_0)))
82664                                                                                                      (let ((rest_0
82665                                                                                                             (unsafe-cdr
82666                                                                                                              lst_0)))
82667                                                                                                        (let ((fold-var_1
82668                                                                                                               (let ((fold-var_1
82669                                                                                                                      (cons
82670                                                                                                                       (expand.1
82671                                                                                                                        #f
82672                                                                                                                        #f
82673                                                                                                                        body_0
82674                                                                                                                        rec-ctx_0)
82675                                                                                                                       fold-var_0)))
82676                                                                                                                 (values
82677                                                                                                                  fold-var_1))))
82678                                                                                                          (for-loop_0
82679                                                                                                           fold-var_1
82680                                                                                                           rest_0))))
82681                                                                                                    fold-var_0))))))
82682                                                                                           (for-loop_0
82683                                                                                            null
82684                                                                                            bodys_0))))
82685                                                                                       (let ((body-ctx_0
82686                                                                                              (if (expand-context/outer?
82687                                                                                                   rec-ctx_0)
82688                                                                                                (let ((inner185_0
82689                                                                                                       (root-expand-context/outer-inner
82690                                                                                                        rec-ctx_0)))
82691                                                                                                  (expand-context/outer1.1
82692                                                                                                   inner185_0
82693                                                                                                   (root-expand-context/outer-post-expansion
82694                                                                                                    rec-ctx_0)
82695                                                                                                   (root-expand-context/outer-use-site-scopes
82696                                                                                                    rec-ctx_0)
82697                                                                                                   (root-expand-context/outer-frame-id
82698                                                                                                    rec-ctx_0)
82699                                                                                                   (expand-context/outer-context
82700                                                                                                    rec-ctx_0)
82701                                                                                                   (expand-context/outer-env
82702                                                                                                    rec-ctx_0)
82703                                                                                                   (expand-context/outer-scopes
82704                                                                                                    rec-ctx_0)
82705                                                                                                   (expand-context/outer-def-ctx-scopes
82706                                                                                                    rec-ctx_0)
82707                                                                                                   (expand-context/outer-binding-layer
82708                                                                                                    rec-ctx_0)
82709                                                                                                   orig-rrs_0
82710                                                                                                   (expand-context/outer-only-immediate?
82711                                                                                                    rec-ctx_0)
82712                                                                                                   (expand-context/outer-need-eventually-defined
82713                                                                                                    rec-ctx_0)
82714                                                                                                   (expand-context/outer-current-introduction-scopes
82715                                                                                                    rec-ctx_0)
82716                                                                                                   (expand-context/outer-current-use-scopes
82717                                                                                                    rec-ctx_0)
82718                                                                                                   (expand-context/outer-name
82719                                                                                                    rec-ctx_0)))
82720                                                                                                (raise-argument-error
82721                                                                                                 'struct-copy
82722                                                                                                 "expand-context/outer?"
82723                                                                                                 rec-ctx_0))))
82724                                                                                         (let ((temp182_0
82725                                                                                                (as-tail-context.1
82726                                                                                                 ctx_0
82727                                                                                                 body-ctx_0)))
82728                                                                                           (expand-body.1
82729                                                                                            rebuild-s_0
82730                                                                                            #f
82731                                                                                            bodys_0
82732                                                                                            temp182_0)))))))))
82733                                                                           (let ((result-s_0
82734                                                                                  (if (not
82735                                                                                       split-by-reference?4_0)
82736                                                                                    (let ((clauses_0
82737                                                                                           (reverse$1
82738                                                                                            (begin
82739                                                                                              (letrec*
82740                                                                                               ((for-loop_0
82741                                                                                                 (|#%name|
82742                                                                                                  for-loop
82743                                                                                                  (lambda (fold-var_0
82744                                                                                                           lst_0
82745                                                                                                           lst_1
82746                                                                                                           lst_2
82747                                                                                                           lst_3)
82748                                                                                                    (begin
82749                                                                                                      (if (if (pair?
82750                                                                                                               lst_0)
82751                                                                                                            (if (pair?
82752                                                                                                                 lst_1)
82753                                                                                                              (if (pair?
82754                                                                                                                   lst_2)
82755                                                                                                                (pair?
82756                                                                                                                 lst_3)
82757                                                                                                                #f)
82758                                                                                                              #f)
82759                                                                                                            #f)
82760                                                                                                        (let ((ids_0
82761                                                                                                               (unsafe-car
82762                                                                                                                lst_0)))
82763                                                                                                          (let ((rest_0
82764                                                                                                                 (unsafe-cdr
82765                                                                                                                  lst_0)))
82766                                                                                                            (let ((keys_0
82767                                                                                                                   (unsafe-car
82768                                                                                                                    lst_1)))
82769                                                                                                              (let ((rest_1
82770                                                                                                                     (unsafe-cdr
82771                                                                                                                      lst_1)))
82772                                                                                                                (let ((rhs_0
82773                                                                                                                       (unsafe-car
82774                                                                                                                        lst_2)))
82775                                                                                                                  (let ((rest_2
82776                                                                                                                         (unsafe-cdr
82777                                                                                                                          lst_2)))
82778                                                                                                                    (let ((clause_0
82779                                                                                                                           (unsafe-car
82780                                                                                                                            lst_3)))
82781                                                                                                                      (let ((rest_3
82782                                                                                                                             (unsafe-cdr
82783                                                                                                                              lst_3)))
82784                                                                                                                        (let ((fold-var_1
82785                                                                                                                               (let ((fold-var_1
82786                                                                                                                                      (cons
82787                                                                                                                                       (begin
82788                                                                                                                                         (let ((obs_0
82789                                                                                                                                                (begin-unsafe
82790                                                                                                                                                 (expand-context/inner-observer
82791                                                                                                                                                  (root-expand-context/outer-inner
82792                                                                                                                                                   ctx_0)))))
82793                                                                                                                                           (if obs_0
82794                                                                                                                                             (call-expand-observe
82795                                                                                                                                              obs_0
82796                                                                                                                                              'next)
82797                                                                                                                                             (void)))
82798                                                                                                                                         (let ((exp-rhs_0
82799                                                                                                                                                (let ((temp189_0
82800                                                                                                                                                       (if rec?3_0
82801                                                                                                                                                         (as-named-context
82802                                                                                                                                                          rec-ctx_0
82803                                                                                                                                                          ids_0)
82804                                                                                                                                                         (as-named-context
82805                                                                                                                                                          expr-ctx_0
82806                                                                                                                                                          ids_0))))
82807                                                                                                                                                  (expand.1
82808                                                                                                                                                   #f
82809                                                                                                                                                   #f
82810                                                                                                                                                   rhs_0
82811                                                                                                                                                   temp189_0))))
82812                                                                                                                                           (if (begin-unsafe
82813                                                                                                                                                (expand-context/inner-to-parsed?
82814                                                                                                                                                 (root-expand-context/outer-inner
82815                                                                                                                                                  ctx_0)))
82816                                                                                                                                             (list
82817                                                                                                                                              keys_0
82818                                                                                                                                              exp-rhs_0)
82819                                                                                                                                             (datum->syntax$1
82820                                                                                                                                              #f
82821                                                                                                                                              (list
82822                                                                                                                                               ids_0
82823                                                                                                                                               exp-rhs_0)
82824                                                                                                                                              clause_0
82825                                                                                                                                              clause_0))))
82826                                                                                                                                       fold-var_0)))
82827                                                                                                                                 (values
82828                                                                                                                                  fold-var_1))))
82829                                                                                                                          (for-loop_0
82830                                                                                                                           fold-var_1
82831                                                                                                                           rest_0
82832                                                                                                                           rest_1
82833                                                                                                                           rest_2
82834                                                                                                                           rest_3))))))))))
82835                                                                                                        fold-var_0))))))
82836                                                                                               (for-loop_0
82837                                                                                                null
82838                                                                                                val-name-idss_0
82839                                                                                                val-keyss_0
82840                                                                                                val-rhss_0
82841                                                                                                val-clauses_0))))))
82842                                                                                      (let ((exp-body_0
82843                                                                                             (get-body_0)))
82844                                                                                        (begin
82845                                                                                          (if frame-id_0
82846                                                                                            (reference-record-clear!
82847                                                                                             frame-id_0)
82848                                                                                            (void))
82849                                                                                          (if (begin-unsafe
82850                                                                                               (expand-context/inner-to-parsed?
82851                                                                                                (root-expand-context/outer-inner
82852                                                                                                 ctx_0)))
82853                                                                                            (if rec?3_0
82854                                                                                              (parsed-letrec-values18.1
82855                                                                                               rebuild-s_0
82856                                                                                               val-name-idss_0
82857                                                                                               clauses_0
82858                                                                                               exp-body_0)
82859                                                                                              (parsed-let-values17.1
82860                                                                                               rebuild-s_0
82861                                                                                               val-name-idss_0
82862                                                                                               clauses_0
82863                                                                                               exp-body_0))
82864                                                                                            (let ((temp191_0
82865                                                                                                   (list*
82866                                                                                                    letrec-values-id_0
82867                                                                                                    clauses_0
82868                                                                                                    exp-body_0)))
82869                                                                                              (rebuild.1
82870                                                                                               #t
82871                                                                                               rebuild-s_0
82872                                                                                               temp191_0))))))
82873                                                                                    (expand-and-split-bindings-by-reference.1
82874                                                                                     rec-ctx_0
82875                                                                                     frame-id_0
82876                                                                                     get-body_0
82877                                                                                     syntaxes?2_0
82878                                                                                     rebuild-s_0
82879                                                                                     #t
82880                                                                                     #t
82881                                                                                     val-idss_0
82882                                                                                     val-keyss_0
82883                                                                                     val-rhss_0
82884                                                                                     val-clauses_0))))
82885                                                                             (if (begin-unsafe
82886                                                                                  (expand-context/inner-to-parsed?
82887                                                                                   (root-expand-context/outer-inner
82888                                                                                    ctx_0)))
82889                                                                               result-s_0
82890                                                                               (attach-disappeared-transformer-bindings
82891                                                                                result-s_0
82892                                                                                trans-idss_0)))))))))))))))))))))))))))))))))
82893                (args (raise-binding-result-arity-error 5 args)))))
82894             (args (raise-binding-result-arity-error 7 args))))))))))
82895(define effect_1922
82896  (begin
82897    (void
82898     (add-core-form!*
82899      'let-values
82900      (make-let-values-form.1 'prim-let-values #f #f #f)))
82901    (void)))
82902(define effect_2915
82903  (begin
82904    (void
82905     (add-core-form!*
82906      'letrec-values
82907      (make-let-values-form.1 'prim-letrec-values #t #f #f)))
82908    (void)))
82909(define effect_2432
82910  (begin
82911    (void
82912     (add-core-form!*
82913      'letrec-syntaxes+values
82914      (make-let-values-form.1 'prim-letrec-syntaxes+values #t #t #t)))
82915    (void)))
82916(define effect_2415
82917  (begin
82918    (void
82919     (add-core-form!*
82920      '|#%stratified-body|
82921      (lambda (s_0 ctx_0)
82922        (begin
82923          (let ((obs_0
82924                 (begin-unsafe
82925                  (expand-context/inner-observer
82926                   (root-expand-context/outer-inner ctx_0)))))
82927            (if obs_0
82928              (call-expand-observe obs_0 '|prim-#%stratified| s_0)
82929              (void)))
82930          (call-with-values
82931           (lambda ()
82932             (call-with-values
82933              (lambda ()
82934                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
82935                  (if (pair? s_1)
82936                    (let ((|#%stratified-body212_0|
82937                           (let ((s_2 (car s_1))) s_2)))
82938                      (let ((body213_0
82939                             (let ((s_2 (cdr s_1)))
82940                               (let ((s_3
82941                                      (if (syntax?$1 s_2)
82942                                        (syntax-e$1 s_2)
82943                                        s_2)))
82944                                 (let ((flat-s_0 (to-syntax-list.1 s_3)))
82945                                   (if (not flat-s_0)
82946                                     (raise-syntax-error$1 #f "bad syntax" s_0)
82947                                     (if (null? flat-s_0)
82948                                       (raise-syntax-error$1
82949                                        #f
82950                                        "bad syntax"
82951                                        s_0)
82952                                       flat-s_0)))))))
82953                        (let ((|#%stratified-body212_1|
82954                               |#%stratified-body212_0|))
82955                          (values |#%stratified-body212_1| body213_0))))
82956                    (raise-syntax-error$1 #f "bad syntax" s_0))))
82957              (case-lambda
82958               ((|#%stratified-body210_0| body211_0)
82959                (values #t |#%stratified-body210_0| body211_0))
82960               (args (raise-binding-result-arity-error 2 args)))))
82961           (case-lambda
82962            ((ok?_0 |#%stratified-body210_0| body211_0)
82963             (let ((rebuild-s_0 (keep-as-needed.1 #f #t #f ctx_0 s_0)))
82964               (let ((exp-body_0
82965                      (expand-body.1 rebuild-s_0 #t body211_0 ctx_0)))
82966                 (if (begin-unsafe
82967                      (expand-context/inner-to-parsed?
82968                       (root-expand-context/outer-inner ctx_0)))
82969                   (parsed-begin12.1 rebuild-s_0 exp-body_0)
82970                   (let ((temp222_0
82971                          (if (null? (cdr exp-body_0))
82972                            (car exp-body_0)
82973                            (list*
82974                             (core-id
82975                              'begin
82976                              (begin-unsafe
82977                               (expand-context/inner-phase
82978                                (root-expand-context/outer-inner ctx_0))))
82979                             exp-body_0))))
82980                     (rebuild.1 #t rebuild-s_0 temp222_0))))))
82981            (args (raise-binding-result-arity-error 3 args))))))))
82982    (void)))
82983(define effect_2717
82984  (begin
82985    (void
82986     (add-core-form!*
82987      '|#%datum|
82988      (lambda (s_0 ctx_0)
82989        (begin
82990          (let ((obs_0
82991                 (begin-unsafe
82992                  (expand-context/inner-observer
82993                   (root-expand-context/outer-inner ctx_0)))))
82994            (if obs_0 (call-expand-observe obs_0 '|prim-#%datum| s_0) (void)))
82995          (call-with-values
82996           (lambda ()
82997             (call-with-values
82998              (lambda ()
82999                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83000                  (if (pair? s_1)
83001                    (let ((|#%datum225_0| (let ((s_2 (car s_1))) s_2)))
83002                      (let ((datum226_0 (let ((s_2 (cdr s_1))) s_2)))
83003                        (let ((|#%datum225_1| |#%datum225_0|))
83004                          (values |#%datum225_1| datum226_0))))
83005                    (raise-syntax-error$1 #f "bad syntax" s_0))))
83006              (case-lambda
83007               ((|#%datum223_0| datum224_0)
83008                (values #t |#%datum223_0| datum224_0))
83009               (args (raise-binding-result-arity-error 2 args)))))
83010           (case-lambda
83011            ((ok?_0 |#%datum223_0| datum224_0)
83012             (begin
83013               (if (if (syntax?$1 datum224_0)
83014                     (keyword? (syntax-e$1 datum224_0))
83015                     #f)
83016                 (raise-syntax-error$1
83017                  '|#%datum|
83018                  "keyword misused as an expression"
83019                  #f
83020                  datum224_0)
83021                 (void))
83022               (let ((phase_0
83023                      (begin-unsafe
83024                       (expand-context/inner-phase
83025                        (root-expand-context/outer-inner ctx_0)))))
83026                 (if (if (begin-unsafe
83027                          (expand-context/inner-to-parsed?
83028                           (root-expand-context/outer-inner ctx_0)))
83029                       (let ((fs_0
83030                              (begin-unsafe
83031                               (expand-context/inner-stops
83032                                (root-expand-context/outer-inner ctx_0)))))
83033                         (begin-unsafe (eq? fs_0 empty-free-id-set)))
83034                       #f)
83035                   (parsed-quote14.1
83036                    (begin-unsafe #f)
83037                    (syntax->datum$1 datum224_0))
83038                   (syntax-track-origin$1
83039                    (let ((temp228_0
83040                           (list (core-id 'quote phase_0) datum224_0)))
83041                      (rebuild.1 #f s_0 temp228_0))
83042                    s_0
83043                    |#%datum223_0|)))))
83044            (args (raise-binding-result-arity-error 3 args))))))))
83045    (void)))
83046(define effect_2574
83047  (begin
83048    (void
83049     (add-core-form!*
83050      '|#%app|
83051      (lambda (s_0 ctx_0)
83052        (begin
83053          (let ((obs_0
83054                 (begin-unsafe
83055                  (expand-context/inner-observer
83056                   (root-expand-context/outer-inner ctx_0)))))
83057            (if obs_0 (call-expand-observe obs_0 '|prim-#%app| s_0) (void)))
83058          (call-with-values
83059           (lambda ()
83060             (call-with-values
83061              (lambda ()
83062                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83063                  (if (pair? s_1)
83064                    (let ((|#%app232_0| (let ((s_2 (car s_1))) s_2)))
83065                      (let ((e233_0
83066                             (let ((s_2 (cdr s_1)))
83067                               (let ((s_3
83068                                      (if (syntax?$1 s_2)
83069                                        (syntax-e$1 s_2)
83070                                        s_2)))
83071                                 (let ((flat-s_0 (to-syntax-list.1 s_3)))
83072                                   (if (not flat-s_0)
83073                                     (raise-syntax-error$1 #f "bad syntax" s_0)
83074                                     flat-s_0))))))
83075                        (let ((|#%app232_1| |#%app232_0|))
83076                          (values |#%app232_1| e233_0))))
83077                    (raise-syntax-error$1 #f "bad syntax" s_0))))
83078              (case-lambda
83079               ((|#%app230_0| e231_0) (values #t |#%app230_0| e231_0))
83080               (args (raise-binding-result-arity-error 2 args)))))
83081           (case-lambda
83082            ((ok?_0 |#%app230_0| e231_0)
83083             (if (null? e231_0)
83084               (let ((phase_0
83085                      (begin-unsafe
83086                       (expand-context/inner-phase
83087                        (root-expand-context/outer-inner ctx_0)))))
83088                 (if (begin-unsafe
83089                      (expand-context/inner-to-parsed?
83090                       (root-expand-context/outer-inner ctx_0)))
83091                   (parsed-quote14.1 (begin-unsafe #f) null)
83092                   (let ((temp235_0 (list (core-id 'quote phase_0) null)))
83093                     (rebuild.1 #t s_0 temp235_0))))
83094               (let ((keep-for-parsed?_0 keep-source-locations?))
83095                 (let ((rebuild-s_0
83096                        (keep-as-needed.1 #f #f keep-for-parsed?_0 ctx_0 s_0)))
83097                   (let ((prefixless_0 (cdr (syntax-e$1 s_0))))
83098                     (let ((rebuild-prefixless_0
83099                            (if (syntax?$1 prefixless_0)
83100                              (keep-as-needed.1
83101                               #f
83102                               #f
83103                               keep-for-parsed?_0
83104                               ctx_0
83105                               prefixless_0)
83106                              #f)))
83107                       (let ((expr-ctx_0 (as-expression-context ctx_0)))
83108                         (begin
83109                           (let ((obs_0
83110                                  (begin-unsafe
83111                                   (expand-context/inner-observer
83112                                    (root-expand-context/outer-inner
83113                                     expr-ctx_0)))))
83114                             (if obs_0
83115                               (call-expand-observe obs_0 'next)
83116                               (void)))
83117                           (let ((rest-es_0 (cdr e231_0)))
83118                             (let ((exp-rator_0
83119                                    (let ((temp242_0 (car e231_0)))
83120                                      (expand.1 #f #f temp242_0 expr-ctx_0))))
83121                               (let ((exp-es_0
83122                                      (reverse$1
83123                                       (begin
83124                                         (letrec*
83125                                          ((for-loop_0
83126                                            (|#%name|
83127                                             for-loop
83128                                             (lambda (fold-var_0 lst_0)
83129                                               (begin
83130                                                 (if (pair? lst_0)
83131                                                   (let ((e_0
83132                                                          (unsafe-car lst_0)))
83133                                                     (let ((rest_0
83134                                                            (unsafe-cdr
83135                                                             lst_0)))
83136                                                       (let ((fold-var_1
83137                                                              (let ((fold-var_1
83138                                                                     (cons
83139                                                                      (begin
83140                                                                        (let ((obs_0
83141                                                                               (begin-unsafe
83142                                                                                (expand-context/inner-observer
83143                                                                                 (root-expand-context/outer-inner
83144                                                                                  expr-ctx_0)))))
83145                                                                          (if obs_0
83146                                                                            (call-expand-observe
83147                                                                             obs_0
83148                                                                             'next)
83149                                                                            (void)))
83150                                                                        (expand.1
83151                                                                         #f
83152                                                                         #f
83153                                                                         e_0
83154                                                                         expr-ctx_0))
83155                                                                      fold-var_0)))
83156                                                                (values
83157                                                                 fold-var_1))))
83158                                                         (for-loop_0
83159                                                          fold-var_1
83160                                                          rest_0))))
83161                                                   fold-var_0))))))
83162                                          (for-loop_0 null rest-es_0))))))
83163                                 (if (begin-unsafe
83164                                      (expand-context/inner-to-parsed?
83165                                       (root-expand-context/outer-inner
83166                                        ctx_0)))
83167                                   (parsed-app7.1
83168                                    (if rebuild-prefixless_0
83169                                      rebuild-prefixless_0
83170                                      rebuild-s_0)
83171                                    exp-rator_0
83172                                    exp-es_0)
83173                                   (let ((exp-es_1
83174                                          (cons exp-rator_0 exp-es_0)))
83175                                     (let ((es_0
83176                                            (if rebuild-prefixless_0
83177                                              (rebuild.1
83178                                               #t
83179                                               rebuild-prefixless_0
83180                                               exp-es_1)
83181                                              exp-es_1)))
83182                                       (let ((temp247_0
83183                                              (cons |#%app230_0| es_0)))
83184                                         (rebuild.1
83185                                          #t
83186                                          rebuild-s_0
83187                                          temp247_0))))))))))))))))
83188            (args (raise-binding-result-arity-error 3 args))))))))
83189    (void)))
83190(define effect_2803
83191  (begin
83192    (void
83193     (add-core-form!*
83194      'quote
83195      (lambda (s_0 ctx_0)
83196        (begin
83197          (let ((obs_0
83198                 (begin-unsafe
83199                  (expand-context/inner-observer
83200                   (root-expand-context/outer-inner ctx_0)))))
83201            (if obs_0 (call-expand-observe obs_0 'prim-quote #f) (void)))
83202          (call-with-values
83203           (lambda ()
83204             (call-with-values
83205              (lambda ()
83206                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83207                  (if (pair? s_1)
83208                    (let ((quote252_0 (let ((s_2 (car s_1))) s_2)))
83209                      (let ((datum253_0
83210                             (let ((s_2 (cdr s_1)))
83211                               (let ((s_3
83212                                      (if (syntax?$1 s_2)
83213                                        (syntax-e$1 s_2)
83214                                        s_2)))
83215                                 (if (pair? s_3)
83216                                   (let ((datum254_0
83217                                          (let ((s_4 (car s_3))) s_4)))
83218                                     (call-with-values
83219                                      (lambda ()
83220                                        (let ((s_4 (cdr s_3)))
83221                                          (let ((s_5
83222                                                 (if (syntax?$1 s_4)
83223                                                   (syntax-e$1 s_4)
83224                                                   s_4)))
83225                                            (if (null? s_5)
83226                                              (values)
83227                                              (raise-syntax-error$1
83228                                               #f
83229                                               "bad syntax"
83230                                               s_0)))))
83231                                      (case-lambda
83232                                       (()
83233                                        (let ((datum254_1 datum254_0))
83234                                          (values datum254_1)))
83235                                       (args
83236                                        (raise-binding-result-arity-error
83237                                         0
83238                                         args)))))
83239                                   (raise-syntax-error$1
83240                                    #f
83241                                    "bad syntax"
83242                                    s_0))))))
83243                        (let ((quote252_1 quote252_0))
83244                          (values quote252_1 datum253_0))))
83245                    (raise-syntax-error$1 #f "bad syntax" s_0))))
83246              (case-lambda
83247               ((quote250_0 datum251_0) (values #t quote250_0 datum251_0))
83248               (args (raise-binding-result-arity-error 2 args)))))
83249           (case-lambda
83250            ((ok?_0 quote250_0 datum251_0)
83251             (if (begin-unsafe
83252                  (expand-context/inner-to-parsed?
83253                   (root-expand-context/outer-inner ctx_0)))
83254               (parsed-quote14.1
83255                (begin-unsafe #f)
83256                (syntax->datum$1 datum251_0))
83257               s_0))
83258            (args (raise-binding-result-arity-error 3 args))))))))
83259    (void)))
83260(define effect_2401
83261  (begin
83262    (void
83263     (add-core-form!*
83264      'quote-syntax
83265      (lambda (s_0 ctx_0)
83266        (begin
83267          (let ((obs_0
83268                 (begin-unsafe
83269                  (expand-context/inner-observer
83270                   (root-expand-context/outer-inner ctx_0)))))
83271            (if obs_0
83272              (call-expand-observe obs_0 'prim-quote-syntax s_0)
83273              (void)))
83274          (call-with-values
83275           (lambda ()
83276             (if (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83277                   (if (pair? s_1)
83278                     (if (let ((s_2 (car s_1))) #t)
83279                       (let ((s_2 (cdr s_1)))
83280                         (let ((s_3 (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
83281                           (if (pair? s_3)
83282                             (if (let ((s_4 (car s_3))) #t)
83283                               (let ((s_4 (cdr s_3)))
83284                                 (let ((s_5
83285                                        (if (syntax?$1 s_4)
83286                                          (syntax-e$1 s_4)
83287                                          s_4)))
83288                                   (if (pair? s_5)
83289                                     (if (let ((s_6 (car s_5)))
83290                                           (let ((s_7
83291                                                  (if (syntax?$1 s_6)
83292                                                    (syntax-e$1 s_6)
83293                                                    s_6)))
83294                                             (eq? kw2186 s_7)))
83295                                       (let ((s_6 (cdr s_5)))
83296                                         (let ((s_7
83297                                                (if (syntax?$1 s_6)
83298                                                  (syntax-e$1 s_6)
83299                                                  s_6)))
83300                                           (null? s_7)))
83301                                       #f)
83302                                     #f)))
83303                               #f)
83304                             #f)))
83305                       #f)
83306                     #f))
83307               (call-with-values
83308                (lambda ()
83309                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83310                    (let ((quote-syntax257_0 (let ((s_2 (car s_1))) s_2)))
83311                      (let ((datum258_0
83312                             (let ((s_2 (cdr s_1)))
83313                               (let ((s_3
83314                                      (if (syntax?$1 s_2)
83315                                        (syntax-e$1 s_2)
83316                                        s_2)))
83317                                 (let ((datum259_0
83318                                        (let ((s_4 (car s_3))) s_4)))
83319                                   (call-with-values
83320                                    (lambda ()
83321                                      (let ((s_4 (cdr s_3)))
83322                                        (let ((s_5
83323                                               (if (syntax?$1 s_4)
83324                                                 (syntax-e$1 s_4)
83325                                                 s_4)))
83326                                          (call-with-values
83327                                           (lambda ()
83328                                             (let ((s_6 (car s_5)))
83329                                               (let ((s_7
83330                                                      (if (syntax?$1 s_6)
83331                                                        (syntax-e$1 s_6)
83332                                                        s_6)))
83333                                                 (values))))
83334                                           (case-lambda
83335                                            (()
83336                                             (call-with-values
83337                                              (lambda ()
83338                                                (let ((s_6 (cdr s_5)))
83339                                                  (let ((s_7
83340                                                         (if (syntax?$1 s_6)
83341                                                           (syntax-e$1 s_6)
83342                                                           s_6)))
83343                                                    (values))))
83344                                              (case-lambda
83345                                               (() (let () (values)))
83346                                               (args
83347                                                (raise-binding-result-arity-error
83348                                                 0
83349                                                 args)))))
83350                                            (args
83351                                             (raise-binding-result-arity-error
83352                                              0
83353                                              args)))))))
83354                                    (case-lambda
83355                                     (()
83356                                      (let ((datum259_1 datum259_0))
83357                                        (values datum259_1)))
83358                                     (args
83359                                      (raise-binding-result-arity-error
83360                                       0
83361                                       args)))))))))
83362                        (let ((quote-syntax257_1 quote-syntax257_0))
83363                          (values quote-syntax257_1 datum258_0))))))
83364                (case-lambda
83365                 ((quote-syntax255_0 datum256_0)
83366                  (values #t quote-syntax255_0 datum256_0))
83367                 (args (raise-binding-result-arity-error 2 args))))
83368               (values #f #f #f)))
83369           (case-lambda
83370            ((ok?_0 quote-syntax255_0 datum256_0)
83371             (call-with-values
83372              (lambda ()
83373                (if (if (not ok?_0) #t #f)
83374                  (call-with-values
83375                   (lambda ()
83376                     (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83377                       (if (pair? s_1)
83378                         (let ((quote-syntax262_0 (let ((s_2 (car s_1))) s_2)))
83379                           (let ((datum263_0
83380                                  (let ((s_2 (cdr s_1)))
83381                                    (let ((s_3
83382                                           (if (syntax?$1 s_2)
83383                                             (syntax-e$1 s_2)
83384                                             s_2)))
83385                                      (if (pair? s_3)
83386                                        (let ((datum264_0
83387                                               (let ((s_4 (car s_3))) s_4)))
83388                                          (call-with-values
83389                                           (lambda ()
83390                                             (let ((s_4 (cdr s_3)))
83391                                               (let ((s_5
83392                                                      (if (syntax?$1 s_4)
83393                                                        (syntax-e$1 s_4)
83394                                                        s_4)))
83395                                                 (if (null? s_5)
83396                                                   (values)
83397                                                   (raise-syntax-error$1
83398                                                    #f
83399                                                    "bad syntax"
83400                                                    s_0)))))
83401                                           (case-lambda
83402                                            (()
83403                                             (let ((datum264_1 datum264_0))
83404                                               (values datum264_1)))
83405                                            (args
83406                                             (raise-binding-result-arity-error
83407                                              0
83408                                              args)))))
83409                                        (raise-syntax-error$1
83410                                         #f
83411                                         "bad syntax"
83412                                         s_0))))))
83413                             (let ((quote-syntax262_1 quote-syntax262_0))
83414                               (values quote-syntax262_1 datum263_0))))
83415                         (raise-syntax-error$1 #f "bad syntax" s_0))))
83416                   (case-lambda
83417                    ((quote-syntax260_0 datum261_0)
83418                     (values #t quote-syntax260_0 datum261_0))
83419                    (args (raise-binding-result-arity-error 2 args))))
83420                  (values #f #f #f)))
83421              (case-lambda
83422               ((ok?_1 quote-syntax260_0 datum261_0)
83423                (if ok?_0
83424                  (begin
83425                    (reference-records-all-used!
83426                     (begin-unsafe
83427                      (expand-context/outer-reference-records ctx_0)))
83428                    (call-with-values
83429                     (lambda ()
83430                       (call-with-values
83431                        (lambda ()
83432                          (let ((s_1
83433                                 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83434                            (if (pair? s_1)
83435                              (let ((_0 (let ((s_2 (car s_1))) s_2)))
83436                                (call-with-values
83437                                 (lambda ()
83438                                   (let ((s_2 (cdr s_1)))
83439                                     (let ((s_3
83440                                            (if (syntax?$1 s_2)
83441                                              (syntax-e$1 s_2)
83442                                              s_2)))
83443                                       (if (pair? s_3)
83444                                         (let ((_1
83445                                                (let ((s_4 (car s_3))) s_4)))
83446                                           (let ((kw272_0
83447                                                  (let ((s_4 (cdr s_3)))
83448                                                    (let ((s_5
83449                                                           (if (syntax?$1 s_4)
83450                                                             (syntax-e$1 s_4)
83451                                                             s_4)))
83452                                                      (if (pair? s_5)
83453                                                        (let ((kw273_0
83454                                                               (let ((s_6
83455                                                                      (car
83456                                                                       s_5)))
83457                                                                 s_6)))
83458                                                          (call-with-values
83459                                                           (lambda ()
83460                                                             (let ((s_6
83461                                                                    (cdr s_5)))
83462                                                               (let ((s_7
83463                                                                      (if (syntax?$1
83464                                                                           s_6)
83465                                                                        (syntax-e$1
83466                                                                         s_6)
83467                                                                        s_6)))
83468                                                                 (if (null?
83469                                                                      s_7)
83470                                                                   (values)
83471                                                                   (raise-syntax-error$1
83472                                                                    #f
83473                                                                    "bad syntax"
83474                                                                    s_0)))))
83475                                                           (case-lambda
83476                                                            (()
83477                                                             (let ((kw273_1
83478                                                                    kw273_0))
83479                                                               (values
83480                                                                kw273_1)))
83481                                                            (args
83482                                                             (raise-binding-result-arity-error
83483                                                              0
83484                                                              args)))))
83485                                                        (raise-syntax-error$1
83486                                                         #f
83487                                                         "bad syntax"
83488                                                         s_0))))))
83489                                             (let ((_2 _1))
83490                                               (values _2 kw272_0))))
83491                                         (raise-syntax-error$1
83492                                          #f
83493                                          "bad syntax"
83494                                          s_0)))))
83495                                 (case-lambda
83496                                  ((_1 kw270_0)
83497                                   (let ((_2 _0)) (values _2 _1 kw270_0)))
83498                                  (args
83499                                   (raise-binding-result-arity-error
83500                                    2
83501                                    args)))))
83502                              (raise-syntax-error$1 #f "bad syntax" s_0))))
83503                        (case-lambda
83504                         ((_0 _1 kw267_0) (values #t _0 _1 kw267_0))
83505                         (args (raise-binding-result-arity-error 3 args)))))
83506                     (case-lambda
83507                      ((ok?_2 _0 _1 kw267_0)
83508                       (if (begin-unsafe
83509                            (expand-context/inner-to-parsed?
83510                             (root-expand-context/outer-inner ctx_0)))
83511                         (parsed-quote-syntax15.1 (begin-unsafe #f) datum256_0)
83512                         (let ((temp275_0
83513                                (list quote-syntax255_0 datum256_0 kw267_0)))
83514                           (rebuild.1 #t s_0 temp275_0))))
83515                      (args (raise-binding-result-arity-error 4 args)))))
83516                  (let ((use-site-scopes_0
83517                         (begin-unsafe
83518                          (root-expand-context/outer-use-site-scopes ctx_0))))
83519                    (let ((datum-s_0
83520                           (let ((app_0
83521                                  (remove-scopes
83522                                   datum261_0
83523                                   (begin-unsafe
83524                                    (expand-context/outer-scopes ctx_0)))))
83525                             (remove-scopes
83526                              app_0
83527                              (if use-site-scopes_0
83528                                (unbox use-site-scopes_0)
83529                                '())))))
83530                      (if (if (begin-unsafe
83531                               (expand-context/inner-to-parsed?
83532                                (root-expand-context/outer-inner ctx_0)))
83533                            (let ((fs_0
83534                                   (begin-unsafe
83535                                    (expand-context/inner-stops
83536                                     (root-expand-context/outer-inner
83537                                      ctx_0)))))
83538                              (begin-unsafe (eq? fs_0 empty-free-id-set)))
83539                            #f)
83540                        (parsed-quote-syntax15.1 (begin-unsafe #f) datum-s_0)
83541                        (let ((temp277_0 (list quote-syntax260_0 datum-s_0)))
83542                          (rebuild.1 #t s_0 temp277_0)))))))
83543               (args (raise-binding-result-arity-error 3 args)))))
83544            (args (raise-binding-result-arity-error 3 args))))))))
83545    (void)))
83546(define effect_2524
83547  (begin
83548    (void
83549     (add-core-form!*
83550      'if
83551      (lambda (s_0 ctx_0)
83552        (begin
83553          (let ((obs_0
83554                 (begin-unsafe
83555                  (expand-context/inner-observer
83556                   (root-expand-context/outer-inner ctx_0)))))
83557            (if obs_0 (call-expand-observe obs_0 'prim-if s_0) (void)))
83558          (call-with-values
83559           (lambda ()
83560             (if (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83561                   (if (pair? s_1)
83562                     (if (let ((s_2 (car s_1))) #t)
83563                       (let ((s_2 (cdr s_1)))
83564                         (let ((s_3 (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
83565                           (if (pair? s_3)
83566                             (if (let ((s_4 (car s_3))) #t)
83567                               (let ((s_4 (cdr s_3)))
83568                                 (let ((s_5
83569                                        (if (syntax?$1 s_4)
83570                                          (syntax-e$1 s_4)
83571                                          s_4)))
83572                                   (if (pair? s_5)
83573                                     (if (let ((s_6 (car s_5))) #t)
83574                                       (let ((s_6 (cdr s_5)))
83575                                         (let ((s_7
83576                                                (if (syntax?$1 s_6)
83577                                                  (syntax-e$1 s_6)
83578                                                  s_6)))
83579                                           (null? s_7)))
83580                                       #f)
83581                                     #f)))
83582                               #f)
83583                             #f)))
83584                       #f)
83585                     #f))
83586               (call-with-values
83587                (lambda ()
83588                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83589                    (let ((_0 (let ((s_2 (car s_1))) s_2)))
83590                      (call-with-values
83591                       (lambda ()
83592                         (let ((s_2 (cdr s_1)))
83593                           (let ((s_3
83594                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
83595                             (let ((_1 (let ((s_4 (car s_3))) s_4)))
83596                               (let ((_2
83597                                      (let ((s_4 (cdr s_3)))
83598                                        (let ((s_5
83599                                               (if (syntax?$1 s_4)
83600                                                 (syntax-e$1 s_4)
83601                                                 s_4)))
83602                                          (let ((_2
83603                                                 (let ((s_6 (car s_5))) s_6)))
83604                                            (call-with-values
83605                                             (lambda ()
83606                                               (let ((s_6 (cdr s_5)))
83607                                                 (let ((s_7
83608                                                        (if (syntax?$1 s_6)
83609                                                          (syntax-e$1 s_6)
83610                                                          s_6)))
83611                                                   (values))))
83612                                             (case-lambda
83613                                              (() (let ((_3 _2)) (values _3)))
83614                                              (args
83615                                               (raise-binding-result-arity-error
83616                                                0
83617                                                args)))))))))
83618                                 (let ((_3 _1)) (values _3 _2)))))))
83619                       (case-lambda
83620                        ((_1 _2) (let ((_3 _0)) (values _3 _1 _2)))
83621                        (args (raise-binding-result-arity-error 2 args)))))))
83622                (case-lambda
83623                 ((_0 _1 _2) (values #t _0 _1 _2))
83624                 (args (raise-binding-result-arity-error 3 args))))
83625               (values #f #f #f #f)))
83626           (case-lambda
83627            ((ok?_0 _0 _1 _2)
83628             (begin
83629               (if ok?_0
83630                 (raise-syntax-error$1 #f "missing an \"else\" expression" s_0)
83631                 (void))
83632               (call-with-values
83633                (lambda ()
83634                  (call-with-values
83635                   (lambda ()
83636                     (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83637                       (if (pair? s_1)
83638                         (let ((if291_0 (let ((s_2 (car s_1))) s_2)))
83639                           (call-with-values
83640                            (lambda ()
83641                              (let ((s_2 (cdr s_1)))
83642                                (let ((s_3
83643                                       (if (syntax?$1 s_2)
83644                                         (syntax-e$1 s_2)
83645                                         s_2)))
83646                                  (if (pair? s_3)
83647                                    (let ((tst295_0
83648                                           (let ((s_4 (car s_3))) s_4)))
83649                                      (call-with-values
83650                                       (lambda ()
83651                                         (let ((s_4 (cdr s_3)))
83652                                           (let ((s_5
83653                                                  (if (syntax?$1 s_4)
83654                                                    (syntax-e$1 s_4)
83655                                                    s_4)))
83656                                             (if (pair? s_5)
83657                                               (let ((thn298_0
83658                                                      (let ((s_6 (car s_5)))
83659                                                        s_6)))
83660                                                 (let ((els299_0
83661                                                        (let ((s_6 (cdr s_5)))
83662                                                          (let ((s_7
83663                                                                 (if (syntax?$1
83664                                                                      s_6)
83665                                                                   (syntax-e$1
83666                                                                    s_6)
83667                                                                   s_6)))
83668                                                            (if (pair? s_7)
83669                                                              (let ((els300_0
83670                                                                     (let ((s_8
83671                                                                            (car
83672                                                                             s_7)))
83673                                                                       s_8)))
83674                                                                (call-with-values
83675                                                                 (lambda ()
83676                                                                   (let ((s_8
83677                                                                          (cdr
83678                                                                           s_7)))
83679                                                                     (let ((s_9
83680                                                                            (if (syntax?$1
83681                                                                                 s_8)
83682                                                                              (syntax-e$1
83683                                                                               s_8)
83684                                                                              s_8)))
83685                                                                       (if (null?
83686                                                                            s_9)
83687                                                                         (values)
83688                                                                         (raise-syntax-error$1
83689                                                                          #f
83690                                                                          "bad syntax"
83691                                                                          s_0)))))
83692                                                                 (case-lambda
83693                                                                  (()
83694                                                                   (let ((els300_1
83695                                                                          els300_0))
83696                                                                     (values
83697                                                                      els300_1)))
83698                                                                  (args
83699                                                                   (raise-binding-result-arity-error
83700                                                                    0
83701                                                                    args)))))
83702                                                              (raise-syntax-error$1
83703                                                               #f
83704                                                               "bad syntax"
83705                                                               s_0))))))
83706                                                   (let ((thn298_1 thn298_0))
83707                                                     (values
83708                                                      thn298_1
83709                                                      els299_0))))
83710                                               (raise-syntax-error$1
83711                                                #f
83712                                                "bad syntax"
83713                                                s_0)))))
83714                                       (case-lambda
83715                                        ((thn296_0 els297_0)
83716                                         (let ((tst295_1 tst295_0))
83717                                           (values
83718                                            tst295_1
83719                                            thn296_0
83720                                            els297_0)))
83721                                        (args
83722                                         (raise-binding-result-arity-error
83723                                          2
83724                                          args)))))
83725                                    (raise-syntax-error$1
83726                                     #f
83727                                     "bad syntax"
83728                                     s_0)))))
83729                            (case-lambda
83730                             ((tst292_0 thn293_0 els294_0)
83731                              (let ((if291_1 if291_0))
83732                                (values if291_1 tst292_0 thn293_0 els294_0)))
83733                             (args
83734                              (raise-binding-result-arity-error 3 args)))))
83735                         (raise-syntax-error$1 #f "bad syntax" s_0))))
83736                   (case-lambda
83737                    ((if287_0 tst288_0 thn289_0 els290_0)
83738                     (values #t if287_0 tst288_0 thn289_0 els290_0))
83739                    (args (raise-binding-result-arity-error 4 args)))))
83740                (case-lambda
83741                 ((ok?_1 if287_0 tst288_0 thn289_0 els290_0)
83742                  (let ((expr-ctx_0 (as-expression-context ctx_0)))
83743                    (let ((tail-ctx_0 (as-tail-context.1 ctx_0 expr-ctx_0)))
83744                      (let ((rebuild-s_0
83745                             (keep-as-needed.1 #f #f #f ctx_0 s_0)))
83746                        (let ((exp-tst_0 (expand.1 #f #f tst288_0 expr-ctx_0)))
83747                          (begin
83748                            (let ((obs_0
83749                                   (begin-unsafe
83750                                    (expand-context/inner-observer
83751                                     (root-expand-context/outer-inner
83752                                      ctx_0)))))
83753                              (if obs_0
83754                                (call-expand-observe obs_0 'next)
83755                                (void)))
83756                            (let ((exp-thn_0
83757                                   (expand.1 #f #f thn289_0 tail-ctx_0)))
83758                              (begin
83759                                (let ((obs_0
83760                                       (begin-unsafe
83761                                        (expand-context/inner-observer
83762                                         (root-expand-context/outer-inner
83763                                          ctx_0)))))
83764                                  (if obs_0
83765                                    (call-expand-observe obs_0 'next)
83766                                    (void)))
83767                                (let ((exp-els_0
83768                                       (expand.1 #f #f els290_0 tail-ctx_0)))
83769                                  (if (begin-unsafe
83770                                       (expand-context/inner-to-parsed?
83771                                        (root-expand-context/outer-inner
83772                                         ctx_0)))
83773                                    (parsed-if8.1
83774                                     rebuild-s_0
83775                                     exp-tst_0
83776                                     exp-thn_0
83777                                     exp-els_0)
83778                                    (let ((temp312_0
83779                                           (list
83780                                            if287_0
83781                                            exp-tst_0
83782                                            exp-thn_0
83783                                            exp-els_0)))
83784                                      (rebuild.1
83785                                       #t
83786                                       rebuild-s_0
83787                                       temp312_0))))))))))))
83788                 (args (raise-binding-result-arity-error 5 args))))))
83789            (args (raise-binding-result-arity-error 4 args))))))))
83790    (void)))
83791(define effect_2066
83792  (begin
83793    (void
83794     (add-core-form!*
83795      'with-continuation-mark
83796      (lambda (s_0 ctx_0)
83797        (begin
83798          (let ((obs_0
83799                 (begin-unsafe
83800                  (expand-context/inner-observer
83801                   (root-expand-context/outer-inner ctx_0)))))
83802            (if obs_0
83803              (call-expand-observe obs_0 'prim-with-continuation-mark s_0)
83804              (void)))
83805          (call-with-values
83806           (lambda ()
83807             (call-with-values
83808              (lambda ()
83809                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83810                  (if (pair? s_1)
83811                    (let ((with-continuation-mark317_0
83812                           (let ((s_2 (car s_1))) s_2)))
83813                      (call-with-values
83814                       (lambda ()
83815                         (let ((s_2 (cdr s_1)))
83816                           (let ((s_3
83817                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
83818                             (if (pair? s_3)
83819                               (let ((key321_0 (let ((s_4 (car s_3))) s_4)))
83820                                 (call-with-values
83821                                  (lambda ()
83822                                    (let ((s_4 (cdr s_3)))
83823                                      (let ((s_5
83824                                             (if (syntax?$1 s_4)
83825                                               (syntax-e$1 s_4)
83826                                               s_4)))
83827                                        (if (pair? s_5)
83828                                          (let ((val324_0
83829                                                 (let ((s_6 (car s_5))) s_6)))
83830                                            (let ((body325_0
83831                                                   (let ((s_6 (cdr s_5)))
83832                                                     (let ((s_7
83833                                                            (if (syntax?$1 s_6)
83834                                                              (syntax-e$1 s_6)
83835                                                              s_6)))
83836                                                       (if (pair? s_7)
83837                                                         (let ((body326_0
83838                                                                (let ((s_8
83839                                                                       (car
83840                                                                        s_7)))
83841                                                                  s_8)))
83842                                                           (call-with-values
83843                                                            (lambda ()
83844                                                              (let ((s_8
83845                                                                     (cdr
83846                                                                      s_7)))
83847                                                                (let ((s_9
83848                                                                       (if (syntax?$1
83849                                                                            s_8)
83850                                                                         (syntax-e$1
83851                                                                          s_8)
83852                                                                         s_8)))
83853                                                                  (if (null?
83854                                                                       s_9)
83855                                                                    (values)
83856                                                                    (raise-syntax-error$1
83857                                                                     #f
83858                                                                     "bad syntax"
83859                                                                     s_0)))))
83860                                                            (case-lambda
83861                                                             (()
83862                                                              (let ((body326_1
83863                                                                     body326_0))
83864                                                                (values
83865                                                                 body326_1)))
83866                                                             (args
83867                                                              (raise-binding-result-arity-error
83868                                                               0
83869                                                               args)))))
83870                                                         (raise-syntax-error$1
83871                                                          #f
83872                                                          "bad syntax"
83873                                                          s_0))))))
83874                                              (let ((val324_1 val324_0))
83875                                                (values val324_1 body325_0))))
83876                                          (raise-syntax-error$1
83877                                           #f
83878                                           "bad syntax"
83879                                           s_0)))))
83880                                  (case-lambda
83881                                   ((val322_0 body323_0)
83882                                    (let ((key321_1 key321_0))
83883                                      (values key321_1 val322_0 body323_0)))
83884                                   (args
83885                                    (raise-binding-result-arity-error
83886                                     2
83887                                     args)))))
83888                               (raise-syntax-error$1 #f "bad syntax" s_0)))))
83889                       (case-lambda
83890                        ((key318_0 val319_0 body320_0)
83891                         (let ((with-continuation-mark317_1
83892                                with-continuation-mark317_0))
83893                           (values
83894                            with-continuation-mark317_1
83895                            key318_0
83896                            val319_0
83897                            body320_0)))
83898                        (args (raise-binding-result-arity-error 3 args)))))
83899                    (raise-syntax-error$1 #f "bad syntax" s_0))))
83900              (case-lambda
83901               ((with-continuation-mark313_0 key314_0 val315_0 body316_0)
83902                (values
83903                 #t
83904                 with-continuation-mark313_0
83905                 key314_0
83906                 val315_0
83907                 body316_0))
83908               (args (raise-binding-result-arity-error 4 args)))))
83909           (case-lambda
83910            ((ok?_0 with-continuation-mark313_0 key314_0 val315_0 body316_0)
83911             (let ((expr-ctx_0 (as-expression-context ctx_0)))
83912               (let ((rebuild-s_0 (keep-as-needed.1 #f #f #f ctx_0 s_0)))
83913                 (let ((exp-key_0 (expand.1 #f #f key314_0 expr-ctx_0)))
83914                   (begin
83915                     (let ((obs_0
83916                            (begin-unsafe
83917                             (expand-context/inner-observer
83918                              (root-expand-context/outer-inner ctx_0)))))
83919                       (if obs_0 (call-expand-observe obs_0 'next) (void)))
83920                     (let ((exp-val_0 (expand.1 #f #f val315_0 expr-ctx_0)))
83921                       (begin
83922                         (let ((obs_0
83923                                (begin-unsafe
83924                                 (expand-context/inner-observer
83925                                  (root-expand-context/outer-inner ctx_0)))))
83926                           (if obs_0 (call-expand-observe obs_0 'next) (void)))
83927                         (let ((exp-body_0
83928                                (let ((temp334_0
83929                                       (as-tail-context.1 ctx_0 expr-ctx_0)))
83930                                  (expand.1 #f #f body316_0 temp334_0))))
83931                           (if (begin-unsafe
83932                                (expand-context/inner-to-parsed?
83933                                 (root-expand-context/outer-inner ctx_0)))
83934                             (parsed-with-continuation-mark10.1
83935                              rebuild-s_0
83936                              exp-key_0
83937                              exp-val_0
83938                              exp-body_0)
83939                             (let ((temp338_0
83940                                    (list
83941                                     with-continuation-mark313_0
83942                                     exp-key_0
83943                                     exp-val_0
83944                                     exp-body_0)))
83945                               (rebuild.1 #t rebuild-s_0 temp338_0)))))))))))
83946            (args (raise-binding-result-arity-error 5 args))))))))
83947    (void)))
83948(define make-begin.1
83949  (|#%name|
83950   make-begin
83951   (lambda (last-is-tail?10_0 log-tag12_0 parsed-begin13_0)
83952     (begin
83953       (lambda (s_0 ctx_0)
83954         (begin
83955           (let ((obs_0
83956                  (begin-unsafe
83957                   (expand-context/inner-observer
83958                    (root-expand-context/outer-inner ctx_0)))))
83959             (if obs_0 (call-expand-observe obs_0 log-tag12_0 s_0) (void)))
83960           (call-with-values
83961            (lambda ()
83962              (call-with-values
83963               (lambda ()
83964                 (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
83965                   (if (pair? s_1)
83966                     (let ((begin341_0 (let ((s_2 (car s_1))) s_2)))
83967                       (let ((e342_0
83968                              (let ((s_2 (cdr s_1)))
83969                                (let ((s_3
83970                                       (if (syntax?$1 s_2)
83971                                         (syntax-e$1 s_2)
83972                                         s_2)))
83973                                  (let ((flat-s_0 (to-syntax-list.1 s_3)))
83974                                    (if (not flat-s_0)
83975                                      (raise-syntax-error$1
83976                                       #f
83977                                       "bad syntax"
83978                                       s_0)
83979                                      (if (null? flat-s_0)
83980                                        (raise-syntax-error$1
83981                                         #f
83982                                         "bad syntax"
83983                                         s_0)
83984                                        flat-s_0)))))))
83985                         (let ((begin341_1 begin341_0))
83986                           (values begin341_1 e342_0))))
83987                     (raise-syntax-error$1 #f "bad syntax" s_0))))
83988               (case-lambda
83989                ((begin339_0 e340_0) (values #t begin339_0 e340_0))
83990                (args (raise-binding-result-arity-error 2 args)))))
83991            (case-lambda
83992             ((ok?_0 begin339_0 e340_0)
83993              (let ((expr-ctx_0
83994                     (if last-is-tail?10_0
83995                       (as-begin-expression-context ctx_0)
83996                       (as-expression-context ctx_0))))
83997                (let ((rebuild-s_0 (keep-as-needed.1 #f #f #f ctx_0 s_0)))
83998                  (let ((exp-es_0
83999                         (letrec*
84000                          ((loop_0
84001                            (|#%name|
84002                             loop
84003                             (lambda (es_0)
84004                               (begin
84005                                 (if (null? es_0)
84006                                   null
84007                                   (let ((rest-es_0 (cdr es_0)))
84008                                     (begin
84009                                       (let ((obs_0
84010                                              (begin-unsafe
84011                                               (expand-context/inner-observer
84012                                                (root-expand-context/outer-inner
84013                                                 ctx_0)))))
84014                                         (if obs_0
84015                                           (call-expand-observe obs_0 'next)
84016                                           (void)))
84017                                       (let ((app_0
84018                                              (let ((temp345_0 (car es_0)))
84019                                                (let ((temp346_0
84020                                                       (if (if last-is-tail?10_0
84021                                                             (null? rest-es_0)
84022                                                             #f)
84023                                                         (as-tail-context.1
84024                                                          ctx_0
84025                                                          expr-ctx_0)
84026                                                         expr-ctx_0)))
84027                                                  (let ((temp345_1 temp345_0))
84028                                                    (expand.1
84029                                                     #f
84030                                                     #f
84031                                                     temp345_1
84032                                                     temp346_0))))))
84033                                         (cons
84034                                          app_0
84035                                          (loop_0 rest-es_0)))))))))))
84036                          (loop_0 e340_0))))
84037                    (if (begin-unsafe
84038                         (expand-context/inner-to-parsed?
84039                          (root-expand-context/outer-inner ctx_0)))
84040                      (|#%app| parsed-begin13_0 rebuild-s_0 exp-es_0)
84041                      (let ((temp350_0 (cons begin339_0 exp-es_0)))
84042                        (rebuild.1 #t rebuild-s_0 temp350_0)))))))
84043             (args (raise-binding-result-arity-error 3 args))))))))))
84044(define effect_2648
84045  (begin
84046    (void
84047     (add-core-form!*
84048      'begin
84049      (let ((nonempty-begin_0 (make-begin.1 #t 'prim-begin parsed-begin12.1)))
84050        (lambda (s_0 ctx_0)
84051          (let ((context_0
84052                 (begin-unsafe (expand-context/outer-context ctx_0))))
84053            (if (let ((or-part_0 (eq? context_0 'top-level)))
84054                  (if or-part_0 or-part_0 (eq? context_0 'module)))
84055              (call-with-values
84056               (lambda ()
84057                 (if (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84058                       (if (pair? s_1)
84059                         (if (let ((s_2 (car s_1))) #t)
84060                           (let ((s_2 (cdr s_1)))
84061                             (let ((s_3
84062                                    (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
84063                               (null? s_3)))
84064                           #f)
84065                         #f))
84066                   (let ((begin354_0
84067                          (let ((s_1
84068                                 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84069                            (let ((begin355_0 (let ((s_2 (car s_1))) s_2)))
84070                              (call-with-values
84071                               (lambda ()
84072                                 (let ((s_2 (cdr s_1)))
84073                                   (let ((s_3
84074                                          (if (syntax?$1 s_2)
84075                                            (syntax-e$1 s_2)
84076                                            s_2)))
84077                                     (values))))
84078                               (case-lambda
84079                                (()
84080                                 (let ((begin355_1 begin355_0))
84081                                   (values begin355_1)))
84082                                (args
84083                                 (raise-binding-result-arity-error
84084                                  0
84085                                  args))))))))
84086                     (values #t begin354_0))
84087                   (values #f #f)))
84088               (case-lambda
84089                ((ok?_0 begin354_0)
84090                 (if ok?_0
84091                   (if (begin-unsafe
84092                        (expand-context/inner-to-parsed?
84093                         (root-expand-context/outer-inner ctx_0)))
84094                     (parsed-begin12.1
84095                      (keep-as-needed.1 #f #f #f ctx_0 s_0)
84096                      '())
84097                     s_0)
84098                   (|#%app| nonempty-begin_0 s_0 ctx_0)))
84099                (args (raise-binding-result-arity-error 2 args))))
84100              (|#%app| nonempty-begin_0 s_0 ctx_0)))))))
84101    (void)))
84102(define effect_2641
84103  (begin
84104    (void
84105     (add-core-form!*
84106      'begin0
84107      (make-begin.1 #f 'prim-begin0 parsed-begin013.1)))
84108    (void)))
84109(define register-eventual-variable!?
84110  (lambda (id_0 ctx_0)
84111    (if (if (begin-unsafe (expand-context/outer-need-eventually-defined ctx_0))
84112          (>=
84113           (begin-unsafe
84114            (expand-context/inner-phase
84115             (root-expand-context/outer-inner ctx_0)))
84116           1)
84117          #f)
84118      (begin
84119        (let ((ht_0
84120               (begin-unsafe
84121                (expand-context/outer-need-eventually-defined ctx_0))))
84122          (let ((key_0
84123                 (begin-unsafe
84124                  (expand-context/inner-phase
84125                   (root-expand-context/outer-inner ctx_0)))))
84126            (let ((xform_0 (lambda (l_0) (cons id_0 l_0))))
84127              (begin-unsafe
84128               (do-hash-update
84129                'hash-update!
84130                #t
84131                hash-set!
84132                ht_0
84133                key_0
84134                xform_0
84135                null)))))
84136        #t)
84137      #f)))
84138(define check-top-binding-is-variable
84139  (lambda (ctx_0 b_0 id_0 s_0)
84140    (call-with-values
84141     (lambda ()
84142       (let ((temp365_0
84143              (begin-unsafe
84144               (expand-context/inner-in-local-expand?
84145                (root-expand-context/outer-inner ctx_0)))))
84146         (lookup.1 s_0 temp365_0 b_0 ctx_0 id_0)))
84147     (case-lambda
84148      ((t_0 primitive?_0 insp-of-t_0 protected?_0)
84149       (begin
84150         (if (variable? t_0)
84151           (void)
84152           (raise-syntax-error$1
84153            #f
84154            "identifier does not refer to a variable"
84155            id_0
84156            s_0))
84157         primitive?_0))
84158      (args (raise-binding-result-arity-error 4 args))))))
84159(define effect_2258
84160  (begin
84161    (void
84162     (add-core-form!*
84163      '|#%top|
84164      (let ((...nder/expand/expr.rkt:601:1_0
84165             (|#%name|
84166              ...nder/expand/expr.rkt:601:1
84167              (lambda (s367_0 ctx368_0 implicit-omitted?366_0)
84168                (begin
84169                  (begin
84170                    (let ((obs_0
84171                           (begin-unsafe
84172                            (expand-context/inner-observer
84173                             (root-expand-context/outer-inner ctx368_0)))))
84174                      (if obs_0
84175                        (call-expand-observe obs_0 '|prim-#%top| s367_0)
84176                        (void)))
84177                    (let ((id_0
84178                           (if implicit-omitted?366_0
84179                             s367_0
84180                             (call-with-values
84181                              (lambda ()
84182                                (call-with-values
84183                                 (lambda ()
84184                                   (let ((s_0
84185                                          (if (syntax?$1 s367_0)
84186                                            (syntax-e$1 s367_0)
84187                                            s367_0)))
84188                                     (if (pair? s_0)
84189                                       (let ((|#%top371_0|
84190                                              (let ((s_1 (car s_0))) s_1)))
84191                                         (let ((id372_0
84192                                                (let ((s_1 (cdr s_0)))
84193                                                  (if (let ((or-part_0
84194                                                             (if (syntax?$1
84195                                                                  s_1)
84196                                                               (symbol?
84197                                                                (syntax-e$1
84198                                                                 s_1))
84199                                                               #f)))
84200                                                        (if or-part_0
84201                                                          or-part_0
84202                                                          (symbol? s_1)))
84203                                                    s_1
84204                                                    (raise-syntax-error$1
84205                                                     #f
84206                                                     "not an identifier"
84207                                                     s367_0
84208                                                     s_1)))))
84209                                           (let ((|#%top371_1| |#%top371_0|))
84210                                             (values |#%top371_1| id372_0))))
84211                                       (raise-syntax-error$1
84212                                        #f
84213                                        "bad syntax"
84214                                        s367_0))))
84215                                 (case-lambda
84216                                  ((|#%top369_0| id370_0)
84217                                   (values #t |#%top369_0| id370_0))
84218                                  (args
84219                                   (raise-binding-result-arity-error
84220                                    2
84221                                    args)))))
84222                              (case-lambda
84223                               ((ok?_0 |#%top369_0| id370_0) id370_0)
84224                               (args
84225                                (raise-binding-result-arity-error 3 args)))))))
84226                      (let ((temp374_0
84227                             (begin-unsafe
84228                              (expand-context/inner-phase
84229                               (root-expand-context/outer-inner ctx368_0)))))
84230                        (let ((b_0
84231                               (resolve+shift.1
84232                                'ambiguous
84233                                #f
84234                                null
84235                                unsafe-undefined
84236                                #f
84237                                id_0
84238                                temp374_0)))
84239                          (if (eq? b_0 'ambiguous)
84240                            (raise-ambiguous-error id_0 ctx368_0)
84241                            (if (if b_0
84242                                  (if (module-binding? b_0)
84243                                    (eq?
84244                                     (module-binding-module b_0)
84245                                     (begin-unsafe
84246                                      (root-expand-context/inner-self-mpi
84247                                       (root-expand-context/outer-inner
84248                                        ctx368_0))))
84249                                    #f)
84250                                  #f)
84251                              (begin
84252                                (if (begin-unsafe
84253                                     (expand-context/inner-allow-unbound?
84254                                      (root-expand-context/outer-inner
84255                                       ctx368_0)))
84256                                  (void)
84257                                  (check-top-binding-is-variable
84258                                   ctx368_0
84259                                   b_0
84260                                   id_0
84261                                   s367_0))
84262                                (if (begin-unsafe
84263                                     (expand-context/inner-to-parsed?
84264                                      (root-expand-context/outer-inner
84265                                       ctx368_0)))
84266                                  (parsed-id2.1 id_0 b_0 #f)
84267                                  (if (let ((mpi_0
84268                                             (module-binding-module b_0)))
84269                                        (begin-unsafe
84270                                         (eq?
84271                                          top-level-module-path-index
84272                                          mpi_0)))
84273                                    s367_0
84274                                    id_0)))
84275                              (if (local-binding? b_0)
84276                                (raise-unbound-syntax-error
84277                                 #f
84278                                 "unbound identifier"
84279                                 id_0
84280                                 #f
84281                                 null
84282                                 (syntax-debug-info-string id_0 ctx368_0))
84283                                (if (register-eventual-variable!?
84284                                     id_0
84285                                     ctx368_0)
84286                                  (if (begin-unsafe
84287                                       (expand-context/inner-to-parsed?
84288                                        (root-expand-context/outer-inner
84289                                         ctx368_0)))
84290                                    (parsed-id2.1 id_0 b_0 #f)
84291                                    id_0)
84292                                  (if (not
84293                                       (begin-unsafe
84294                                        (expand-context/inner-allow-unbound?
84295                                         (root-expand-context/outer-inner
84296                                          ctx368_0))))
84297                                    (raise-unbound-syntax-error
84298                                     #f
84299                                     "unbound identifier"
84300                                     id_0
84301                                     #f
84302                                     null
84303                                     (syntax-debug-info-string id_0 ctx368_0))
84304                                    (let ((tl-id_0
84305                                           (add-scope
84306                                            id_0
84307                                            (begin-unsafe
84308                                             (root-expand-context/inner-top-level-bind-scope
84309                                              (root-expand-context/outer-inner
84310                                               ctx368_0))))))
84311                                      (let ((temp377_0
84312                                             (begin-unsafe
84313                                              (expand-context/inner-phase
84314                                               (root-expand-context/outer-inner
84315                                                ctx368_0)))))
84316                                        (let ((tl-b_0
84317                                               (resolve.1
84318                                                #f
84319                                                #f
84320                                                null
84321                                                #f
84322                                                tl-id_0
84323                                                temp377_0)))
84324                                          (if tl-b_0
84325                                            (if (begin-unsafe
84326                                                 (expand-context/inner-to-parsed?
84327                                                  (root-expand-context/outer-inner
84328                                                   ctx368_0)))
84329                                              (parsed-top-id4.1
84330                                               tl-id_0
84331                                               tl-b_0
84332                                               #f)
84333                                              (if implicit-omitted?366_0
84334                                                id_0
84335                                                (call-with-values
84336                                                 (lambda ()
84337                                                   (call-with-values
84338                                                    (lambda ()
84339                                                      (let ((s_0
84340                                                             (if (syntax?$1
84341                                                                  s367_0)
84342                                                               (syntax-e$1
84343                                                                s367_0)
84344                                                               s367_0)))
84345                                                        (if (pair? s_0)
84346                                                          (let ((|#%top380_0|
84347                                                                 (let ((s_1
84348                                                                        (car
84349                                                                         s_0)))
84350                                                                   s_1)))
84351                                                            (let ((id381_0
84352                                                                   (let ((s_1
84353                                                                          (cdr
84354                                                                           s_0)))
84355                                                                     (if (let ((or-part_0
84356                                                                                (if (syntax?$1
84357                                                                                     s_1)
84358                                                                                  (symbol?
84359                                                                                   (syntax-e$1
84360                                                                                    s_1))
84361                                                                                  #f)))
84362                                                                           (if or-part_0
84363                                                                             or-part_0
84364                                                                             (symbol?
84365                                                                              s_1)))
84366                                                                       s_1
84367                                                                       (raise-syntax-error$1
84368                                                                        #f
84369                                                                        "not an identifier"
84370                                                                        s367_0
84371                                                                        s_1)))))
84372                                                              (let ((|#%top380_1|
84373                                                                     |#%top380_0|))
84374                                                                (values
84375                                                                 |#%top380_1|
84376                                                                 id381_0))))
84377                                                          (raise-syntax-error$1
84378                                                           #f
84379                                                           "bad syntax"
84380                                                           s367_0))))
84381                                                    (case-lambda
84382                                                     ((|#%top378_0| id379_0)
84383                                                      (values
84384                                                       #t
84385                                                       |#%top378_0|
84386                                                       id379_0))
84387                                                     (args
84388                                                      (raise-binding-result-arity-error
84389                                                       2
84390                                                       args)))))
84391                                                 (case-lambda
84392                                                  ((ok?_0 |#%top378_0| id379_0)
84393                                                   (let ((temp383_0
84394                                                          (cons
84395                                                           |#%top378_0|
84396                                                           id_0)))
84397                                                     (rebuild.1
84398                                                      #t
84399                                                      s367_0
84400                                                      temp383_0)))
84401                                                  (args
84402                                                   (raise-binding-result-arity-error
84403                                                    3
84404                                                    args))))))
84405                                            (if (begin-unsafe
84406                                                 (expand-context/inner-to-parsed?
84407                                                  (root-expand-context/outer-inner
84408                                                   ctx368_0)))
84409                                              (parsed-top-id4.1 id_0 b_0 #f)
84410                                              s367_0)))))))))))))))))))
84411        (|#%name|
84412         ...nder/expand/expr.rkt:601:1
84413         (case-lambda
84414          ((s_0 ctx_0) (begin (...nder/expand/expr.rkt:601:1_0 s_0 ctx_0 #f)))
84415          ((s_0 ctx_0 implicit-omitted?366_0)
84416           (...nder/expand/expr.rkt:601:1_0
84417            s_0
84418            ctx_0
84419            implicit-omitted?366_0)))))))
84420    (void)))
84421(define effect_2421
84422  (begin
84423    (void
84424     (add-core-form!*
84425      'set!
84426      (lambda (s_0 ctx_0)
84427        (begin
84428          (let ((obs_0
84429                 (begin-unsafe
84430                  (expand-context/inner-observer
84431                   (root-expand-context/outer-inner ctx_0)))))
84432            (if obs_0 (call-expand-observe obs_0 'prim-set! s_0) (void)))
84433          (call-with-values
84434           (lambda ()
84435             (call-with-values
84436              (lambda ()
84437                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84438                  (if (pair? s_1)
84439                    (let ((set!387_0 (let ((s_2 (car s_1))) s_2)))
84440                      (call-with-values
84441                       (lambda ()
84442                         (let ((s_2 (cdr s_1)))
84443                           (let ((s_3
84444                                  (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
84445                             (if (pair? s_3)
84446                               (let ((id390_0
84447                                      (let ((s_4 (car s_3)))
84448                                        (if (let ((or-part_0
84449                                                   (if (syntax?$1 s_4)
84450                                                     (symbol? (syntax-e$1 s_4))
84451                                                     #f)))
84452                                              (if or-part_0
84453                                                or-part_0
84454                                                (symbol? s_4)))
84455                                          s_4
84456                                          (raise-syntax-error$1
84457                                           #f
84458                                           "not an identifier"
84459                                           s_0
84460                                           s_4)))))
84461                                 (let ((rhs391_0
84462                                        (let ((s_4 (cdr s_3)))
84463                                          (let ((s_5
84464                                                 (if (syntax?$1 s_4)
84465                                                   (syntax-e$1 s_4)
84466                                                   s_4)))
84467                                            (if (pair? s_5)
84468                                              (let ((rhs392_0
84469                                                     (let ((s_6 (car s_5)))
84470                                                       s_6)))
84471                                                (call-with-values
84472                                                 (lambda ()
84473                                                   (let ((s_6 (cdr s_5)))
84474                                                     (let ((s_7
84475                                                            (if (syntax?$1 s_6)
84476                                                              (syntax-e$1 s_6)
84477                                                              s_6)))
84478                                                       (if (null? s_7)
84479                                                         (values)
84480                                                         (raise-syntax-error$1
84481                                                          #f
84482                                                          "bad syntax"
84483                                                          s_0)))))
84484                                                 (case-lambda
84485                                                  (()
84486                                                   (let ((rhs392_1 rhs392_0))
84487                                                     (values rhs392_1)))
84488                                                  (args
84489                                                   (raise-binding-result-arity-error
84490                                                    0
84491                                                    args)))))
84492                                              (raise-syntax-error$1
84493                                               #f
84494                                               "bad syntax"
84495                                               s_0))))))
84496                                   (let ((id390_1 id390_0))
84497                                     (values id390_1 rhs391_0))))
84498                               (raise-syntax-error$1 #f "bad syntax" s_0)))))
84499                       (case-lambda
84500                        ((id388_0 rhs389_0)
84501                         (let ((set!387_1 set!387_0))
84502                           (values set!387_1 id388_0 rhs389_0)))
84503                        (args (raise-binding-result-arity-error 2 args)))))
84504                    (raise-syntax-error$1 #f "bad syntax" s_0))))
84505              (case-lambda
84506               ((set!384_0 id385_0 rhs386_0)
84507                (values #t set!384_0 id385_0 rhs386_0))
84508               (args (raise-binding-result-arity-error 3 args)))))
84509           (case-lambda
84510            ((ok?_0 set!384_0 id385_0 rhs386_0)
84511             (letrec*
84512              ((rename-loop_0
84513                (|#%name|
84514                 rename-loop
84515                 (lambda (id_0 from-rename?_0)
84516                   (begin
84517                     (let ((temp394_0
84518                            (begin-unsafe
84519                             (expand-context/inner-phase
84520                              (root-expand-context/outer-inner ctx_0)))))
84521                       (let ((binding_0
84522                              (resolve+shift.1
84523                               'ambiguous
84524                               #f
84525                               null
84526                               #t
84527                               #f
84528                               id_0
84529                               temp394_0)))
84530                         (begin
84531                           (if (eq? binding_0 'ambiguous)
84532                             (raise-ambiguous-error id_0 ctx_0)
84533                             (void))
84534                           (call-with-values
84535                            (lambda ()
84536                              (if binding_0
84537                                (lookup.1 #f #f binding_0 ctx_0 s_0)
84538                                (values #f #f #f #f)))
84539                            (case-lambda
84540                             ((t_0 primitive?_0 insp_0 protected?_0)
84541                              (begin
84542                                (let ((obs_0
84543                                       (begin-unsafe
84544                                        (expand-context/inner-observer
84545                                         (root-expand-context/outer-inner
84546                                          ctx_0)))))
84547                                  (if obs_0
84548                                    (call-expand-observe obs_0 'resolve id_0)
84549                                    (void)))
84550                                (if (let ((or-part_0 (variable? t_0)))
84551                                      (if or-part_0
84552                                        or-part_0
84553                                        (if (not binding_0)
84554                                          (let ((or-part_1
84555                                                 (register-eventual-variable!?
84556                                                  id_0
84557                                                  ctx_0)))
84558                                            (if or-part_1
84559                                              or-part_1
84560                                              (begin-unsafe
84561                                               (expand-context/inner-allow-unbound?
84562                                                (root-expand-context/outer-inner
84563                                                 ctx_0)))))
84564                                          #f)))
84565                                  (begin
84566                                    (if (if (module-binding? binding_0)
84567                                          (not
84568                                           (inside-module-context?
84569                                            (module-binding-module binding_0)
84570                                            (begin-unsafe
84571                                             (root-expand-context/inner-self-mpi
84572                                              (root-expand-context/outer-inner
84573                                               ctx_0)))))
84574                                          #f)
84575                                      (raise-syntax-error$1
84576                                       #f
84577                                       "cannot mutate module-required identifier"
84578                                       s_0
84579                                       id_0)
84580                                      (void))
84581                                    (begin
84582                                      (let ((obs_0
84583                                             (begin-unsafe
84584                                              (expand-context/inner-observer
84585                                               (root-expand-context/outer-inner
84586                                                ctx_0)))))
84587                                        (if obs_0
84588                                          (call-expand-observe obs_0 'next)
84589                                          (void)))
84590                                      (begin
84591                                        (register-variable-referenced-if-local!
84592                                         binding_0
84593                                         ctx_0)
84594                                        (let ((rebuild-s_0
84595                                               (keep-as-needed.1
84596                                                #f
84597                                                #f
84598                                                #f
84599                                                ctx_0
84600                                                s_0)))
84601                                          (let ((exp-rhs_0
84602                                                 (let ((temp403_0
84603                                                        (as-expression-context
84604                                                         ctx_0)))
84605                                                   (expand.1
84606                                                    #f
84607                                                    #f
84608                                                    rhs386_0
84609                                                    temp403_0))))
84610                                            (if (begin-unsafe
84611                                                 (expand-context/inner-to-parsed?
84612                                                  (root-expand-context/outer-inner
84613                                                   ctx_0)))
84614                                              (parsed-set!9.1
84615                                               rebuild-s_0
84616                                               (parsed-id2.1 id_0 binding_0 #f)
84617                                               exp-rhs_0)
84618                                              (let ((temp405_0
84619                                                     (list
84620                                                      set!384_0
84621                                                      (let ((temp408_0
84622                                                             (free-id-set-empty-or-just-module*?
84623                                                              (begin-unsafe
84624                                                               (expand-context/inner-stops
84625                                                                (root-expand-context/outer-inner
84626                                                                 ctx_0))))))
84627                                                        (substitute-variable.1
84628                                                         temp408_0
84629                                                         id_0
84630                                                         t_0))
84631                                                      exp-rhs_0)))
84632                                                (rebuild.1
84633                                                 #t
84634                                                 rebuild-s_0
84635                                                 temp405_0))))))))
84636                                  (if (not binding_0)
84637                                    (raise-unbound-syntax-error
84638                                     #f
84639                                     "unbound identifier"
84640                                     s_0
84641                                     id_0
84642                                     null
84643                                     (syntax-debug-info-string id_0 ctx_0))
84644                                    (if (1/set!-transformer? t_0)
84645                                      (if (not-in-this-expand-context?
84646                                           t_0
84647                                           ctx_0)
84648                                        (let ((temp409_0
84649                                               (avoid-current-expand-context
84650                                                (|#%app|
84651                                                 substitute-set!-rename
84652                                                 s_0
84653                                                 set!384_0
84654                                                 rhs386_0
84655                                                 id_0
84656                                                 from-rename?_0
84657                                                 ctx_0)
84658                                                t_0
84659                                                ctx_0)))
84660                                          (expand.1 #f #f temp409_0 ctx_0))
84661                                        (call-with-values
84662                                         (lambda ()
84663                                           (apply-transformer.1
84664                                            id385_0
84665                                            t_0
84666                                            insp_0
84667                                            s_0
84668                                            id385_0
84669                                            ctx_0
84670                                            binding_0))
84671                                         (case-lambda
84672                                          ((exp-s_0 re-ctx_0)
84673                                           (if (begin-unsafe
84674                                                (expand-context/inner-just-once?
84675                                                 (root-expand-context/outer-inner
84676                                                  ctx_0)))
84677                                             exp-s_0
84678                                             (expand.1
84679                                              #f
84680                                              #f
84681                                              exp-s_0
84682                                              re-ctx_0)))
84683                                          (args
84684                                           (raise-binding-result-arity-error
84685                                            2
84686                                            args)))))
84687                                      (if (1/rename-transformer? t_0)
84688                                        (if (not-in-this-expand-context?
84689                                             t_0
84690                                             ctx_0)
84691                                          (let ((temp420_0
84692                                                 (avoid-current-expand-context
84693                                                  (|#%app|
84694                                                   substitute-set!-rename
84695                                                   s_0
84696                                                   set!384_0
84697                                                   rhs386_0
84698                                                   id_0
84699                                                   from-rename?_0
84700                                                   ctx_0)
84701                                                  t_0
84702                                                  ctx_0)))
84703                                            (expand.1 #f #f temp420_0 ctx_0))
84704                                          (rename-loop_0
84705                                           (apply-rename-transformer
84706                                            t_0
84707                                            id_0
84708                                            ctx_0)
84709                                           #t))
84710                                        (raise-syntax-error$1
84711                                         #f
84712                                         "cannot mutate syntax identifier"
84713                                         s_0
84714                                         id_0)))))))
84715                             (args
84716                              (raise-binding-result-arity-error
84717                               4
84718                               args))))))))))))
84719              (rename-loop_0 id385_0 #f)))
84720            (args (raise-binding-result-arity-error 4 args))))))))
84721    (void)))
84722(define substitute-set!-rename
84723  (lambda (s_0 set!-id_0 id_0 rhs-s_0 from-rename?_0 ctx_0)
84724    (if from-rename?_0
84725      (datum->syntax$1 s_0 (list set!-id_0 id_0 rhs-s_0) s_0 s_0)
84726      s_0)))
84727(define effect_2402
84728  (begin
84729    (void
84730     (add-core-form!*
84731      '|#%variable-reference|
84732      (lambda (s_0 ctx_0)
84733        (begin
84734          (let ((obs_0
84735                 (begin-unsafe
84736                  (expand-context/inner-observer
84737                   (root-expand-context/outer-inner ctx_0)))))
84738            (if obs_0
84739              (call-expand-observe obs_0 '|prim-#%variable-reference| s_0)
84740              (void)))
84741          (call-with-values
84742           (lambda ()
84743             (if (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84744                   (if (pair? s_1)
84745                     (if (let ((s_2 (car s_1))) #t)
84746                       (let ((s_2 (cdr s_1)))
84747                         (let ((s_3 (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
84748                           (if (pair? s_3)
84749                             (if (let ((s_4 (car s_3)))
84750                                   (let ((or-part_0
84751                                          (if (syntax?$1 s_4)
84752                                            (symbol? (syntax-e$1 s_4))
84753                                            #f)))
84754                                     (if or-part_0 or-part_0 (symbol? s_4))))
84755                               (let ((s_4 (cdr s_3)))
84756                                 (let ((s_5
84757                                        (if (syntax?$1 s_4)
84758                                          (syntax-e$1 s_4)
84759                                          s_4)))
84760                                   (null? s_5)))
84761                               #f)
84762                             #f)))
84763                       #f)
84764                     #f))
84765               (call-with-values
84766                (lambda ()
84767                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84768                    (let ((|#%variable-reference424_0|
84769                           (let ((s_2 (car s_1))) s_2)))
84770                      (let ((id425_0
84771                             (let ((s_2 (cdr s_1)))
84772                               (let ((s_3
84773                                      (if (syntax?$1 s_2)
84774                                        (syntax-e$1 s_2)
84775                                        s_2)))
84776                                 (let ((id426_0 (let ((s_4 (car s_3))) s_4)))
84777                                   (call-with-values
84778                                    (lambda ()
84779                                      (let ((s_4 (cdr s_3)))
84780                                        (let ((s_5
84781                                               (if (syntax?$1 s_4)
84782                                                 (syntax-e$1 s_4)
84783                                                 s_4)))
84784                                          (values))))
84785                                    (case-lambda
84786                                     (()
84787                                      (let ((id426_1 id426_0))
84788                                        (values id426_1)))
84789                                     (args
84790                                      (raise-binding-result-arity-error
84791                                       0
84792                                       args)))))))))
84793                        (let ((|#%variable-reference424_1|
84794                               |#%variable-reference424_0|))
84795                          (values |#%variable-reference424_1| id425_0))))))
84796                (case-lambda
84797                 ((|#%variable-reference422_0| id423_0)
84798                  (values #t |#%variable-reference422_0| id423_0))
84799                 (args (raise-binding-result-arity-error 2 args))))
84800               (values #f #f #f)))
84801           (case-lambda
84802            ((ok?_0 |#%variable-reference422_0| id423_0)
84803             (call-with-values
84804              (lambda ()
84805                (if (if (not ok?_0)
84806                      (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84807                        (if (pair? s_1)
84808                          (if (let ((s_2 (car s_1))) #t)
84809                            (let ((s_2 (cdr s_1)))
84810                              (let ((s_3
84811                                     (if (syntax?$1 s_2)
84812                                       (syntax-e$1 s_2)
84813                                       s_2)))
84814                                (if (pair? s_3)
84815                                  (if (let ((s_4 (car s_3)))
84816                                        (let ((s_5
84817                                               (if (syntax?$1 s_4)
84818                                                 (syntax-e$1 s_4)
84819                                                 s_4)))
84820                                          (if (pair? s_5)
84821                                            (if (let ((s_6 (car s_5))) #t)
84822                                              (let ((s_6 (cdr s_5)))
84823                                                (let ((or-part_0
84824                                                       (if (syntax?$1 s_6)
84825                                                         (symbol?
84826                                                          (syntax-e$1 s_6))
84827                                                         #f)))
84828                                                  (if or-part_0
84829                                                    or-part_0
84830                                                    (symbol? s_6))))
84831                                              #f)
84832                                            #f)))
84833                                    (let ((s_4 (cdr s_3)))
84834                                      (let ((s_5
84835                                             (if (syntax?$1 s_4)
84836                                               (syntax-e$1 s_4)
84837                                               s_4)))
84838                                        (null? s_5)))
84839                                    #f)
84840                                  #f)))
84841                            #f)
84842                          #f))
84843                      #f)
84844                  (call-with-values
84845                   (lambda ()
84846                     (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84847                       (let ((|#%variable-reference430_0|
84848                              (let ((s_2 (car s_1))) s_2)))
84849                         (call-with-values
84850                          (lambda ()
84851                            (let ((s_2 (cdr s_1)))
84852                              (let ((s_3
84853                                     (if (syntax?$1 s_2)
84854                                       (syntax-e$1 s_2)
84855                                       s_2)))
84856                                (call-with-values
84857                                 (lambda ()
84858                                   (let ((s_4 (car s_3)))
84859                                     (let ((s_5
84860                                            (if (syntax?$1 s_4)
84861                                              (syntax-e$1 s_4)
84862                                              s_4)))
84863                                       (let ((|#%top435_0|
84864                                              (let ((s_6 (car s_5))) s_6)))
84865                                         (let ((id436_0
84866                                                (let ((s_6 (cdr s_5))) s_6)))
84867                                           (let ((|#%top435_1| |#%top435_0|))
84868                                             (values
84869                                              |#%top435_1|
84870                                              id436_0)))))))
84871                                 (case-lambda
84872                                  ((|#%top433_0| id434_0)
84873                                   (call-with-values
84874                                    (lambda ()
84875                                      (let ((s_4 (cdr s_3)))
84876                                        (let ((s_5
84877                                               (if (syntax?$1 s_4)
84878                                                 (syntax-e$1 s_4)
84879                                                 s_4)))
84880                                          (values))))
84881                                    (case-lambda
84882                                     (()
84883                                      (let ((|#%top433_1| |#%top433_0|)
84884                                            (id434_1 id434_0))
84885                                        (values |#%top433_1| id434_1)))
84886                                     (args
84887                                      (raise-binding-result-arity-error
84888                                       0
84889                                       args)))))
84890                                  (args
84891                                   (raise-binding-result-arity-error
84892                                    2
84893                                    args)))))))
84894                          (case-lambda
84895                           ((|#%top431_0| id432_0)
84896                            (let ((|#%variable-reference430_1|
84897                                   |#%variable-reference430_0|))
84898                              (values
84899                               |#%variable-reference430_1|
84900                               |#%top431_0|
84901                               id432_0)))
84902                           (args
84903                            (raise-binding-result-arity-error 2 args)))))))
84904                   (case-lambda
84905                    ((|#%variable-reference427_0| |#%top428_0| id429_0)
84906                     (values
84907                      #t
84908                      |#%variable-reference427_0|
84909                      |#%top428_0|
84910                      id429_0))
84911                    (args (raise-binding-result-arity-error 3 args))))
84912                  (values #f #f #f #f)))
84913              (case-lambda
84914               ((ok?_1 |#%variable-reference427_0| |#%top428_0| id429_0)
84915                (call-with-values
84916                 (lambda ()
84917                   (if (if (not (if ok?_0 ok?_0 ok?_1)) #t #f)
84918                     (let ((|#%variable-reference437_0|
84919                            (let ((s_1
84920                                   (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
84921                              (if (pair? s_1)
84922                                (let ((|#%variable-reference438_0|
84923                                       (let ((s_2 (car s_1))) s_2)))
84924                                  (call-with-values
84925                                   (lambda ()
84926                                     (let ((s_2 (cdr s_1)))
84927                                       (let ((s_3
84928                                              (if (syntax?$1 s_2)
84929                                                (syntax-e$1 s_2)
84930                                                s_2)))
84931                                         (if (null? s_3)
84932                                           (values)
84933                                           (raise-syntax-error$1
84934                                            #f
84935                                            "bad syntax"
84936                                            s_0)))))
84937                                   (case-lambda
84938                                    (()
84939                                     (let ((|#%variable-reference438_1|
84940                                            |#%variable-reference438_0|))
84941                                       (values |#%variable-reference438_1|)))
84942                                    (args
84943                                     (raise-binding-result-arity-error
84944                                      0
84945                                      args)))))
84946                                (raise-syntax-error$1 #f "bad syntax" s_0)))))
84947                       (values #t |#%variable-reference437_0|))
84948                     (values #f #f)))
84949                 (case-lambda
84950                  ((ok?_2 |#%variable-reference437_0|)
84951                   (if (if ok?_0 ok?_0 ok?_1)
84952                     (begin
84953                       (if ok?_1
84954                         (let ((phase_0
84955                                (begin-unsafe
84956                                 (expand-context/inner-phase
84957                                  (root-expand-context/outer-inner ctx_0)))))
84958                           (if (if (identifier? |#%top428_0|)
84959                                 (free-identifier=?$1
84960                                  |#%top428_0|
84961                                  (core-id '|#%top| phase_0)
84962                                  phase_0
84963                                  phase_0)
84964                                 #f)
84965                             (void)
84966                             (raise-syntax-error$1 #f "bad syntax" s_0)))
84967                         (void))
84968                       (let ((var-id_0 (if ok?_0 id423_0 id429_0)))
84969                         (let ((temp440_0
84970                                (begin-unsafe
84971                                 (expand-context/inner-phase
84972                                  (root-expand-context/outer-inner ctx_0)))))
84973                           (let ((binding_0
84974                                  (resolve+shift.1
84975                                   'ambiguous
84976                                   #f
84977                                   null
84978                                   unsafe-undefined
84979                                   #f
84980                                   var-id_0
84981                                   temp440_0)))
84982                             (begin
84983                               (if (eq? binding_0 'ambiguous)
84984                                 (raise-ambiguous-error var-id_0 ctx_0)
84985                                 (void))
84986                               (begin
84987                                 (if (if (if binding_0
84988                                           binding_0
84989                                           (begin-unsafe
84990                                            (expand-context/inner-allow-unbound?
84991                                             (root-expand-context/outer-inner
84992                                              ctx_0))))
84993                                       (not
84994                                        (if ok?_1
84995                                          (local-binding? binding_0)
84996                                          #f))
84997                                       #f)
84998                                   (void)
84999                                   (raise-unbound-syntax-error
85000                                    #f
85001                                    "unbound identifier"
85002                                    s_0
85003                                    var-id_0
85004                                    null
85005                                    (syntax-debug-info-string var-id_0 ctx_0)))
85006                                 (let ((primitive?_0
85007                                        (if (let ((or-part_0 (not binding_0)))
85008                                              (if or-part_0
85009                                                or-part_0
85010                                                (if (begin-unsafe
85011                                                     (expand-context/inner-allow-unbound?
85012                                                      (root-expand-context/outer-inner
85013                                                       ctx_0)))
85014                                                  ok?_1
85015                                                  #f)))
85016                                          #f
85017                                          (check-top-binding-is-variable
85018                                           ctx_0
85019                                           binding_0
85020                                           var-id_0
85021                                           s_0))))
85022                                   (if (begin-unsafe
85023                                        (expand-context/inner-to-parsed?
85024                                         (root-expand-context/outer-inner
85025                                          ctx_0)))
85026                                     (|parsed-#%variable-reference11.1|
85027                                      (begin-unsafe #f)
85028                                      (if ok?_1
85029                                        (parsed-top-id4.1
85030                                         var-id_0
85031                                         binding_0
85032                                         #f)
85033                                        (if primitive?_0
85034                                          (parsed-primitive-id3.1
85035                                           var-id_0
85036                                           binding_0
85037                                           #f)
85038                                          (parsed-id2.1
85039                                           var-id_0
85040                                           binding_0
85041                                           #f))))
85042                                     s_0))))))))
85043                     (if (begin-unsafe
85044                          (expand-context/inner-to-parsed?
85045                           (root-expand-context/outer-inner ctx_0)))
85046                       (|parsed-#%variable-reference11.1| (begin-unsafe #f) #f)
85047                       s_0)))
85048                  (args (raise-binding-result-arity-error 2 args)))))
85049               (args (raise-binding-result-arity-error 4 args)))))
85050            (args (raise-binding-result-arity-error 3 args))))))))
85051    (void)))
85052(define effect_3133
85053  (begin
85054    (void
85055     (add-core-form!*
85056      '|#%expression|
85057      (lambda (s_0 ctx_0)
85058        (begin
85059          (let ((obs_0
85060                 (begin-unsafe
85061                  (expand-context/inner-observer
85062                   (root-expand-context/outer-inner ctx_0)))))
85063            (if obs_0
85064              (call-expand-observe obs_0 '|prim-#%expression| s_0)
85065              (void)))
85066          (call-with-values
85067           (lambda ()
85068             (call-with-values
85069              (lambda ()
85070                (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
85071                  (if (pair? s_1)
85072                    (let ((|#%expression444_0| (let ((s_2 (car s_1))) s_2)))
85073                      (let ((e445_0
85074                             (let ((s_2 (cdr s_1)))
85075                               (let ((s_3
85076                                      (if (syntax?$1 s_2)
85077                                        (syntax-e$1 s_2)
85078                                        s_2)))
85079                                 (if (pair? s_3)
85080                                   (let ((e446_0 (let ((s_4 (car s_3))) s_4)))
85081                                     (call-with-values
85082                                      (lambda ()
85083                                        (let ((s_4 (cdr s_3)))
85084                                          (let ((s_5
85085                                                 (if (syntax?$1 s_4)
85086                                                   (syntax-e$1 s_4)
85087                                                   s_4)))
85088                                            (if (null? s_5)
85089                                              (values)
85090                                              (raise-syntax-error$1
85091                                               #f
85092                                               "bad syntax"
85093                                               s_0)))))
85094                                      (case-lambda
85095                                       (()
85096                                        (let ((e446_1 e446_0))
85097                                          (values e446_1)))
85098                                       (args
85099                                        (raise-binding-result-arity-error
85100                                         0
85101                                         args)))))
85102                                   (raise-syntax-error$1
85103                                    #f
85104                                    "bad syntax"
85105                                    s_0))))))
85106                        (let ((|#%expression444_1| |#%expression444_0|))
85107                          (values |#%expression444_1| e445_0))))
85108                    (raise-syntax-error$1 #f "bad syntax" s_0))))
85109              (case-lambda
85110               ((|#%expression442_0| e443_0)
85111                (values #t |#%expression442_0| e443_0))
85112               (args (raise-binding-result-arity-error 2 args)))))
85113           (case-lambda
85114            ((ok?_0 |#%expression442_0| e443_0)
85115             (let ((rebuild-s_0 (keep-as-needed.1 #t #f #f ctx_0 s_0)))
85116               (let ((exp-e_0
85117                      (let ((temp451_0
85118                             (let ((temp452_0 (as-expression-context ctx_0)))
85119                               (as-tail-context.1 ctx_0 temp452_0))))
85120                        (expand.1 #f #f e443_0 temp451_0))))
85121                 (if (begin-unsafe
85122                      (expand-context/inner-to-parsed?
85123                       (root-expand-context/outer-inner ctx_0)))
85124                   exp-e_0
85125                   (if (let ((or-part_0
85126                              (if (begin-unsafe
85127                                   (expand-context/inner-in-local-expand?
85128                                    (root-expand-context/outer-inner ctx_0)))
85129                                (begin-unsafe
85130                                 (|expand-context/inner-keep-#%expression?|
85131                                  (root-expand-context/outer-inner ctx_0)))
85132                                #f)))
85133                         (if or-part_0
85134                           or-part_0
85135                           (eq?
85136                            'top-level
85137                            (begin-unsafe
85138                             (expand-context/outer-context ctx_0)))))
85139                     (let ((temp455_0 (list |#%expression442_0| exp-e_0)))
85140                       (rebuild.1 #t rebuild-s_0 temp455_0))
85141                     (let ((result-s_0
85142                            (syntax-track-origin$1 exp-e_0 rebuild-s_0)))
85143                       (begin
85144                         (let ((obs_0
85145                                (begin-unsafe
85146                                 (expand-context/inner-observer
85147                                  (root-expand-context/outer-inner ctx_0)))))
85148                           (if obs_0
85149                             (call-expand-observe obs_0 'tag result-s_0)
85150                             (void)))
85151                         result-s_0)))))))
85152            (args (raise-binding-result-arity-error 3 args))))))))
85153    (void)))
85154(define effect_2926
85155  (begin
85156    (void
85157     (add-core-form!*
85158      'unquote
85159      (lambda (s_0 ctx_0) (raise-syntax-error$1 #f "not in quasiquote" s_0))))
85160    (void)))
85161(define effect_2058
85162  (begin
85163    (void
85164     (add-core-form!*
85165      'unquote-splicing
85166      (lambda (s_0 ctx_0) (raise-syntax-error$1 #f "not in quasiquote" s_0))))
85167    (void)))
85168(define binding-for-transformer?
85169  (lambda (b_0 id_0 at-phase_0 ns_0)
85170    (if (not at-phase_0)
85171      (let ((m_0
85172             (namespace->module
85173              ns_0
85174              (1/module-path-index-resolve
85175               (module-binding-nominal-module b_0)))))
85176        (let ((b/p_0
85177               (let ((app_0
85178                      (hash-ref
85179                       (module-provides m_0)
85180                       (module-binding-nominal-phase+space b_0)
85181                       hash2610)))
85182                 (hash-ref app_0 (module-binding-nominal-sym b_0) #f))))
85183          (provided-as-transformer? b/p_0)))
85184      (begin
85185        (namespace-visit-available-modules!
85186         ns_0
85187         (+ at-phase_0 (module-binding-phase b_0)))
85188        (call-with-values
85189         (lambda ()
85190           (binding-lookup.1 #f #f b_0 empty-env null ns_0 at-phase_0 id_0))
85191         (case-lambda
85192          ((val_0 primitive?_0 insp_0 protected?_0) (not (variable? val_0)))
85193          (args (raise-binding-result-arity-error 4 args))))))))
85194(define layers '(raw phaseless spaceless id))
85195(define provide-form-name 'provide)
85196(define parse-and-expand-provides!
85197  (lambda (specs_0 orig-s_0 rp_0 self_0 phase_0 ctx_0)
85198    (let ((ns_0
85199           (begin-unsafe
85200            (expand-context/inner-namespace
85201             (root-expand-context/outer-inner ctx_0)))))
85202      (letrec*
85203       ((loop_0
85204         (|#%name|
85205          loop
85206          (lambda (specs_1
85207                   at-phase_0
85208                   at-space-level_0
85209                   protected?_0
85210                   layer_0
85211                   orig-s_1)
85212            (begin
85213              (call-with-values
85214               (lambda ()
85215                 (call-with-values
85216                  (lambda ()
85217                    (begin
85218                      (letrec*
85219                       ((for-loop_0
85220                         (|#%name|
85221                          for-loop
85222                          (lambda (track-stxes_0 exp-specs_0 lst_0)
85223                            (begin
85224                              (if (pair? lst_0)
85225                                (let ((spec_0 (unsafe-car lst_0)))
85226                                  (let ((rest_0 (unsafe-cdr lst_0)))
85227                                    (call-with-values
85228                                     (lambda ()
85229                                       (call-with-values
85230                                        (lambda ()
85231                                          (call-with-values
85232                                           (lambda ()
85233                                             (let ((fm_0
85234                                                    (if (pair?
85235                                                         (syntax-e$1 spec_0))
85236                                                      (if (identifier?
85237                                                           (car
85238                                                            (syntax-e$1
85239                                                             spec_0)))
85240                                                        (syntax-e$1
85241                                                         (car
85242                                                          (syntax-e$1 spec_0)))
85243                                                        #f)
85244                                                      #f)))
85245                                               (let ((check-nested_0
85246                                                      (|#%name|
85247                                                       check-nested
85248                                                       (lambda (want-layer_0)
85249                                                         (begin
85250                                                           (if (member
85251                                                                want-layer_0
85252                                                                (member
85253                                                                 layer_0
85254                                                                 layers))
85255                                                             (void)
85256                                                             (raise-syntax-error$1
85257                                                              'provide
85258                                                              (format
85259                                                               "nested `~a' not allowed"
85260                                                               fm_0)
85261                                                              orig-s_1
85262                                                              spec_0)))))))
85263                                                 (let ((index_0
85264                                                        (if (symbol? fm_0)
85265                                                          (hash-ref
85266                                                           hash2390
85267                                                           fm_0
85268                                                           (lambda () 0))
85269                                                          0)))
85270                                                   (if (unsafe-fx< index_0 7)
85271                                                     (if (unsafe-fx< index_0 3)
85272                                                       (if (unsafe-fx<
85273                                                            index_0
85274                                                            1)
85275                                                         (if (identifier?
85276                                                              spec_0)
85277                                                           (begin
85278                                                             (parse-identifier!
85279                                                              spec_0
85280                                                              orig-s_1
85281                                                              (syntax-e$1
85282                                                               spec_0)
85283                                                              at-phase_0
85284                                                              at-space-level_0
85285                                                              ns_0
85286                                                              rp_0
85287                                                              protected?_0)
85288                                                             (values
85289                                                              null
85290                                                              (list spec_0)))
85291                                                           (raise-syntax-error$1
85292                                                            'provide
85293                                                            "bad syntax"
85294                                                            orig-s_1
85295                                                            spec_0))
85296                                                         (if (unsafe-fx<
85297                                                              index_0
85298                                                              2)
85299                                                           (begin
85300                                                             (check-nested_0
85301                                                              'raw)
85302                                                             (call-with-values
85303                                                              (lambda ()
85304                                                                (call-with-values
85305                                                                 (lambda ()
85306                                                                   (let ((s_0
85307                                                                          (if (syntax?$1
85308                                                                               spec_0)
85309                                                                            (syntax-e$1
85310                                                                             spec_0)
85311                                                                            spec_0)))
85312                                                                     (if (pair?
85313                                                                          s_0)
85314                                                                       (let ((for-meta6_0
85315                                                                              (let ((s_1
85316                                                                                     (car
85317                                                                                      s_0)))
85318                                                                                s_1)))
85319                                                                         (call-with-values
85320                                                                          (lambda ()
85321                                                                            (let ((s_1
85322                                                                                   (cdr
85323                                                                                    s_0)))
85324                                                                              (let ((s_2
85325                                                                                     (if (syntax?$1
85326                                                                                          s_1)
85327                                                                                       (syntax-e$1
85328                                                                                        s_1)
85329                                                                                       s_1)))
85330                                                                                (if (pair?
85331                                                                                     s_2)
85332                                                                                  (let ((phase-level9_0
85333                                                                                         (let ((s_3
85334                                                                                                (car
85335                                                                                                 s_2)))
85336                                                                                           s_3)))
85337                                                                                    (let ((spec10_0
85338                                                                                           (let ((s_3
85339                                                                                                  (cdr
85340                                                                                                   s_2)))
85341                                                                                             (let ((s_4
85342                                                                                                    (if (syntax?$1
85343                                                                                                         s_3)
85344                                                                                                      (syntax-e$1
85345                                                                                                       s_3)
85346                                                                                                      s_3)))
85347                                                                                               (let ((flat-s_0
85348                                                                                                      (to-syntax-list.1
85349                                                                                                       s_4)))
85350                                                                                                 (if (not
85351                                                                                                      flat-s_0)
85352                                                                                                   (raise-syntax-error$1
85353                                                                                                    #f
85354                                                                                                    "bad syntax"
85355                                                                                                    spec_0)
85356                                                                                                   flat-s_0))))))
85357                                                                                      (let ((phase-level9_1
85358                                                                                             phase-level9_0))
85359                                                                                        (values
85360                                                                                         phase-level9_1
85361                                                                                         spec10_0))))
85362                                                                                  (raise-syntax-error$1
85363                                                                                   #f
85364                                                                                   "bad syntax"
85365                                                                                   spec_0)))))
85366                                                                          (case-lambda
85367                                                                           ((phase-level7_0
85368                                                                             spec8_0)
85369                                                                            (let ((for-meta6_1
85370                                                                                   for-meta6_0))
85371                                                                              (values
85372                                                                               for-meta6_1
85373                                                                               phase-level7_0
85374                                                                               spec8_0)))
85375                                                                           (args
85376                                                                            (raise-binding-result-arity-error
85377                                                                             2
85378                                                                             args)))))
85379                                                                       (raise-syntax-error$1
85380                                                                        #f
85381                                                                        "bad syntax"
85382                                                                        spec_0))))
85383                                                                 (case-lambda
85384                                                                  ((for-meta3_0
85385                                                                    phase-level4_0
85386                                                                    spec5_0)
85387                                                                   (values
85388                                                                    #t
85389                                                                    for-meta3_0
85390                                                                    phase-level4_0
85391                                                                    spec5_0))
85392                                                                  (args
85393                                                                   (raise-binding-result-arity-error
85394                                                                    3
85395                                                                    args)))))
85396                                                              (case-lambda
85397                                                               ((ok?_0
85398                                                                 for-meta3_0
85399                                                                 phase-level4_0
85400                                                                 spec5_0)
85401                                                                (let ((p_0
85402                                                                       (syntax-e$1
85403                                                                        phase-level4_0)))
85404                                                                  (begin
85405                                                                    (if (phase?
85406                                                                         p_0)
85407                                                                      (void)
85408                                                                      (raise-syntax-error$1
85409                                                                       'provide
85410                                                                       "bad `for-meta' phase"
85411                                                                       orig-s_1
85412                                                                       spec_0))
85413                                                                    (call-with-values
85414                                                                     (lambda ()
85415                                                                       (loop_0
85416                                                                        spec5_0
85417                                                                        (phase+
85418                                                                         p_0
85419                                                                         at-phase_0)
85420                                                                        at-space-level_0
85421                                                                        protected?_0
85422                                                                        'phaseless
85423                                                                        orig-s_1))
85424                                                                     (case-lambda
85425                                                                      ((track-stxes_1
85426                                                                        exp-specs_1)
85427                                                                       (values
85428                                                                        null
85429                                                                        (list
85430                                                                         (syntax-track-origin*
85431                                                                          track-stxes_1
85432                                                                          (let ((temp12_0
85433                                                                                 (list*
85434                                                                                  for-meta3_0
85435                                                                                  phase-level4_0
85436                                                                                  exp-specs_1)))
85437                                                                            (rebuild.1
85438                                                                             #t
85439                                                                             spec_0
85440                                                                             temp12_0))))))
85441                                                                      (args
85442                                                                       (raise-binding-result-arity-error
85443                                                                        2
85444                                                                        args)))))))
85445                                                               (args
85446                                                                (raise-binding-result-arity-error
85447                                                                 4
85448                                                                 args)))))
85449                                                           (begin
85450                                                             (check-nested_0
85451                                                              'raw)
85452                                                             (call-with-values
85453                                                              (lambda ()
85454                                                                (call-with-values
85455                                                                 (lambda ()
85456                                                                   (let ((s_0
85457                                                                          (if (syntax?$1
85458                                                                               spec_0)
85459                                                                            (syntax-e$1
85460                                                                             spec_0)
85461                                                                            spec_0)))
85462                                                                     (if (pair?
85463                                                                          s_0)
85464                                                                       (let ((for-syntax15_0
85465                                                                              (let ((s_1
85466                                                                                     (car
85467                                                                                      s_0)))
85468                                                                                s_1)))
85469                                                                         (let ((spec16_0
85470                                                                                (let ((s_1
85471                                                                                       (cdr
85472                                                                                        s_0)))
85473                                                                                  (let ((s_2
85474                                                                                         (if (syntax?$1
85475                                                                                              s_1)
85476                                                                                           (syntax-e$1
85477                                                                                            s_1)
85478                                                                                           s_1)))
85479                                                                                    (let ((flat-s_0
85480                                                                                           (to-syntax-list.1
85481                                                                                            s_2)))
85482                                                                                      (if (not
85483                                                                                           flat-s_0)
85484                                                                                        (raise-syntax-error$1
85485                                                                                         #f
85486                                                                                         "bad syntax"
85487                                                                                         spec_0)
85488                                                                                        flat-s_0))))))
85489                                                                           (let ((for-syntax15_1
85490                                                                                  for-syntax15_0))
85491                                                                             (values
85492                                                                              for-syntax15_1
85493                                                                              spec16_0))))
85494                                                                       (raise-syntax-error$1
85495                                                                        #f
85496                                                                        "bad syntax"
85497                                                                        spec_0))))
85498                                                                 (case-lambda
85499                                                                  ((for-syntax13_0
85500                                                                    spec14_0)
85501                                                                   (values
85502                                                                    #t
85503                                                                    for-syntax13_0
85504                                                                    spec14_0))
85505                                                                  (args
85506                                                                   (raise-binding-result-arity-error
85507                                                                    2
85508                                                                    args)))))
85509                                                              (case-lambda
85510                                                               ((ok?_0
85511                                                                 for-syntax13_0
85512                                                                 spec14_0)
85513                                                                (call-with-values
85514                                                                 (lambda ()
85515                                                                   (loop_0
85516                                                                    spec14_0
85517                                                                    (phase+
85518                                                                     1
85519                                                                     at-phase_0)
85520                                                                    at-space-level_0
85521                                                                    protected?_0
85522                                                                    'phaseless
85523                                                                    orig-s_1))
85524                                                                 (case-lambda
85525                                                                  ((track-stxes_1
85526                                                                    exp-specs_1)
85527                                                                   (values
85528                                                                    null
85529                                                                    (list
85530                                                                     (syntax-track-origin*
85531                                                                      track-stxes_1
85532                                                                      (let ((temp18_0
85533                                                                             (list*
85534                                                                              for-syntax13_0
85535                                                                              exp-specs_1)))
85536                                                                        (rebuild.1
85537                                                                         #t
85538                                                                         spec_0
85539                                                                         temp18_0))))))
85540                                                                  (args
85541                                                                   (raise-binding-result-arity-error
85542                                                                    2
85543                                                                    args)))))
85544                                                               (args
85545                                                                (raise-binding-result-arity-error
85546                                                                 3
85547                                                                 args)))))))
85548                                                       (if (unsafe-fx<
85549                                                            index_0
85550                                                            4)
85551                                                         (begin
85552                                                           (check-nested_0
85553                                                            'raw)
85554                                                           (call-with-values
85555                                                            (lambda ()
85556                                                              (call-with-values
85557                                                               (lambda ()
85558                                                                 (let ((s_0
85559                                                                        (if (syntax?$1
85560                                                                             spec_0)
85561                                                                          (syntax-e$1
85562                                                                           spec_0)
85563                                                                          spec_0)))
85564                                                                   (if (pair?
85565                                                                        s_0)
85566                                                                     (let ((for-label21_0
85567                                                                            (let ((s_1
85568                                                                                   (car
85569                                                                                    s_0)))
85570                                                                              s_1)))
85571                                                                       (let ((spec22_0
85572                                                                              (let ((s_1
85573                                                                                     (cdr
85574                                                                                      s_0)))
85575                                                                                (let ((s_2
85576                                                                                       (if (syntax?$1
85577                                                                                            s_1)
85578                                                                                         (syntax-e$1
85579                                                                                          s_1)
85580                                                                                         s_1)))
85581                                                                                  (let ((flat-s_0
85582                                                                                         (to-syntax-list.1
85583                                                                                          s_2)))
85584                                                                                    (if (not
85585                                                                                         flat-s_0)
85586                                                                                      (raise-syntax-error$1
85587                                                                                       #f
85588                                                                                       "bad syntax"
85589                                                                                       spec_0)
85590                                                                                      flat-s_0))))))
85591                                                                         (let ((for-label21_1
85592                                                                                for-label21_0))
85593                                                                           (values
85594                                                                            for-label21_1
85595                                                                            spec22_0))))
85596                                                                     (raise-syntax-error$1
85597                                                                      #f
85598                                                                      "bad syntax"
85599                                                                      spec_0))))
85600                                                               (case-lambda
85601                                                                ((for-label19_0
85602                                                                  spec20_0)
85603                                                                 (values
85604                                                                  #t
85605                                                                  for-label19_0
85606                                                                  spec20_0))
85607                                                                (args
85608                                                                 (raise-binding-result-arity-error
85609                                                                  2
85610                                                                  args)))))
85611                                                            (case-lambda
85612                                                             ((ok?_0
85613                                                               for-label19_0
85614                                                               spec20_0)
85615                                                              (call-with-values
85616                                                               (lambda ()
85617                                                                 (loop_0
85618                                                                  spec20_0
85619                                                                  #f
85620                                                                  at-space-level_0
85621                                                                  protected?_0
85622                                                                  'phaseless
85623                                                                  orig-s_1))
85624                                                               (case-lambda
85625                                                                ((track-stxes_1
85626                                                                  exp-specs_1)
85627                                                                 (values
85628                                                                  null
85629                                                                  (list
85630                                                                   (syntax-track-origin*
85631                                                                    track-stxes_1
85632                                                                    (let ((temp24_0
85633                                                                           (list*
85634                                                                            for-label19_0
85635                                                                            exp-specs_1)))
85636                                                                      (rebuild.1
85637                                                                       #t
85638                                                                       spec_0
85639                                                                       temp24_0))))))
85640                                                                (args
85641                                                                 (raise-binding-result-arity-error
85642                                                                  2
85643                                                                  args)))))
85644                                                             (args
85645                                                              (raise-binding-result-arity-error
85646                                                               3
85647                                                               args)))))
85648                                                         (if (unsafe-fx<
85649                                                              index_0
85650                                                              5)
85651                                                           (begin
85652                                                             (check-nested_0
85653                                                              'phaseless)
85654                                                             (call-with-values
85655                                                              (lambda ()
85656                                                                (call-with-values
85657                                                                 (lambda ()
85658                                                                   (let ((s_0
85659                                                                          (if (syntax?$1
85660                                                                               spec_0)
85661                                                                            (syntax-e$1
85662                                                                             spec_0)
85663                                                                            spec_0)))
85664                                                                     (if (pair?
85665                                                                          s_0)
85666                                                                       (let ((for-space28_0
85667                                                                              (let ((s_1
85668                                                                                     (car
85669                                                                                      s_0)))
85670                                                                                s_1)))
85671                                                                         (call-with-values
85672                                                                          (lambda ()
85673                                                                            (let ((s_1
85674                                                                                   (cdr
85675                                                                                    s_0)))
85676                                                                              (let ((s_2
85677                                                                                     (if (syntax?$1
85678                                                                                          s_1)
85679                                                                                       (syntax-e$1
85680                                                                                        s_1)
85681                                                                                       s_1)))
85682                                                                                (if (pair?
85683                                                                                     s_2)
85684                                                                                  (let ((space31_0
85685                                                                                         (let ((s_3
85686                                                                                                (car
85687                                                                                                 s_2)))
85688                                                                                           s_3)))
85689                                                                                    (let ((spec32_0
85690                                                                                           (let ((s_3
85691                                                                                                  (cdr
85692                                                                                                   s_2)))
85693                                                                                             (let ((s_4
85694                                                                                                    (if (syntax?$1
85695                                                                                                         s_3)
85696                                                                                                      (syntax-e$1
85697                                                                                                       s_3)
85698                                                                                                      s_3)))
85699                                                                                               (let ((flat-s_0
85700                                                                                                      (to-syntax-list.1
85701                                                                                                       s_4)))
85702                                                                                                 (if (not
85703                                                                                                      flat-s_0)
85704                                                                                                   (raise-syntax-error$1
85705                                                                                                    #f
85706                                                                                                    "bad syntax"
85707                                                                                                    spec_0)
85708                                                                                                   flat-s_0))))))
85709                                                                                      (let ((space31_1
85710                                                                                             space31_0))
85711                                                                                        (values
85712                                                                                         space31_1
85713                                                                                         spec32_0))))
85714                                                                                  (raise-syntax-error$1
85715                                                                                   #f
85716                                                                                   "bad syntax"
85717                                                                                   spec_0)))))
85718                                                                          (case-lambda
85719                                                                           ((space29_0
85720                                                                             spec30_0)
85721                                                                            (let ((for-space28_1
85722                                                                                   for-space28_0))
85723                                                                              (values
85724                                                                               for-space28_1
85725                                                                               space29_0
85726                                                                               spec30_0)))
85727                                                                           (args
85728                                                                            (raise-binding-result-arity-error
85729                                                                             2
85730                                                                             args)))))
85731                                                                       (raise-syntax-error$1
85732                                                                        #f
85733                                                                        "bad syntax"
85734                                                                        spec_0))))
85735                                                                 (case-lambda
85736                                                                  ((for-space25_0
85737                                                                    space26_0
85738                                                                    spec27_0)
85739                                                                   (values
85740                                                                    #t
85741                                                                    for-space25_0
85742                                                                    space26_0
85743                                                                    spec27_0))
85744                                                                  (args
85745                                                                   (raise-binding-result-arity-error
85746                                                                    3
85747                                                                    args)))))
85748                                                              (case-lambda
85749                                                               ((ok?_0
85750                                                                 for-space25_0
85751                                                                 space26_0
85752                                                                 spec27_0)
85753                                                                (let ((space_0
85754                                                                       (syntax-e$1
85755                                                                        space26_0)))
85756                                                                  (begin
85757                                                                    (if (space?
85758                                                                         space_0)
85759                                                                      (void)
85760                                                                      (raise-syntax-error$1
85761                                                                       'provide
85762                                                                       "bad `for-space' space"
85763                                                                       orig-s_1
85764                                                                       spec_0))
85765                                                                    (call-with-values
85766                                                                     (lambda ()
85767                                                                       (loop_0
85768                                                                        spec27_0
85769                                                                        at-phase_0
85770                                                                        space_0
85771                                                                        protected?_0
85772                                                                        'spaceless
85773                                                                        orig-s_1))
85774                                                                     (case-lambda
85775                                                                      ((track-stxes_1
85776                                                                        exp-specs_1)
85777                                                                       (values
85778                                                                        null
85779                                                                        (list
85780                                                                         (syntax-track-origin*
85781                                                                          track-stxes_1
85782                                                                          (let ((temp34_0
85783                                                                                 (list*
85784                                                                                  for-space25_0
85785                                                                                  space26_0
85786                                                                                  exp-specs_1)))
85787                                                                            (rebuild.1
85788                                                                             #t
85789                                                                             spec_0
85790                                                                             temp34_0))))))
85791                                                                      (args
85792                                                                       (raise-binding-result-arity-error
85793                                                                        2
85794                                                                        args)))))))
85795                                                               (args
85796                                                                (raise-binding-result-arity-error
85797                                                                 4
85798                                                                 args)))))
85799                                                           (if (unsafe-fx<
85800                                                                index_0
85801                                                                6)
85802                                                             (begin
85803                                                               (check-nested_0
85804                                                                'spaceless)
85805                                                               (begin
85806                                                                 (if protected?_0
85807                                                                   (raise-syntax-error$1
85808                                                                    'provide
85809                                                                    "nested `protect' not allowed"
85810                                                                    orig-s_1
85811                                                                    spec_0)
85812                                                                   (void))
85813                                                                 (call-with-values
85814                                                                  (lambda ()
85815                                                                    (call-with-values
85816                                                                     (lambda ()
85817                                                                       (let ((s_0
85818                                                                              (if (syntax?$1
85819                                                                                   spec_0)
85820                                                                                (syntax-e$1
85821                                                                                 spec_0)
85822                                                                                spec_0)))
85823                                                                         (if (pair?
85824                                                                              s_0)
85825                                                                           (let ((protect37_0
85826                                                                                  (let ((s_1
85827                                                                                         (car
85828                                                                                          s_0)))
85829                                                                                    s_1)))
85830                                                                             (let ((p-spec38_0
85831                                                                                    (let ((s_1
85832                                                                                           (cdr
85833                                                                                            s_0)))
85834                                                                                      (let ((s_2
85835                                                                                             (if (syntax?$1
85836                                                                                                  s_1)
85837                                                                                               (syntax-e$1
85838                                                                                                s_1)
85839                                                                                               s_1)))
85840                                                                                        (let ((flat-s_0
85841                                                                                               (to-syntax-list.1
85842                                                                                                s_2)))
85843                                                                                          (if (not
85844                                                                                               flat-s_0)
85845                                                                                            (raise-syntax-error$1
85846                                                                                             #f
85847                                                                                             "bad syntax"
85848                                                                                             spec_0)
85849                                                                                            flat-s_0))))))
85850                                                                               (let ((protect37_1
85851                                                                                      protect37_0))
85852                                                                                 (values
85853                                                                                  protect37_1
85854                                                                                  p-spec38_0))))
85855                                                                           (raise-syntax-error$1
85856                                                                            #f
85857                                                                            "bad syntax"
85858                                                                            spec_0))))
85859                                                                     (case-lambda
85860                                                                      ((protect35_0
85861                                                                        p-spec36_0)
85862                                                                       (values
85863                                                                        #t
85864                                                                        protect35_0
85865                                                                        p-spec36_0))
85866                                                                      (args
85867                                                                       (raise-binding-result-arity-error
85868                                                                        2
85869                                                                        args)))))
85870                                                                  (case-lambda
85871                                                                   ((ok?_0
85872                                                                     protect35_0
85873                                                                     p-spec36_0)
85874                                                                    (call-with-values
85875                                                                     (lambda ()
85876                                                                       (loop_0
85877                                                                        p-spec36_0
85878                                                                        at-phase_0
85879                                                                        at-space-level_0
85880                                                                        #t
85881                                                                        layer_0
85882                                                                        orig-s_1))
85883                                                                     (case-lambda
85884                                                                      ((track-stxes_1
85885                                                                        exp-specs_1)
85886                                                                       (values
85887                                                                        null
85888                                                                        (list
85889                                                                         (syntax-track-origin*
85890                                                                          track-stxes_1
85891                                                                          (let ((temp40_0
85892                                                                                 (list*
85893                                                                                  protect35_0
85894                                                                                  exp-specs_1)))
85895                                                                            (rebuild.1
85896                                                                             #t
85897                                                                             spec_0
85898                                                                             temp40_0))))))
85899                                                                      (args
85900                                                                       (raise-binding-result-arity-error
85901                                                                        2
85902                                                                        args)))))
85903                                                                   (args
85904                                                                    (raise-binding-result-arity-error
85905                                                                     3
85906                                                                     args))))))
85907                                                             (begin
85908                                                               (check-nested_0
85909                                                                'spaceless)
85910                                                               (call-with-values
85911                                                                (lambda ()
85912                                                                  (call-with-values
85913                                                                   (lambda ()
85914                                                                     (let ((s_0
85915                                                                            (if (syntax?$1
85916                                                                                 spec_0)
85917                                                                              (syntax-e$1
85918                                                                               spec_0)
85919                                                                              spec_0)))
85920                                                                       (if (pair?
85921                                                                            s_0)
85922                                                                         (let ((rename44_0
85923                                                                                (let ((s_1
85924                                                                                       (car
85925                                                                                        s_0)))
85926                                                                                  s_1)))
85927                                                                           (call-with-values
85928                                                                            (lambda ()
85929                                                                              (let ((s_1
85930                                                                                     (cdr
85931                                                                                      s_0)))
85932                                                                                (let ((s_2
85933                                                                                       (if (syntax?$1
85934                                                                                            s_1)
85935                                                                                         (syntax-e$1
85936                                                                                          s_1)
85937                                                                                         s_1)))
85938                                                                                  (if (pair?
85939                                                                                       s_2)
85940                                                                                    (let ((id:from47_0
85941                                                                                           (let ((s_3
85942                                                                                                  (car
85943                                                                                                   s_2)))
85944                                                                                             (if (let ((or-part_0
85945                                                                                                        (if (syntax?$1
85946                                                                                                             s_3)
85947                                                                                                          (symbol?
85948                                                                                                           (syntax-e$1
85949                                                                                                            s_3))
85950                                                                                                          #f)))
85951                                                                                                   (if or-part_0
85952                                                                                                     or-part_0
85953                                                                                                     (symbol?
85954                                                                                                      s_3)))
85955                                                                                               s_3
85956                                                                                               (raise-syntax-error$1
85957                                                                                                #f
85958                                                                                                "not an identifier"
85959                                                                                                spec_0
85960                                                                                                s_3)))))
85961                                                                                      (let ((id:to48_0
85962                                                                                             (let ((s_3
85963                                                                                                    (cdr
85964                                                                                                     s_2)))
85965                                                                                               (let ((s_4
85966                                                                                                      (if (syntax?$1
85967                                                                                                           s_3)
85968                                                                                                        (syntax-e$1
85969                                                                                                         s_3)
85970                                                                                                        s_3)))
85971                                                                                                 (if (pair?
85972                                                                                                      s_4)
85973                                                                                                   (let ((id:to49_0
85974                                                                                                          (let ((s_5
85975                                                                                                                 (car
85976                                                                                                                  s_4)))
85977                                                                                                            (if (let ((or-part_0
85978                                                                                                                       (if (syntax?$1
85979                                                                                                                            s_5)
85980                                                                                                                         (symbol?
85981                                                                                                                          (syntax-e$1
85982                                                                                                                           s_5))
85983                                                                                                                         #f)))
85984                                                                                                                  (if or-part_0
85985                                                                                                                    or-part_0
85986                                                                                                                    (symbol?
85987                                                                                                                     s_5)))
85988                                                                                                              s_5
85989                                                                                                              (raise-syntax-error$1
85990                                                                                                               #f
85991                                                                                                               "not an identifier"
85992                                                                                                               spec_0
85993                                                                                                               s_5)))))
85994                                                                                                     (call-with-values
85995                                                                                                      (lambda ()
85996                                                                                                        (let ((s_5
85997                                                                                                               (cdr
85998                                                                                                                s_4)))
85999                                                                                                          (let ((s_6
86000                                                                                                                 (if (syntax?$1
86001                                                                                                                      s_5)
86002                                                                                                                   (syntax-e$1
86003                                                                                                                    s_5)
86004                                                                                                                   s_5)))
86005                                                                                                            (if (null?
86006                                                                                                                 s_6)
86007                                                                                                              (values)
86008                                                                                                              (raise-syntax-error$1
86009                                                                                                               #f
86010                                                                                                               "bad syntax"
86011                                                                                                               spec_0)))))
86012                                                                                                      (case-lambda
86013                                                                                                       (()
86014                                                                                                        (let ((id:to49_1
86015                                                                                                               id:to49_0))
86016                                                                                                          (values
86017                                                                                                           id:to49_1)))
86018                                                                                                       (args
86019                                                                                                        (raise-binding-result-arity-error
86020                                                                                                         0
86021                                                                                                         args)))))
86022                                                                                                   (raise-syntax-error$1
86023                                                                                                    #f
86024                                                                                                    "bad syntax"
86025                                                                                                    spec_0))))))
86026                                                                                        (let ((id:from47_1
86027                                                                                               id:from47_0))
86028                                                                                          (values
86029                                                                                           id:from47_1
86030                                                                                           id:to48_0))))
86031                                                                                    (raise-syntax-error$1
86032                                                                                     #f
86033                                                                                     "bad syntax"
86034                                                                                     spec_0)))))
86035                                                                            (case-lambda
86036                                                                             ((id:from45_0
86037                                                                               id:to46_0)
86038                                                                              (let ((rename44_1
86039                                                                                     rename44_0))
86040                                                                                (values
86041                                                                                 rename44_1
86042                                                                                 id:from45_0
86043                                                                                 id:to46_0)))
86044                                                                             (args
86045                                                                              (raise-binding-result-arity-error
86046                                                                               2
86047                                                                               args)))))
86048                                                                         (raise-syntax-error$1
86049                                                                          #f
86050                                                                          "bad syntax"
86051                                                                          spec_0))))
86052                                                                   (case-lambda
86053                                                                    ((rename41_0
86054                                                                      id:from42_0
86055                                                                      id:to43_0)
86056                                                                     (values
86057                                                                      #t
86058                                                                      rename41_0
86059                                                                      id:from42_0
86060                                                                      id:to43_0))
86061                                                                    (args
86062                                                                     (raise-binding-result-arity-error
86063                                                                      3
86064                                                                      args)))))
86065                                                                (case-lambda
86066                                                                 ((ok?_0
86067                                                                   rename41_0
86068                                                                   id:from42_0
86069                                                                   id:to43_0)
86070                                                                  (begin
86071                                                                    (parse-identifier!
86072                                                                     id:from42_0
86073                                                                     orig-s_1
86074                                                                     (syntax-e$1
86075                                                                      id:to43_0)
86076                                                                     at-phase_0
86077                                                                     at-space-level_0
86078                                                                     ns_0
86079                                                                     rp_0
86080                                                                     protected?_0)
86081                                                                    (values
86082                                                                     null
86083                                                                     (list
86084                                                                      spec_0))))
86085                                                                 (args
86086                                                                  (raise-binding-result-arity-error
86087                                                                   4
86088                                                                   args)))))))))
86089                                                     (if (unsafe-fx<
86090                                                          index_0
86091                                                          10)
86092                                                       (if (unsafe-fx<
86093                                                            index_0
86094                                                            8)
86095                                                         (begin
86096                                                           (check-nested_0
86097                                                            'phaseless)
86098                                                           (call-with-values
86099                                                            (lambda ()
86100                                                              (call-with-values
86101                                                               (lambda ()
86102                                                                 (let ((s_0
86103                                                                        (if (syntax?$1
86104                                                                             spec_0)
86105                                                                          (syntax-e$1
86106                                                                           spec_0)
86107                                                                          spec_0)))
86108                                                                   (if (pair?
86109                                                                        s_0)
86110                                                                     (let ((struct53_0
86111                                                                            (let ((s_1
86112                                                                                   (car
86113                                                                                    s_0)))
86114                                                                              s_1)))
86115                                                                       (call-with-values
86116                                                                        (lambda ()
86117                                                                          (let ((s_1
86118                                                                                 (cdr
86119                                                                                  s_0)))
86120                                                                            (let ((s_2
86121                                                                                   (if (syntax?$1
86122                                                                                        s_1)
86123                                                                                     (syntax-e$1
86124                                                                                      s_1)
86125                                                                                     s_1)))
86126                                                                              (if (pair?
86127                                                                                   s_2)
86128                                                                                (let ((id:struct56_0
86129                                                                                       (let ((s_3
86130                                                                                              (car
86131                                                                                               s_2)))
86132                                                                                         (if (let ((or-part_0
86133                                                                                                    (if (syntax?$1
86134                                                                                                         s_3)
86135                                                                                                      (symbol?
86136                                                                                                       (syntax-e$1
86137                                                                                                        s_3))
86138                                                                                                      #f)))
86139                                                                                               (if or-part_0
86140                                                                                                 or-part_0
86141                                                                                                 (symbol?
86142                                                                                                  s_3)))
86143                                                                                           s_3
86144                                                                                           (raise-syntax-error$1
86145                                                                                            #f
86146                                                                                            "not an identifier"
86147                                                                                            spec_0
86148                                                                                            s_3)))))
86149                                                                                  (let ((id:field57_0
86150                                                                                         (let ((s_3
86151                                                                                                (cdr
86152                                                                                                 s_2)))
86153                                                                                           (let ((s_4
86154                                                                                                  (if (syntax?$1
86155                                                                                                       s_3)
86156                                                                                                    (syntax-e$1
86157                                                                                                     s_3)
86158                                                                                                    s_3)))
86159                                                                                             (if (pair?
86160                                                                                                  s_4)
86161                                                                                               (let ((id:field58_0
86162                                                                                                      (let ((s_5
86163                                                                                                             (car
86164                                                                                                              s_4)))
86165                                                                                                        (let ((s_6
86166                                                                                                               (if (syntax?$1
86167                                                                                                                    s_5)
86168                                                                                                                 (syntax-e$1
86169                                                                                                                  s_5)
86170                                                                                                                 s_5)))
86171                                                                                                          (let ((flat-s_0
86172                                                                                                                 (to-syntax-list.1
86173                                                                                                                  s_6)))
86174                                                                                                            (if (not
86175                                                                                                                 flat-s_0)
86176                                                                                                              (raise-syntax-error$1
86177                                                                                                               #f
86178                                                                                                               "bad syntax"
86179                                                                                                               spec_0)
86180                                                                                                              (let ((id:field_0
86181                                                                                                                     (begin
86182                                                                                                                       (letrec*
86183                                                                                                                        ((for-loop_1
86184                                                                                                                          (|#%name|
86185                                                                                                                           for-loop
86186                                                                                                                           (lambda (id:field_0
86187                                                                                                                                    lst_1)
86188                                                                                                                             (begin
86189                                                                                                                               (if (pair?
86190                                                                                                                                    lst_1)
86191                                                                                                                                 (let ((s_7
86192                                                                                                                                        (unsafe-car
86193                                                                                                                                         lst_1)))
86194                                                                                                                                   (let ((rest_1
86195                                                                                                                                          (unsafe-cdr
86196                                                                                                                                           lst_1)))
86197                                                                                                                                     (let ((id:field_1
86198                                                                                                                                            (let ((id:field_1
86199                                                                                                                                                   (let ((id:field59_0
86200                                                                                                                                                          (if (let ((or-part_0
86201                                                                                                                                                                     (if (syntax?$1
86202                                                                                                                                                                          s_7)
86203                                                                                                                                                                       (symbol?
86204                                                                                                                                                                        (syntax-e$1
86205                                                                                                                                                                         s_7))
86206                                                                                                                                                                       #f)))
86207                                                                                                                                                                (if or-part_0
86208                                                                                                                                                                  or-part_0
86209                                                                                                                                                                  (symbol?
86210                                                                                                                                                                   s_7)))
86211                                                                                                                                                            s_7
86212                                                                                                                                                            (raise-syntax-error$1
86213                                                                                                                                                             #f
86214                                                                                                                                                             "not an identifier"
86215                                                                                                                                                             spec_0
86216                                                                                                                                                             s_7))))
86217                                                                                                                                                     (cons
86218                                                                                                                                                      id:field59_0
86219                                                                                                                                                      id:field_0))))
86220                                                                                                                                              (values
86221                                                                                                                                               id:field_1))))
86222                                                                                                                                       (for-loop_1
86223                                                                                                                                        id:field_1
86224                                                                                                                                        rest_1))))
86225                                                                                                                                 id:field_0))))))
86226                                                                                                                        (for-loop_1
86227                                                                                                                         null
86228                                                                                                                         flat-s_0)))))
86229                                                                                                                (reverse$1
86230                                                                                                                 id:field_0))))))))
86231                                                                                                 (call-with-values
86232                                                                                                  (lambda ()
86233                                                                                                    (let ((s_5
86234                                                                                                           (cdr
86235                                                                                                            s_4)))
86236                                                                                                      (let ((s_6
86237                                                                                                             (if (syntax?$1
86238                                                                                                                  s_5)
86239                                                                                                               (syntax-e$1
86240                                                                                                                s_5)
86241                                                                                                               s_5)))
86242                                                                                                        (if (null?
86243                                                                                                             s_6)
86244                                                                                                          (values)
86245                                                                                                          (raise-syntax-error$1
86246                                                                                                           #f
86247                                                                                                           "bad syntax"
86248                                                                                                           spec_0)))))
86249                                                                                                  (case-lambda
86250                                                                                                   (()
86251                                                                                                    (let ((id:field58_1
86252                                                                                                           id:field58_0))
86253                                                                                                      (values
86254                                                                                                       id:field58_1)))
86255                                                                                                   (args
86256                                                                                                    (raise-binding-result-arity-error
86257                                                                                                     0
86258                                                                                                     args)))))
86259                                                                                               (raise-syntax-error$1
86260                                                                                                #f
86261                                                                                                "bad syntax"
86262                                                                                                spec_0))))))
86263                                                                                    (let ((id:struct56_1
86264                                                                                           id:struct56_0))
86265                                                                                      (values
86266                                                                                       id:struct56_1
86267                                                                                       id:field57_0))))
86268                                                                                (raise-syntax-error$1
86269                                                                                 #f
86270                                                                                 "bad syntax"
86271                                                                                 spec_0)))))
86272                                                                        (case-lambda
86273                                                                         ((id:struct54_0
86274                                                                           id:field55_0)
86275                                                                          (let ((struct53_1
86276                                                                                 struct53_0))
86277                                                                            (values
86278                                                                             struct53_1
86279                                                                             id:struct54_0
86280                                                                             id:field55_0)))
86281                                                                         (args
86282                                                                          (raise-binding-result-arity-error
86283                                                                           2
86284                                                                           args)))))
86285                                                                     (raise-syntax-error$1
86286                                                                      #f
86287                                                                      "bad syntax"
86288                                                                      spec_0))))
86289                                                               (case-lambda
86290                                                                ((struct50_0
86291                                                                  id:struct51_0
86292                                                                  id:field52_0)
86293                                                                 (values
86294                                                                  #t
86295                                                                  struct50_0
86296                                                                  id:struct51_0
86297                                                                  id:field52_0))
86298                                                                (args
86299                                                                 (raise-binding-result-arity-error
86300                                                                  3
86301                                                                  args)))))
86302                                                            (case-lambda
86303                                                             ((ok?_0
86304                                                               struct50_0
86305                                                               id:struct51_0
86306                                                               id:field52_0)
86307                                                              (begin
86308                                                                (parse-struct!
86309                                                                 id:struct51_0
86310                                                                 orig-s_1
86311                                                                 id:field52_0
86312                                                                 at-phase_0
86313                                                                 ns_0
86314                                                                 rp_0
86315                                                                 protected?_0)
86316                                                                (values
86317                                                                 null
86318                                                                 (list
86319                                                                  spec_0))))
86320                                                             (args
86321                                                              (raise-binding-result-arity-error
86322                                                               4
86323                                                               args)))))
86324                                                         (if (unsafe-fx<
86325                                                              index_0
86326                                                              9)
86327                                                           (begin
86328                                                             (check-nested_0
86329                                                              'spaceless)
86330                                                             (call-with-values
86331                                                              (lambda ()
86332                                                                (call-with-values
86333                                                                 (lambda ()
86334                                                                   (let ((s_0
86335                                                                          (if (syntax?$1
86336                                                                               spec_0)
86337                                                                            (syntax-e$1
86338                                                                             spec_0)
86339                                                                            spec_0)))
86340                                                                     (if (pair?
86341                                                                          s_0)
86342                                                                       (let ((all-from62_0
86343                                                                              (let ((s_1
86344                                                                                     (car
86345                                                                                      s_0)))
86346                                                                                s_1)))
86347                                                                         (let ((mod-path63_0
86348                                                                                (let ((s_1
86349                                                                                       (cdr
86350                                                                                        s_0)))
86351                                                                                  (let ((s_2
86352                                                                                         (if (syntax?$1
86353                                                                                              s_1)
86354                                                                                           (syntax-e$1
86355                                                                                            s_1)
86356                                                                                           s_1)))
86357                                                                                    (if (pair?
86358                                                                                         s_2)
86359                                                                                      (let ((mod-path64_0
86360                                                                                             (let ((s_3
86361                                                                                                    (car
86362                                                                                                     s_2)))
86363                                                                                               s_3)))
86364                                                                                        (call-with-values
86365                                                                                         (lambda ()
86366                                                                                           (let ((s_3
86367                                                                                                  (cdr
86368                                                                                                   s_2)))
86369                                                                                             (let ((s_4
86370                                                                                                    (if (syntax?$1
86371                                                                                                         s_3)
86372                                                                                                      (syntax-e$1
86373                                                                                                       s_3)
86374                                                                                                      s_3)))
86375                                                                                               (if (null?
86376                                                                                                    s_4)
86377                                                                                                 (values)
86378                                                                                                 (raise-syntax-error$1
86379                                                                                                  #f
86380                                                                                                  "bad syntax"
86381                                                                                                  spec_0)))))
86382                                                                                         (case-lambda
86383                                                                                          (()
86384                                                                                           (let ((mod-path64_1
86385                                                                                                  mod-path64_0))
86386                                                                                             (values
86387                                                                                              mod-path64_1)))
86388                                                                                          (args
86389                                                                                           (raise-binding-result-arity-error
86390                                                                                            0
86391                                                                                            args)))))
86392                                                                                      (raise-syntax-error$1
86393                                                                                       #f
86394                                                                                       "bad syntax"
86395                                                                                       spec_0))))))
86396                                                                           (let ((all-from62_1
86397                                                                                  all-from62_0))
86398                                                                             (values
86399                                                                              all-from62_1
86400                                                                              mod-path63_0))))
86401                                                                       (raise-syntax-error$1
86402                                                                        #f
86403                                                                        "bad syntax"
86404                                                                        spec_0))))
86405                                                                 (case-lambda
86406                                                                  ((all-from60_0
86407                                                                    mod-path61_0)
86408                                                                   (values
86409                                                                    #t
86410                                                                    all-from60_0
86411                                                                    mod-path61_0))
86412                                                                  (args
86413                                                                   (raise-binding-result-arity-error
86414                                                                    2
86415                                                                    args)))))
86416                                                              (case-lambda
86417                                                               ((ok?_0
86418                                                                 all-from60_0
86419                                                                 mod-path61_0)
86420                                                                (begin
86421                                                                  (parse-all-from
86422                                                                   mod-path61_0
86423                                                                   orig-s_1
86424                                                                   self_0
86425                                                                   null
86426                                                                   at-phase_0
86427                                                                   at-space-level_0
86428                                                                   ns_0
86429                                                                   rp_0
86430                                                                   protected?_0
86431                                                                   ctx_0)
86432                                                                  (values
86433                                                                   null
86434                                                                   (list
86435                                                                    spec_0))))
86436                                                               (args
86437                                                                (raise-binding-result-arity-error
86438                                                                 3
86439                                                                 args)))))
86440                                                           (begin
86441                                                             (check-nested_0
86442                                                              'spaceless)
86443                                                             (call-with-values
86444                                                              (lambda ()
86445                                                                (call-with-values
86446                                                                 (lambda ()
86447                                                                   (let ((s_0
86448                                                                          (if (syntax?$1
86449                                                                               spec_0)
86450                                                                            (syntax-e$1
86451                                                                             spec_0)
86452                                                                            spec_0)))
86453                                                                     (if (pair?
86454                                                                          s_0)
86455                                                                       (let ((all-from-except68_0
86456                                                                              (let ((s_1
86457                                                                                     (car
86458                                                                                      s_0)))
86459                                                                                s_1)))
86460                                                                         (call-with-values
86461                                                                          (lambda ()
86462                                                                            (let ((s_1
86463                                                                                   (cdr
86464                                                                                    s_0)))
86465                                                                              (let ((s_2
86466                                                                                     (if (syntax?$1
86467                                                                                          s_1)
86468                                                                                       (syntax-e$1
86469                                                                                        s_1)
86470                                                                                       s_1)))
86471                                                                                (if (pair?
86472                                                                                     s_2)
86473                                                                                  (let ((mod-path71_0
86474                                                                                         (let ((s_3
86475                                                                                                (car
86476                                                                                                 s_2)))
86477                                                                                           s_3)))
86478                                                                                    (let ((id72_0
86479                                                                                           (let ((s_3
86480                                                                                                  (cdr
86481                                                                                                   s_2)))
86482                                                                                             (let ((s_4
86483                                                                                                    (if (syntax?$1
86484                                                                                                         s_3)
86485                                                                                                      (syntax-e$1
86486                                                                                                       s_3)
86487                                                                                                      s_3)))
86488                                                                                               (let ((flat-s_0
86489                                                                                                      (to-syntax-list.1
86490                                                                                                       s_4)))
86491                                                                                                 (if (not
86492                                                                                                      flat-s_0)
86493                                                                                                   (raise-syntax-error$1
86494                                                                                                    #f
86495                                                                                                    "bad syntax"
86496                                                                                                    spec_0)
86497                                                                                                   (let ((id_0
86498                                                                                                          (begin
86499                                                                                                            (letrec*
86500                                                                                                             ((for-loop_1
86501                                                                                                               (|#%name|
86502                                                                                                                for-loop
86503                                                                                                                (lambda (id_0
86504                                                                                                                         lst_1)
86505                                                                                                                  (begin
86506                                                                                                                    (if (pair?
86507                                                                                                                         lst_1)
86508                                                                                                                      (let ((s_5
86509                                                                                                                             (unsafe-car
86510                                                                                                                              lst_1)))
86511                                                                                                                        (let ((rest_1
86512                                                                                                                               (unsafe-cdr
86513                                                                                                                                lst_1)))
86514                                                                                                                          (let ((id_1
86515                                                                                                                                 (let ((id_1
86516                                                                                                                                        (let ((id73_0
86517                                                                                                                                               (if (let ((or-part_0
86518                                                                                                                                                          (if (syntax?$1
86519                                                                                                                                                               s_5)
86520                                                                                                                                                            (symbol?
86521                                                                                                                                                             (syntax-e$1
86522                                                                                                                                                              s_5))
86523                                                                                                                                                            #f)))
86524                                                                                                                                                     (if or-part_0
86525                                                                                                                                                       or-part_0
86526                                                                                                                                                       (symbol?
86527                                                                                                                                                        s_5)))
86528                                                                                                                                                 s_5
86529                                                                                                                                                 (raise-syntax-error$1
86530                                                                                                                                                  #f
86531                                                                                                                                                  "not an identifier"
86532                                                                                                                                                  spec_0
86533                                                                                                                                                  s_5))))
86534                                                                                                                                          (cons
86535                                                                                                                                           id73_0
86536                                                                                                                                           id_0))))
86537                                                                                                                                   (values
86538                                                                                                                                    id_1))))
86539                                                                                                                            (for-loop_1
86540                                                                                                                             id_1
86541                                                                                                                             rest_1))))
86542                                                                                                                      id_0))))))
86543                                                                                                             (for-loop_1
86544                                                                                                              null
86545                                                                                                              flat-s_0)))))
86546                                                                                                     (reverse$1
86547                                                                                                      id_0))))))))
86548                                                                                      (let ((mod-path71_1
86549                                                                                             mod-path71_0))
86550                                                                                        (values
86551                                                                                         mod-path71_1
86552                                                                                         id72_0))))
86553                                                                                  (raise-syntax-error$1
86554                                                                                   #f
86555                                                                                   "bad syntax"
86556                                                                                   spec_0)))))
86557                                                                          (case-lambda
86558                                                                           ((mod-path69_0
86559                                                                             id70_0)
86560                                                                            (let ((all-from-except68_1
86561                                                                                   all-from-except68_0))
86562                                                                              (values
86563                                                                               all-from-except68_1
86564                                                                               mod-path69_0
86565                                                                               id70_0)))
86566                                                                           (args
86567                                                                            (raise-binding-result-arity-error
86568                                                                             2
86569                                                                             args)))))
86570                                                                       (raise-syntax-error$1
86571                                                                        #f
86572                                                                        "bad syntax"
86573                                                                        spec_0))))
86574                                                                 (case-lambda
86575                                                                  ((all-from-except65_0
86576                                                                    mod-path66_0
86577                                                                    id67_0)
86578                                                                   (values
86579                                                                    #t
86580                                                                    all-from-except65_0
86581                                                                    mod-path66_0
86582                                                                    id67_0))
86583                                                                  (args
86584                                                                   (raise-binding-result-arity-error
86585                                                                    3
86586                                                                    args)))))
86587                                                              (case-lambda
86588                                                               ((ok?_0
86589                                                                 all-from-except65_0
86590                                                                 mod-path66_0
86591                                                                 id67_0)
86592                                                                (begin
86593                                                                  (parse-all-from
86594                                                                   mod-path66_0
86595                                                                   orig-s_1
86596                                                                   self_0
86597                                                                   id67_0
86598                                                                   at-phase_0
86599                                                                   at-space-level_0
86600                                                                   ns_0
86601                                                                   rp_0
86602                                                                   protected?_0
86603                                                                   ctx_0)
86604                                                                  (values
86605                                                                   null
86606                                                                   (list
86607                                                                    spec_0))))
86608                                                               (args
86609                                                                (raise-binding-result-arity-error
86610                                                                 4
86611                                                                 args)))))))
86612                                                       (if (unsafe-fx<
86613                                                            index_0
86614                                                            12)
86615                                                         (if (unsafe-fx<
86616                                                              index_0
86617                                                              11)
86618                                                           (begin
86619                                                             (check-nested_0
86620                                                              'spaceless)
86621                                                             (call-with-values
86622                                                              (lambda ()
86623                                                                (let ((all-defined74_0
86624                                                                       (let ((s_0
86625                                                                              (if (syntax?$1
86626                                                                                   spec_0)
86627                                                                                (syntax-e$1
86628                                                                                 spec_0)
86629                                                                                spec_0)))
86630                                                                         (if (pair?
86631                                                                              s_0)
86632                                                                           (let ((all-defined75_0
86633                                                                                  (let ((s_1
86634                                                                                         (car
86635                                                                                          s_0)))
86636                                                                                    s_1)))
86637                                                                             (call-with-values
86638                                                                              (lambda ()
86639                                                                                (let ((s_1
86640                                                                                       (cdr
86641                                                                                        s_0)))
86642                                                                                  (let ((s_2
86643                                                                                         (if (syntax?$1
86644                                                                                              s_1)
86645                                                                                           (syntax-e$1
86646                                                                                            s_1)
86647                                                                                           s_1)))
86648                                                                                    (if (null?
86649                                                                                         s_2)
86650                                                                                      (values)
86651                                                                                      (raise-syntax-error$1
86652                                                                                       #f
86653                                                                                       "bad syntax"
86654                                                                                       spec_0)))))
86655                                                                              (case-lambda
86656                                                                               (()
86657                                                                                (let ((all-defined75_1
86658                                                                                       all-defined75_0))
86659                                                                                  (values
86660                                                                                   all-defined75_1)))
86661                                                                               (args
86662                                                                                (raise-binding-result-arity-error
86663                                                                                 0
86664                                                                                 args)))))
86665                                                                           (raise-syntax-error$1
86666                                                                            #f
86667                                                                            "bad syntax"
86668                                                                            spec_0)))))
86669                                                                  (values
86670                                                                   #t
86671                                                                   all-defined74_0)))
86672                                                              (case-lambda
86673                                                               ((ok?_0
86674                                                                 all-defined74_0)
86675                                                                (begin
86676                                                                  (parse-all-from-module
86677                                                                   self_0
86678                                                                   spec_0
86679                                                                   orig-s_1
86680                                                                   null
86681                                                                   #f
86682                                                                   at-phase_0
86683                                                                   at-space-level_0
86684                                                                   ns_0
86685                                                                   rp_0
86686                                                                   protected?_0)
86687                                                                  (values
86688                                                                   null
86689                                                                   (list
86690                                                                    spec_0))))
86691                                                               (args
86692                                                                (raise-binding-result-arity-error
86693                                                                 2
86694                                                                 args)))))
86695                                                           (begin
86696                                                             (check-nested_0
86697                                                              'spaceless)
86698                                                             (call-with-values
86699                                                              (lambda ()
86700                                                                (call-with-values
86701                                                                 (lambda ()
86702                                                                   (let ((s_0
86703                                                                          (if (syntax?$1
86704                                                                               spec_0)
86705                                                                            (syntax-e$1
86706                                                                             spec_0)
86707                                                                            spec_0)))
86708                                                                     (if (pair?
86709                                                                          s_0)
86710                                                                       (let ((all-defined-except78_0
86711                                                                              (let ((s_1
86712                                                                                     (car
86713                                                                                      s_0)))
86714                                                                                s_1)))
86715                                                                         (let ((id79_0
86716                                                                                (let ((s_1
86717                                                                                       (cdr
86718                                                                                        s_0)))
86719                                                                                  (let ((s_2
86720                                                                                         (if (syntax?$1
86721                                                                                              s_1)
86722                                                                                           (syntax-e$1
86723                                                                                            s_1)
86724                                                                                           s_1)))
86725                                                                                    (let ((flat-s_0
86726                                                                                           (to-syntax-list.1
86727                                                                                            s_2)))
86728                                                                                      (if (not
86729                                                                                           flat-s_0)
86730                                                                                        (raise-syntax-error$1
86731                                                                                         #f
86732                                                                                         "bad syntax"
86733                                                                                         spec_0)
86734                                                                                        (let ((id_0
86735                                                                                               (begin
86736                                                                                                 (letrec*
86737                                                                                                  ((for-loop_1
86738                                                                                                    (|#%name|
86739                                                                                                     for-loop
86740                                                                                                     (lambda (id_0
86741                                                                                                              lst_1)
86742                                                                                                       (begin
86743                                                                                                         (if (pair?
86744                                                                                                              lst_1)
86745                                                                                                           (let ((s_3
86746                                                                                                                  (unsafe-car
86747                                                                                                                   lst_1)))
86748                                                                                                             (let ((rest_1
86749                                                                                                                    (unsafe-cdr
86750                                                                                                                     lst_1)))
86751                                                                                                               (let ((id_1
86752                                                                                                                      (let ((id_1
86753                                                                                                                             (let ((id80_0
86754                                                                                                                                    (if (let ((or-part_0
86755                                                                                                                                               (if (syntax?$1
86756                                                                                                                                                    s_3)
86757                                                                                                                                                 (symbol?
86758                                                                                                                                                  (syntax-e$1
86759                                                                                                                                                   s_3))
86760                                                                                                                                                 #f)))
86761                                                                                                                                          (if or-part_0
86762                                                                                                                                            or-part_0
86763                                                                                                                                            (symbol?
86764                                                                                                                                             s_3)))
86765                                                                                                                                      s_3
86766                                                                                                                                      (raise-syntax-error$1
86767                                                                                                                                       #f
86768                                                                                                                                       "not an identifier"
86769                                                                                                                                       spec_0
86770                                                                                                                                       s_3))))
86771                                                                                                                               (cons
86772                                                                                                                                id80_0
86773                                                                                                                                id_0))))
86774                                                                                                                        (values
86775                                                                                                                         id_1))))
86776                                                                                                                 (for-loop_1
86777                                                                                                                  id_1
86778                                                                                                                  rest_1))))
86779                                                                                                           id_0))))))
86780                                                                                                  (for-loop_1
86781                                                                                                   null
86782                                                                                                   flat-s_0)))))
86783                                                                                          (reverse$1
86784                                                                                           id_0))))))))
86785                                                                           (let ((all-defined-except78_1
86786                                                                                  all-defined-except78_0))
86787                                                                             (values
86788                                                                              all-defined-except78_1
86789                                                                              id79_0))))
86790                                                                       (raise-syntax-error$1
86791                                                                        #f
86792                                                                        "bad syntax"
86793                                                                        spec_0))))
86794                                                                 (case-lambda
86795                                                                  ((all-defined-except76_0
86796                                                                    id77_0)
86797                                                                   (values
86798                                                                    #t
86799                                                                    all-defined-except76_0
86800                                                                    id77_0))
86801                                                                  (args
86802                                                                   (raise-binding-result-arity-error
86803                                                                    2
86804                                                                    args)))))
86805                                                              (case-lambda
86806                                                               ((ok?_0
86807                                                                 all-defined-except76_0
86808                                                                 id77_0)
86809                                                                (begin
86810                                                                  (parse-all-from-module
86811                                                                   self_0
86812                                                                   spec_0
86813                                                                   orig-s_1
86814                                                                   id77_0
86815                                                                   #f
86816                                                                   at-phase_0
86817                                                                   at-space-level_0
86818                                                                   ns_0
86819                                                                   rp_0
86820                                                                   protected?_0)
86821                                                                  (values
86822                                                                   null
86823                                                                   (list
86824                                                                    spec_0))))
86825                                                               (args
86826                                                                (raise-binding-result-arity-error
86827                                                                 3
86828                                                                 args))))))
86829                                                         (if (unsafe-fx<
86830                                                              index_0
86831                                                              13)
86832                                                           (begin
86833                                                             (check-nested_0
86834                                                              'spaceless)
86835                                                             (call-with-values
86836                                                              (lambda ()
86837                                                                (call-with-values
86838                                                                 (lambda ()
86839                                                                   (let ((s_0
86840                                                                          (if (syntax?$1
86841                                                                               spec_0)
86842                                                                            (syntax-e$1
86843                                                                             spec_0)
86844                                                                            spec_0)))
86845                                                                     (if (pair?
86846                                                                          s_0)
86847                                                                       (let ((prefix-all-defined83_0
86848                                                                              (let ((s_1
86849                                                                                     (car
86850                                                                                      s_0)))
86851                                                                                s_1)))
86852                                                                         (let ((id:prefix84_0
86853                                                                                (let ((s_1
86854                                                                                       (cdr
86855                                                                                        s_0)))
86856                                                                                  (let ((s_2
86857                                                                                         (if (syntax?$1
86858                                                                                              s_1)
86859                                                                                           (syntax-e$1
86860                                                                                            s_1)
86861                                                                                           s_1)))
86862                                                                                    (if (pair?
86863                                                                                         s_2)
86864                                                                                      (let ((id:prefix85_0
86865                                                                                             (let ((s_3
86866                                                                                                    (car
86867                                                                                                     s_2)))
86868                                                                                               (if (let ((or-part_0
86869                                                                                                          (if (syntax?$1
86870                                                                                                               s_3)
86871                                                                                                            (symbol?
86872                                                                                                             (syntax-e$1
86873                                                                                                              s_3))
86874                                                                                                            #f)))
86875                                                                                                     (if or-part_0
86876                                                                                                       or-part_0
86877                                                                                                       (symbol?
86878                                                                                                        s_3)))
86879                                                                                                 s_3
86880                                                                                                 (raise-syntax-error$1
86881                                                                                                  #f
86882                                                                                                  "not an identifier"
86883                                                                                                  spec_0
86884                                                                                                  s_3)))))
86885                                                                                        (call-with-values
86886                                                                                         (lambda ()
86887                                                                                           (let ((s_3
86888                                                                                                  (cdr
86889                                                                                                   s_2)))
86890                                                                                             (let ((s_4
86891                                                                                                    (if (syntax?$1
86892                                                                                                         s_3)
86893                                                                                                      (syntax-e$1
86894                                                                                                       s_3)
86895                                                                                                      s_3)))
86896                                                                                               (if (null?
86897                                                                                                    s_4)
86898                                                                                                 (values)
86899                                                                                                 (raise-syntax-error$1
86900                                                                                                  #f
86901                                                                                                  "bad syntax"
86902                                                                                                  spec_0)))))
86903                                                                                         (case-lambda
86904                                                                                          (()
86905                                                                                           (let ((id:prefix85_1
86906                                                                                                  id:prefix85_0))
86907                                                                                             (values
86908                                                                                              id:prefix85_1)))
86909                                                                                          (args
86910                                                                                           (raise-binding-result-arity-error
86911                                                                                            0
86912                                                                                            args)))))
86913                                                                                      (raise-syntax-error$1
86914                                                                                       #f
86915                                                                                       "bad syntax"
86916                                                                                       spec_0))))))
86917                                                                           (let ((prefix-all-defined83_1
86918                                                                                  prefix-all-defined83_0))
86919                                                                             (values
86920                                                                              prefix-all-defined83_1
86921                                                                              id:prefix84_0))))
86922                                                                       (raise-syntax-error$1
86923                                                                        #f
86924                                                                        "bad syntax"
86925                                                                        spec_0))))
86926                                                                 (case-lambda
86927                                                                  ((prefix-all-defined81_0
86928                                                                    id:prefix82_0)
86929                                                                   (values
86930                                                                    #t
86931                                                                    prefix-all-defined81_0
86932                                                                    id:prefix82_0))
86933                                                                  (args
86934                                                                   (raise-binding-result-arity-error
86935                                                                    2
86936                                                                    args)))))
86937                                                              (case-lambda
86938                                                               ((ok?_0
86939                                                                 prefix-all-defined81_0
86940                                                                 id:prefix82_0)
86941                                                                (begin
86942                                                                  (parse-all-from-module
86943                                                                   self_0
86944                                                                   spec_0
86945                                                                   orig-s_1
86946                                                                   null
86947                                                                   (syntax-e$1
86948                                                                    id:prefix82_0)
86949                                                                   at-phase_0
86950                                                                   at-space-level_0
86951                                                                   ns_0
86952                                                                   rp_0
86953                                                                   protected?_0)
86954                                                                  (values
86955                                                                   null
86956                                                                   (list
86957                                                                    spec_0))))
86958                                                               (args
86959                                                                (raise-binding-result-arity-error
86960                                                                 3
86961                                                                 args)))))
86962                                                           (if (unsafe-fx<
86963                                                                index_0
86964                                                                14)
86965                                                             (begin
86966                                                               (check-nested_0
86967                                                                'spaceless)
86968                                                               (call-with-values
86969                                                                (lambda ()
86970                                                                  (call-with-values
86971                                                                   (lambda ()
86972                                                                     (let ((s_0
86973                                                                            (if (syntax?$1
86974                                                                                 spec_0)
86975                                                                              (syntax-e$1
86976                                                                               spec_0)
86977                                                                              spec_0)))
86978                                                                       (if (pair?
86979                                                                            s_0)
86980                                                                         (let ((prefix-all-defined-except89_0
86981                                                                                (let ((s_1
86982                                                                                       (car
86983                                                                                        s_0)))
86984                                                                                  s_1)))
86985                                                                           (call-with-values
86986                                                                            (lambda ()
86987                                                                              (let ((s_1
86988                                                                                     (cdr
86989                                                                                      s_0)))
86990                                                                                (let ((s_2
86991                                                                                       (if (syntax?$1
86992                                                                                            s_1)
86993                                                                                         (syntax-e$1
86994                                                                                          s_1)
86995                                                                                         s_1)))
86996                                                                                  (if (pair?
86997                                                                                       s_2)
86998                                                                                    (let ((id:prefix92_0
86999                                                                                           (let ((s_3
87000                                                                                                  (car
87001                                                                                                   s_2)))
87002                                                                                             (if (let ((or-part_0
87003                                                                                                        (if (syntax?$1
87004                                                                                                             s_3)
87005                                                                                                          (symbol?
87006                                                                                                           (syntax-e$1
87007                                                                                                            s_3))
87008                                                                                                          #f)))
87009                                                                                                   (if or-part_0
87010                                                                                                     or-part_0
87011                                                                                                     (symbol?
87012                                                                                                      s_3)))
87013                                                                                               s_3
87014                                                                                               (raise-syntax-error$1
87015                                                                                                #f
87016                                                                                                "not an identifier"
87017                                                                                                spec_0
87018                                                                                                s_3)))))
87019                                                                                      (let ((id93_0
87020                                                                                             (let ((s_3
87021                                                                                                    (cdr
87022                                                                                                     s_2)))
87023                                                                                               (let ((s_4
87024                                                                                                      (if (syntax?$1
87025                                                                                                           s_3)
87026                                                                                                        (syntax-e$1
87027                                                                                                         s_3)
87028                                                                                                        s_3)))
87029                                                                                                 (let ((flat-s_0
87030                                                                                                        (to-syntax-list.1
87031                                                                                                         s_4)))
87032                                                                                                   (if (not
87033                                                                                                        flat-s_0)
87034                                                                                                     (raise-syntax-error$1
87035                                                                                                      #f
87036                                                                                                      "bad syntax"
87037                                                                                                      spec_0)
87038                                                                                                     (let ((id_0
87039                                                                                                            (begin
87040                                                                                                              (letrec*
87041                                                                                                               ((for-loop_1
87042                                                                                                                 (|#%name|
87043                                                                                                                  for-loop
87044                                                                                                                  (lambda (id_0
87045                                                                                                                           lst_1)
87046                                                                                                                    (begin
87047                                                                                                                      (if (pair?
87048                                                                                                                           lst_1)
87049                                                                                                                        (let ((s_5
87050                                                                                                                               (unsafe-car
87051                                                                                                                                lst_1)))
87052                                                                                                                          (let ((rest_1
87053                                                                                                                                 (unsafe-cdr
87054                                                                                                                                  lst_1)))
87055                                                                                                                            (let ((id_1
87056                                                                                                                                   (let ((id_1
87057                                                                                                                                          (let ((id94_0
87058                                                                                                                                                 (if (let ((or-part_0
87059                                                                                                                                                            (if (syntax?$1
87060                                                                                                                                                                 s_5)
87061                                                                                                                                                              (symbol?
87062                                                                                                                                                               (syntax-e$1
87063                                                                                                                                                                s_5))
87064                                                                                                                                                              #f)))
87065                                                                                                                                                       (if or-part_0
87066                                                                                                                                                         or-part_0
87067                                                                                                                                                         (symbol?
87068                                                                                                                                                          s_5)))
87069                                                                                                                                                   s_5
87070                                                                                                                                                   (raise-syntax-error$1
87071                                                                                                                                                    #f
87072                                                                                                                                                    "not an identifier"
87073                                                                                                                                                    spec_0
87074                                                                                                                                                    s_5))))
87075                                                                                                                                            (cons
87076                                                                                                                                             id94_0
87077                                                                                                                                             id_0))))
87078                                                                                                                                     (values
87079                                                                                                                                      id_1))))
87080                                                                                                                              (for-loop_1
87081                                                                                                                               id_1
87082                                                                                                                               rest_1))))
87083                                                                                                                        id_0))))))
87084                                                                                                               (for-loop_1
87085                                                                                                                null
87086                                                                                                                flat-s_0)))))
87087                                                                                                       (reverse$1
87088                                                                                                        id_0))))))))
87089                                                                                        (let ((id:prefix92_1
87090                                                                                               id:prefix92_0))
87091                                                                                          (values
87092                                                                                           id:prefix92_1
87093                                                                                           id93_0))))
87094                                                                                    (raise-syntax-error$1
87095                                                                                     #f
87096                                                                                     "bad syntax"
87097                                                                                     spec_0)))))
87098                                                                            (case-lambda
87099                                                                             ((id:prefix90_0
87100                                                                               id91_0)
87101                                                                              (let ((prefix-all-defined-except89_1
87102                                                                                     prefix-all-defined-except89_0))
87103                                                                                (values
87104                                                                                 prefix-all-defined-except89_1
87105                                                                                 id:prefix90_0
87106                                                                                 id91_0)))
87107                                                                             (args
87108                                                                              (raise-binding-result-arity-error
87109                                                                               2
87110                                                                               args)))))
87111                                                                         (raise-syntax-error$1
87112                                                                          #f
87113                                                                          "bad syntax"
87114                                                                          spec_0))))
87115                                                                   (case-lambda
87116                                                                    ((prefix-all-defined-except86_0
87117                                                                      id:prefix87_0
87118                                                                      id88_0)
87119                                                                     (values
87120                                                                      #t
87121                                                                      prefix-all-defined-except86_0
87122                                                                      id:prefix87_0
87123                                                                      id88_0))
87124                                                                    (args
87125                                                                     (raise-binding-result-arity-error
87126                                                                      3
87127                                                                      args)))))
87128                                                                (case-lambda
87129                                                                 ((ok?_0
87130                                                                   prefix-all-defined-except86_0
87131                                                                   id:prefix87_0
87132                                                                   id88_0)
87133                                                                  (begin
87134                                                                    (parse-all-from-module
87135                                                                     self_0
87136                                                                     spec_0
87137                                                                     orig-s_1
87138                                                                     id88_0
87139                                                                     (syntax-e$1
87140                                                                      id:prefix87_0)
87141                                                                     at-phase_0
87142                                                                     at-space-level_0
87143                                                                     ns_0
87144                                                                     rp_0
87145                                                                     protected?_0)
87146                                                                    (values
87147                                                                     null
87148                                                                     (list
87149                                                                      spec_0))))
87150                                                                 (args
87151                                                                  (raise-binding-result-arity-error
87152                                                                   4
87153                                                                   args)))))
87154                                                             (call-with-values
87155                                                              (lambda ()
87156                                                                (if (let ((s_0
87157                                                                           (if (syntax?$1
87158                                                                                spec_0)
87159                                                                             (syntax-e$1
87160                                                                              spec_0)
87161                                                                             spec_0)))
87162                                                                      (if (pair?
87163                                                                           s_0)
87164                                                                        (if (let ((s_1
87165                                                                                   (car
87166                                                                                    s_0)))
87167                                                                              #t)
87168                                                                          (let ((s_1
87169                                                                                 (cdr
87170                                                                                  s_0)))
87171                                                                            (let ((s_2
87172                                                                                   (if (syntax?$1
87173                                                                                        s_1)
87174                                                                                     (syntax-e$1
87175                                                                                      s_1)
87176                                                                                     s_1)))
87177                                                                              (if (pair?
87178                                                                                   s_2)
87179                                                                                (if (let ((s_3
87180                                                                                           (car
87181                                                                                            s_2)))
87182                                                                                      (let ((s_4
87183                                                                                             (if (syntax?$1
87184                                                                                                  s_3)
87185                                                                                               (syntax-e$1
87186                                                                                                s_3)
87187                                                                                               s_3)))
87188                                                                                        (if (pair?
87189                                                                                             s_4)
87190                                                                                          (if (let ((s_5
87191                                                                                                     (car
87192                                                                                                      s_4)))
87193                                                                                                (let ((or-part_0
87194                                                                                                       (if (syntax?$1
87195                                                                                                            s_5)
87196                                                                                                         (symbol?
87197                                                                                                          (syntax-e$1
87198                                                                                                           s_5))
87199                                                                                                         #f)))
87200                                                                                                  (if or-part_0
87201                                                                                                    or-part_0
87202                                                                                                    (symbol?
87203                                                                                                     s_5))))
87204                                                                                            (let ((s_5
87205                                                                                                   (cdr
87206                                                                                                    s_4)))
87207                                                                                              #t)
87208                                                                                            #f)
87209                                                                                          #f)))
87210                                                                                  (let ((s_3
87211                                                                                         (cdr
87212                                                                                          s_2)))
87213                                                                                    (let ((s_4
87214                                                                                           (if (syntax?$1
87215                                                                                                s_3)
87216                                                                                             (syntax-e$1
87217                                                                                              s_3)
87218                                                                                             s_3)))
87219                                                                                      (if (pair?
87220                                                                                           s_4)
87221                                                                                        (if (let ((s_5
87222                                                                                                   (car
87223                                                                                                    s_4)))
87224                                                                                              #t)
87225                                                                                          (let ((s_5
87226                                                                                                 (cdr
87227                                                                                                  s_4)))
87228                                                                                            (let ((s_6
87229                                                                                                   (if (syntax?$1
87230                                                                                                        s_5)
87231                                                                                                     (syntax-e$1
87232                                                                                                      s_5)
87233                                                                                                     s_5)))
87234                                                                                              (null?
87235                                                                                               s_6)))
87236                                                                                          #f)
87237                                                                                        #f)))
87238                                                                                  #f)
87239                                                                                #f)))
87240                                                                          #f)
87241                                                                        #f))
87242                                                                  (call-with-values
87243                                                                   (lambda ()
87244                                                                     (let ((s_0
87245                                                                            (if (syntax?$1
87246                                                                                 spec_0)
87247                                                                              (syntax-e$1
87248                                                                               spec_0)
87249                                                                              spec_0)))
87250                                                                       (let ((expand99_0
87251                                                                              (let ((s_1
87252                                                                                     (car
87253                                                                                      s_0)))
87254                                                                                s_1)))
87255                                                                         (call-with-values
87256                                                                          (lambda ()
87257                                                                            (let ((s_1
87258                                                                                   (cdr
87259                                                                                    s_0)))
87260                                                                              (let ((s_2
87261                                                                                     (if (syntax?$1
87262                                                                                          s_1)
87263                                                                                       (syntax-e$1
87264                                                                                        s_1)
87265                                                                                       s_1)))
87266                                                                                (call-with-values
87267                                                                                 (lambda ()
87268                                                                                   (let ((s_3
87269                                                                                          (car
87270                                                                                           s_2)))
87271                                                                                     (let ((s_4
87272                                                                                            (if (syntax?$1
87273                                                                                                 s_3)
87274                                                                                              (syntax-e$1
87275                                                                                               s_3)
87276                                                                                              s_3)))
87277                                                                                       (let ((id106_0
87278                                                                                              (let ((s_5
87279                                                                                                     (car
87280                                                                                                      s_4)))
87281                                                                                                s_5)))
87282                                                                                         (let ((datum107_0
87283                                                                                                (let ((s_5
87284                                                                                                       (cdr
87285                                                                                                        s_4)))
87286                                                                                                  s_5)))
87287                                                                                           (let ((id106_1
87288                                                                                                  id106_0))
87289                                                                                             (values
87290                                                                                              id106_1
87291                                                                                              datum107_0)))))))
87292                                                                                 (case-lambda
87293                                                                                  ((id103_0
87294                                                                                    datum104_0)
87295                                                                                   (let ((orig105_0
87296                                                                                          (let ((s_3
87297                                                                                                 (cdr
87298                                                                                                  s_2)))
87299                                                                                            (let ((s_4
87300                                                                                                   (if (syntax?$1
87301                                                                                                        s_3)
87302                                                                                                     (syntax-e$1
87303                                                                                                      s_3)
87304                                                                                                     s_3)))
87305                                                                                              (let ((orig108_0
87306                                                                                                     (let ((s_5
87307                                                                                                            (car
87308                                                                                                             s_4)))
87309                                                                                                       s_5)))
87310                                                                                                (call-with-values
87311                                                                                                 (lambda ()
87312                                                                                                   (let ((s_5
87313                                                                                                          (cdr
87314                                                                                                           s_4)))
87315                                                                                                     (let ((s_6
87316                                                                                                            (if (syntax?$1
87317                                                                                                                 s_5)
87318                                                                                                              (syntax-e$1
87319                                                                                                               s_5)
87320                                                                                                              s_5)))
87321                                                                                                       (values))))
87322                                                                                                 (case-lambda
87323                                                                                                  (()
87324                                                                                                   (let ((orig108_1
87325                                                                                                          orig108_0))
87326                                                                                                     (values
87327                                                                                                      orig108_1)))
87328                                                                                                  (args
87329                                                                                                   (raise-binding-result-arity-error
87330                                                                                                    0
87331                                                                                                    args)))))))))
87332                                                                                     (let ((id103_1
87333                                                                                            id103_0)
87334                                                                                           (datum104_1
87335                                                                                            datum104_0))
87336                                                                                       (values
87337                                                                                        id103_1
87338                                                                                        datum104_1
87339                                                                                        orig105_0))))
87340                                                                                  (args
87341                                                                                   (raise-binding-result-arity-error
87342                                                                                    2
87343                                                                                    args)))))))
87344                                                                          (case-lambda
87345                                                                           ((id100_0
87346                                                                             datum101_0
87347                                                                             orig102_0)
87348                                                                            (let ((expand99_1
87349                                                                                   expand99_0))
87350                                                                              (values
87351                                                                               expand99_1
87352                                                                               id100_0
87353                                                                               datum101_0
87354                                                                               orig102_0)))
87355                                                                           (args
87356                                                                            (raise-binding-result-arity-error
87357                                                                             3
87358                                                                             args)))))))
87359                                                                   (case-lambda
87360                                                                    ((expand95_0
87361                                                                      id96_0
87362                                                                      datum97_0
87363                                                                      orig98_0)
87364                                                                     (values
87365                                                                      #t
87366                                                                      expand95_0
87367                                                                      id96_0
87368                                                                      datum97_0
87369                                                                      orig98_0))
87370                                                                    (args
87371                                                                     (raise-binding-result-arity-error
87372                                                                      4
87373                                                                      args))))
87374                                                                  (values
87375                                                                   #f
87376                                                                   #f
87377                                                                   #f
87378                                                                   #f
87379                                                                   #f)))
87380                                                              (case-lambda
87381                                                               ((ok?_0
87382                                                                 expand95_0
87383                                                                 id96_0
87384                                                                 datum97_0
87385                                                                 orig98_0)
87386                                                                (call-with-values
87387                                                                 (lambda ()
87388                                                                   (if (if (not
87389                                                                            ok?_0)
87390                                                                         #t
87391                                                                         #f)
87392                                                                     (call-with-values
87393                                                                      (lambda ()
87394                                                                        (let ((s_0
87395                                                                               (if (syntax?$1
87396                                                                                    spec_0)
87397                                                                                 (syntax-e$1
87398                                                                                  spec_0)
87399                                                                                 spec_0)))
87400                                                                          (if (pair?
87401                                                                               s_0)
87402                                                                            (let ((expand112_0
87403                                                                                   (let ((s_1
87404                                                                                          (car
87405                                                                                           s_0)))
87406                                                                                     s_1)))
87407                                                                              (call-with-values
87408                                                                               (lambda ()
87409                                                                                 (let ((s_1
87410                                                                                        (cdr
87411                                                                                         s_0)))
87412                                                                                   (let ((s_2
87413                                                                                          (if (syntax?$1
87414                                                                                               s_1)
87415                                                                                            (syntax-e$1
87416                                                                                             s_1)
87417                                                                                            s_1)))
87418                                                                                     (if (pair?
87419                                                                                          s_2)
87420                                                                                       (call-with-values
87421                                                                                        (lambda ()
87422                                                                                          (let ((s_3
87423                                                                                                 (car
87424                                                                                                  s_2)))
87425                                                                                            (let ((s_4
87426                                                                                                   (if (syntax?$1
87427                                                                                                        s_3)
87428                                                                                                     (syntax-e$1
87429                                                                                                      s_3)
87430                                                                                                     s_3)))
87431                                                                                              (if (pair?
87432                                                                                                   s_4)
87433                                                                                                (let ((id117_0
87434                                                                                                       (let ((s_5
87435                                                                                                              (car
87436                                                                                                               s_4)))
87437                                                                                                         (if (let ((or-part_0
87438                                                                                                                    (if (syntax?$1
87439                                                                                                                         s_5)
87440                                                                                                                      (symbol?
87441                                                                                                                       (syntax-e$1
87442                                                                                                                        s_5))
87443                                                                                                                      #f)))
87444                                                                                                               (if or-part_0
87445                                                                                                                 or-part_0
87446                                                                                                                 (symbol?
87447                                                                                                                  s_5)))
87448                                                                                                           s_5
87449                                                                                                           (raise-syntax-error$1
87450                                                                                                            #f
87451                                                                                                            "not an identifier"
87452                                                                                                            spec_0
87453                                                                                                            s_5)))))
87454                                                                                                  (let ((datum118_0
87455                                                                                                         (let ((s_5
87456                                                                                                                (cdr
87457                                                                                                                 s_4)))
87458                                                                                                           s_5)))
87459                                                                                                    (let ((id117_1
87460                                                                                                           id117_0))
87461                                                                                                      (values
87462                                                                                                       id117_1
87463                                                                                                       datum118_0))))
87464                                                                                                (raise-syntax-error$1
87465                                                                                                 #f
87466                                                                                                 "bad syntax"
87467                                                                                                 spec_0)))))
87468                                                                                        (case-lambda
87469                                                                                         ((id115_0
87470                                                                                           datum116_0)
87471                                                                                          (call-with-values
87472                                                                                           (lambda ()
87473                                                                                             (let ((s_3
87474                                                                                                    (cdr
87475                                                                                                     s_2)))
87476                                                                                               (let ((s_4
87477                                                                                                      (if (syntax?$1
87478                                                                                                           s_3)
87479                                                                                                        (syntax-e$1
87480                                                                                                         s_3)
87481                                                                                                        s_3)))
87482                                                                                                 (if (null?
87483                                                                                                      s_4)
87484                                                                                                   (values)
87485                                                                                                   (raise-syntax-error$1
87486                                                                                                    #f
87487                                                                                                    "bad syntax"
87488                                                                                                    spec_0)))))
87489                                                                                           (case-lambda
87490                                                                                            (()
87491                                                                                             (let ((id115_1
87492                                                                                                    id115_0)
87493                                                                                                   (datum116_1
87494                                                                                                    datum116_0))
87495                                                                                               (values
87496                                                                                                id115_1
87497                                                                                                datum116_1)))
87498                                                                                            (args
87499                                                                                             (raise-binding-result-arity-error
87500                                                                                              0
87501                                                                                              args)))))
87502                                                                                         (args
87503                                                                                          (raise-binding-result-arity-error
87504                                                                                           2
87505                                                                                           args))))
87506                                                                                       (raise-syntax-error$1
87507                                                                                        #f
87508                                                                                        "bad syntax"
87509                                                                                        spec_0)))))
87510                                                                               (case-lambda
87511                                                                                ((id113_0
87512                                                                                  datum114_0)
87513                                                                                 (let ((expand112_1
87514                                                                                        expand112_0))
87515                                                                                   (values
87516                                                                                    expand112_1
87517                                                                                    id113_0
87518                                                                                    datum114_0)))
87519                                                                                (args
87520                                                                                 (raise-binding-result-arity-error
87521                                                                                  2
87522                                                                                  args)))))
87523                                                                            (raise-syntax-error$1
87524                                                                             #f
87525                                                                             "bad syntax"
87526                                                                             spec_0))))
87527                                                                      (case-lambda
87528                                                                       ((expand109_0
87529                                                                         id110_0
87530                                                                         datum111_0)
87531                                                                        (values
87532                                                                         #t
87533                                                                         expand109_0
87534                                                                         id110_0
87535                                                                         datum111_0))
87536                                                                       (args
87537                                                                        (raise-binding-result-arity-error
87538                                                                         3
87539                                                                         args))))
87540                                                                     (values
87541                                                                      #f
87542                                                                      #f
87543                                                                      #f
87544                                                                      #f)))
87545                                                                 (case-lambda
87546                                                                  ((ok?_1
87547                                                                    expand109_0
87548                                                                    id110_0
87549                                                                    datum111_0)
87550                                                                   (call-with-values
87551                                                                    (lambda ()
87552                                                                      (call-with-values
87553                                                                       (lambda ()
87554                                                                         (let ((s_0
87555                                                                                (if (syntax?$1
87556                                                                                     spec_0)
87557                                                                                  (syntax-e$1
87558                                                                                   spec_0)
87559                                                                                  spec_0)))
87560                                                                           (if (pair?
87561                                                                                s_0)
87562                                                                             (let ((expand122_0
87563                                                                                    (let ((s_1
87564                                                                                           (car
87565                                                                                            s_0)))
87566                                                                                      s_1)))
87567                                                                               (call-with-values
87568                                                                                (lambda ()
87569                                                                                  (let ((s_1
87570                                                                                         (cdr
87571                                                                                          s_0)))
87572                                                                                    (let ((s_2
87573                                                                                           (if (syntax?$1
87574                                                                                                s_1)
87575                                                                                             (syntax-e$1
87576                                                                                              s_1)
87577                                                                                             s_1)))
87578                                                                                      (if (pair?
87579                                                                                           s_2)
87580                                                                                        (let ((form125_0
87581                                                                                               (let ((s_3
87582                                                                                                      (car
87583                                                                                                       s_2)))
87584                                                                                                 s_3)))
87585                                                                                          (let ((_0
87586                                                                                                 (let ((s_3
87587                                                                                                        (cdr
87588                                                                                                         s_2)))
87589                                                                                                   s_3)))
87590                                                                                            (let ((form125_1
87591                                                                                                   form125_0))
87592                                                                                              (values
87593                                                                                               form125_1
87594                                                                                               _0))))
87595                                                                                        (raise-syntax-error$1
87596                                                                                         #f
87597                                                                                         "bad syntax"
87598                                                                                         spec_0)))))
87599                                                                                (case-lambda
87600                                                                                 ((form123_0
87601                                                                                   _0)
87602                                                                                  (let ((expand122_1
87603                                                                                         expand122_0))
87604                                                                                    (values
87605                                                                                     expand122_1
87606                                                                                     form123_0
87607                                                                                     _0)))
87608                                                                                 (args
87609                                                                                  (raise-binding-result-arity-error
87610                                                                                   2
87611                                                                                   args)))))
87612                                                                             (raise-syntax-error$1
87613                                                                              #f
87614                                                                              "bad syntax"
87615                                                                              spec_0))))
87616                                                                       (case-lambda
87617                                                                        ((expand119_0
87618                                                                          form120_0
87619                                                                          _0)
87620                                                                         (values
87621                                                                          #t
87622                                                                          expand119_0
87623                                                                          form120_0
87624                                                                          _0))
87625                                                                        (args
87626                                                                         (raise-binding-result-arity-error
87627                                                                          3
87628                                                                          args)))))
87629                                                                    (case-lambda
87630                                                                     ((ok?_2
87631                                                                       expand119_0
87632                                                                       form120_0
87633                                                                       _0)
87634                                                                      (let ((exp-spec_0
87635                                                                             (let ((temp132_0
87636                                                                                    (if (expand-context/outer?
87637                                                                                         ctx_0)
87638                                                                                      (let ((the-struct_0
87639                                                                                             (root-expand-context/outer-inner
87640                                                                                              ctx_0)))
87641                                                                                        (let ((inner134_0
87642                                                                                               (if (expand-context/inner?
87643                                                                                                    the-struct_0)
87644                                                                                                 (let ((stops135_0
87645                                                                                                        (free-id-set
87646                                                                                                         at-phase_0
87647                                                                                                         (list
87648                                                                                                          (core-id
87649                                                                                                           'begin
87650                                                                                                           at-phase_0)))))
87651                                                                                                   (expand-context/inner2.1
87652                                                                                                    (root-expand-context/inner-self-mpi
87653                                                                                                     the-struct_0)
87654                                                                                                    (root-expand-context/inner-module-scopes
87655                                                                                                     the-struct_0)
87656                                                                                                    (root-expand-context/inner-top-level-bind-scope
87657                                                                                                     the-struct_0)
87658                                                                                                    (root-expand-context/inner-all-scopes-stx
87659                                                                                                     the-struct_0)
87660                                                                                                    (root-expand-context/inner-defined-syms
87661                                                                                                     the-struct_0)
87662                                                                                                    (root-expand-context/inner-counter
87663                                                                                                     the-struct_0)
87664                                                                                                    (root-expand-context/inner-lift-key
87665                                                                                                     the-struct_0)
87666                                                                                                    (expand-context/inner-to-parsed?
87667                                                                                                     the-struct_0)
87668                                                                                                    (expand-context/inner-phase
87669                                                                                                     the-struct_0)
87670                                                                                                    (expand-context/inner-namespace
87671                                                                                                     the-struct_0)
87672                                                                                                    (expand-context/inner-just-once?
87673                                                                                                     the-struct_0)
87674                                                                                                    (expand-context/inner-module-begin-k
87675                                                                                                     the-struct_0)
87676                                                                                                    (expand-context/inner-allow-unbound?
87677                                                                                                     the-struct_0)
87678                                                                                                    (expand-context/inner-in-local-expand?
87679                                                                                                     the-struct_0)
87680                                                                                                    (|expand-context/inner-keep-#%expression?|
87681                                                                                                     the-struct_0)
87682                                                                                                    stops135_0
87683                                                                                                    (expand-context/inner-declared-submodule-names
87684                                                                                                     the-struct_0)
87685                                                                                                    (expand-context/inner-lifts
87686                                                                                                     the-struct_0)
87687                                                                                                    (expand-context/inner-lift-envs
87688                                                                                                     the-struct_0)
87689                                                                                                    (expand-context/inner-module-lifts
87690                                                                                                     the-struct_0)
87691                                                                                                    (expand-context/inner-require-lifts
87692                                                                                                     the-struct_0)
87693                                                                                                    (expand-context/inner-to-module-lifts
87694                                                                                                     the-struct_0)
87695                                                                                                    (expand-context/inner-requires+provides
87696                                                                                                     the-struct_0)
87697                                                                                                    (expand-context/inner-observer
87698                                                                                                     the-struct_0)
87699                                                                                                    (expand-context/inner-for-serializable?
87700                                                                                                     the-struct_0)
87701                                                                                                    (expand-context/inner-to-correlated-linklet?
87702                                                                                                     the-struct_0)
87703                                                                                                    (expand-context/inner-normalize-locals?
87704                                                                                                     the-struct_0)
87705                                                                                                    (expand-context/inner-parsing-expanded?
87706                                                                                                     the-struct_0)
87707                                                                                                    (expand-context/inner-skip-visit-available?
87708                                                                                                     the-struct_0)))
87709                                                                                                 (raise-argument-error
87710                                                                                                  'struct-copy
87711                                                                                                  "expand-context/inner?"
87712                                                                                                  the-struct_0))))
87713                                                                                          (expand-context/outer1.1
87714                                                                                           inner134_0
87715                                                                                           (root-expand-context/outer-post-expansion
87716                                                                                            ctx_0)
87717                                                                                           (root-expand-context/outer-use-site-scopes
87718                                                                                            ctx_0)
87719                                                                                           (root-expand-context/outer-frame-id
87720                                                                                            ctx_0)
87721                                                                                           (expand-context/outer-context
87722                                                                                            ctx_0)
87723                                                                                           (expand-context/outer-env
87724                                                                                            ctx_0)
87725                                                                                           (expand-context/outer-scopes
87726                                                                                            ctx_0)
87727                                                                                           #f
87728                                                                                           (expand-context/outer-binding-layer
87729                                                                                            ctx_0)
87730                                                                                           (expand-context/outer-reference-records
87731                                                                                            ctx_0)
87732                                                                                           (expand-context/outer-only-immediate?
87733                                                                                            ctx_0)
87734                                                                                           (expand-context/outer-need-eventually-defined
87735                                                                                            ctx_0)
87736                                                                                           (expand-context/outer-current-introduction-scopes
87737                                                                                            ctx_0)
87738                                                                                           (expand-context/outer-current-use-scopes
87739                                                                                            ctx_0)
87740                                                                                           (expand-context/outer-name
87741                                                                                            ctx_0))))
87742                                                                                      (raise-argument-error
87743                                                                                       'struct-copy
87744                                                                                       "expand-context/outer?"
87745                                                                                       ctx_0))))
87746                                                                               (expand.1
87747                                                                                #f
87748                                                                                #f
87749                                                                                form120_0
87750                                                                                temp132_0))))
87751                                                                        (begin
87752                                                                          (if (if (pair?
87753                                                                                   (syntax-e$1
87754                                                                                    exp-spec_0))
87755                                                                                (if (identifier?
87756                                                                                     (car
87757                                                                                      (syntax-e$1
87758                                                                                       exp-spec_0)))
87759                                                                                  (eq?
87760                                                                                   'begin
87761                                                                                   (core-form-sym
87762                                                                                    exp-spec_0
87763                                                                                    at-phase_0))
87764                                                                                  #f)
87765                                                                                #f)
87766                                                                            (void)
87767                                                                            (raise-syntax-error$1
87768                                                                             'provide
87769                                                                             "expansion was not a `begin' sequence"
87770                                                                             orig-s_1
87771                                                                             spec_0))
87772                                                                          (call-with-values
87773                                                                           (lambda ()
87774                                                                             (call-with-values
87775                                                                              (lambda ()
87776                                                                                (let ((s_0
87777                                                                                       (if (syntax?$1
87778                                                                                            exp-spec_0)
87779                                                                                         (syntax-e$1
87780                                                                                          exp-spec_0)
87781                                                                                         exp-spec_0)))
87782                                                                                  (if (pair?
87783                                                                                       s_0)
87784                                                                                    (let ((begin129_0
87785                                                                                           (let ((s_1
87786                                                                                                  (car
87787                                                                                                   s_0)))
87788                                                                                             s_1)))
87789                                                                                      (let ((spec130_0
87790                                                                                             (let ((s_1
87791                                                                                                    (cdr
87792                                                                                                     s_0)))
87793                                                                                               (let ((s_2
87794                                                                                                      (if (syntax?$1
87795                                                                                                           s_1)
87796                                                                                                        (syntax-e$1
87797                                                                                                         s_1)
87798                                                                                                        s_1)))
87799                                                                                                 (let ((flat-s_0
87800                                                                                                        (to-syntax-list.1
87801                                                                                                         s_2)))
87802                                                                                                   (if (not
87803                                                                                                        flat-s_0)
87804                                                                                                     (raise-syntax-error$1
87805                                                                                                      #f
87806                                                                                                      "bad syntax"
87807                                                                                                      exp-spec_0)
87808                                                                                                     flat-s_0))))))
87809                                                                                        (let ((begin129_1
87810                                                                                               begin129_0))
87811                                                                                          (values
87812                                                                                           begin129_1
87813                                                                                           spec130_0))))
87814                                                                                    (raise-syntax-error$1
87815                                                                                     #f
87816                                                                                     "bad syntax"
87817                                                                                     exp-spec_0))))
87818                                                                              (case-lambda
87819                                                                               ((begin127_0
87820                                                                                 spec128_0)
87821                                                                                (values
87822                                                                                 #t
87823                                                                                 begin127_0
87824                                                                                 spec128_0))
87825                                                                               (args
87826                                                                                (raise-binding-result-arity-error
87827                                                                                 2
87828                                                                                 args)))))
87829                                                                           (case-lambda
87830                                                                            ((ok?_3
87831                                                                              begin127_0
87832                                                                              spec128_0)
87833                                                                             (call-with-values
87834                                                                              (lambda ()
87835                                                                                (loop_0
87836                                                                                 spec128_0
87837                                                                                 at-phase_0
87838                                                                                 at-space-level_0
87839                                                                                 protected?_0
87840                                                                                 layer_0
87841                                                                                 (if orig98_0
87842                                                                                   orig98_0
87843                                                                                   orig-s_1)))
87844                                                                              (case-lambda
87845                                                                               ((track-stxes_1
87846                                                                                 exp-specs_1)
87847                                                                                (values
87848                                                                                 (list*
87849                                                                                  spec_0
87850                                                                                  exp-spec_0
87851                                                                                  track-stxes_1)
87852                                                                                 exp-specs_1))
87853                                                                               (args
87854                                                                                (raise-binding-result-arity-error
87855                                                                                 2
87856                                                                                 args)))))
87857                                                                            (args
87858                                                                             (raise-binding-result-arity-error
87859                                                                              3
87860                                                                              args)))))))
87861                                                                     (args
87862                                                                      (raise-binding-result-arity-error
87863                                                                       4
87864                                                                       args)))))
87865                                                                  (args
87866                                                                   (raise-binding-result-arity-error
87867                                                                    4
87868                                                                    args)))))
87869                                                               (args
87870                                                                (raise-binding-result-arity-error
87871                                                                 5
87872                                                                 args)))))))))))))
87873                                           (case-lambda
87874                                            ((track-stxes1_0 exp-specs2_0)
87875                                             (values
87876                                              (cons
87877                                               track-stxes1_0
87878                                               track-stxes_0)
87879                                              (cons exp-specs2_0 exp-specs_0)))
87880                                            (args
87881                                             (raise-binding-result-arity-error
87882                                              2
87883                                              args)))))
87884                                        (case-lambda
87885                                         ((track-stxes_1 exp-specs_1)
87886                                          (values track-stxes_1 exp-specs_1))
87887                                         (args
87888                                          (raise-binding-result-arity-error
87889                                           2
87890                                           args)))))
87891                                     (case-lambda
87892                                      ((track-stxes_1 exp-specs_1)
87893                                       (for-loop_0
87894                                        track-stxes_1
87895                                        exp-specs_1
87896                                        rest_0))
87897                                      (args
87898                                       (raise-binding-result-arity-error
87899                                        2
87900                                        args))))))
87901                                (values track-stxes_0 exp-specs_0)))))))
87902                       (for-loop_0 null null specs_1))))
87903                  (case-lambda
87904                   ((track-stxes_0 exp-specs_0)
87905                    (let ((app_0 (reverse$1 track-stxes_0)))
87906                      (values app_0 (reverse$1 exp-specs_0))))
87907                   (args (raise-binding-result-arity-error 2 args)))))
87908               (case-lambda
87909                ((track-stxess_0 exp-specss_0)
87910                 (let ((app_0 (apply append track-stxess_0)))
87911                   (values app_0 (apply append exp-specss_0))))
87912                (args (raise-binding-result-arity-error 2 args)))))))))
87913       (loop_0 specs_0 phase_0 kw2450 #f 'raw orig-s_0)))))
87914(define parse-identifier!
87915  (lambda (spec_0
87916           orig-s_0
87917           sym_0
87918           at-phase_0
87919           at-space-level_0
87920           ns_0
87921           rp_0
87922           protected?_0)
87923    (let ((at-space_0 (space+ #f at-space-level_0)))
87924      (let ((b_0
87925             (resolve+shift/extra-inspector
87926              (add-space-scope spec_0 at-space_0)
87927              at-phase_0
87928              ns_0)))
87929        (begin
87930          (if (module-binding? b_0)
87931            (void)
87932            (raise-syntax-error$1
87933             'provide
87934             "provided identifier is not defined or required"
87935             orig-s_0
87936             spec_0))
87937          (begin
87938            (if at-space_0
87939              (if (same-binding?
87940                   b_0
87941                   (resolve+shift/extra-inspector
87942                    (remove-space-scope spec_0 at-space_0)
87943                    at-phase_0
87944                    ns_0))
87945                (raise-syntax-error$1
87946                 'provide
87947                 "provided identifier is defined only outside the space"
87948                 orig-s_0
87949                 spec_0)
87950                (void))
87951              (void))
87952            (let ((as-transformer?_0
87953                   (binding-for-transformer? b_0 spec_0 at-phase_0 ns_0)))
87954              (let ((immed-b_0
87955                     (resolve+shift.1 #f #f null #t #f spec_0 at-phase_0)))
87956                (let ((temp138_0 (intern-phase+space at-phase_0 at-space_0)))
87957                  (add-provide!.1
87958                   protected?_0
87959                   as-transformer?_0
87960                   rp_0
87961                   sym_0
87962                   temp138_0
87963                   b_0
87964                   immed-b_0
87965                   spec_0
87966                   orig-s_0))))))))))
87967(define parse-struct!
87968  (lambda (id:struct_0 orig-s_0 fields_0 at-phase_0 ns_0 rp_0 protected?_0)
87969    (let ((mk_0
87970           (|#%name|
87971            mk
87972            (lambda (fmt_0)
87973              (begin
87974                (let ((sym_0
87975                       (string->symbol
87976                        (format fmt_0 (syntax-e$1 id:struct_0)))))
87977                  (datum->syntax$1 id:struct_0 sym_0 id:struct_0)))))))
87978      (let ((mk2_0
87979             (|#%name|
87980              mk2
87981              (lambda (fmt_0 field-id_0)
87982                (begin
87983                  (let ((sym_0
87984                         (string->symbol
87985                          (let ((app_0 (syntax-e$1 id:struct_0)))
87986                            (format fmt_0 app_0 (syntax-e$1 field-id_0))))))
87987                    (datum->syntax$1 id:struct_0 sym_0 id:struct_0)))))))
87988        (begin
87989          (let ((lst_0 (list "~a" "make-~a" "struct:~a" "~a?")))
87990            (begin
87991              (letrec*
87992               ((for-loop_0
87993                 (|#%name|
87994                  for-loop
87995                  (lambda (lst_1)
87996                    (begin
87997                      (if (pair? lst_1)
87998                        (let ((fmt_0 (unsafe-car lst_1)))
87999                          (let ((rest_0 (unsafe-cdr lst_1)))
88000                            (begin
88001                              (let ((id_0 (mk_0 fmt_0)))
88002                                (parse-identifier!
88003                                 id_0
88004                                 orig-s_0
88005                                 (syntax-e$1 id_0)
88006                                 at-phase_0
88007                                 #f
88008                                 ns_0
88009                                 rp_0
88010                                 protected?_0))
88011                              (for-loop_0 rest_0))))
88012                        (values)))))))
88013               (for-loop_0 lst_0))))
88014          (void)
88015          (begin
88016            (letrec*
88017             ((for-loop_0
88018               (|#%name|
88019                for-loop
88020                (lambda (lst_0)
88021                  (begin
88022                    (if (pair? lst_0)
88023                      (let ((field_0 (unsafe-car lst_0)))
88024                        (let ((rest_0 (unsafe-cdr lst_0)))
88025                          (begin
88026                            (let ((get-id_0 (mk2_0 "~a-~a" field_0)))
88027                              (let ((set-id_0 (mk2_0 "set-~a-~a!" field_0)))
88028                                (begin
88029                                  (parse-identifier!
88030                                   get-id_0
88031                                   orig-s_0
88032                                   (syntax-e$1 get-id_0)
88033                                   at-phase_0
88034                                   #f
88035                                   ns_0
88036                                   rp_0
88037                                   protected?_0)
88038                                  (parse-identifier!
88039                                   set-id_0
88040                                   orig-s_0
88041                                   (syntax-e$1 set-id_0)
88042                                   at-phase_0
88043                                   #f
88044                                   ns_0
88045                                   rp_0
88046                                   protected?_0))))
88047                            (for-loop_0 rest_0))))
88048                      (values)))))))
88049             (for-loop_0 fields_0)))
88050          (void))))))
88051(define parse-all-from
88052  (lambda (mod-path-stx_0
88053           orig-s_0
88054           self_0
88055           except-ids_0
88056           at-phase_0
88057           at-space-level_0
88058           ns_0
88059           rp_0
88060           protected?_0
88061           ctx_0)
88062    (let ((mod-path_0 (syntax->datum$1 mod-path-stx_0)))
88063      (begin
88064        (if (1/module-path? mod-path_0)
88065          (void)
88066          (raise-syntax-error$1
88067           'provide
88068           "not a module path"
88069           orig-s_0
88070           mod-path-stx_0))
88071        (let ((mpi_0 (module-path->mpi/context mod-path_0 ctx_0)))
88072          (parse-all-from-module
88073           mpi_0
88074           #f
88075           orig-s_0
88076           except-ids_0
88077           #f
88078           at-phase_0
88079           at-space-level_0
88080           ns_0
88081           rp_0
88082           protected?_0))))))
88083(define parse-all-from-module
88084  (lambda (mpi_0
88085           matching-stx_0
88086           orig-s_0
88087           except-ids_0
88088           prefix-sym_0
88089           at-phase_0
88090           at-space-level_0
88091           ns_0
88092           rp_0
88093           protected?_0)
88094    (let ((at-phase+space-shift_0
88095           (intern-phase+space-shift at-phase_0 at-space-level_0)))
88096      (let ((requireds_0
88097             (extract-module-requires rp_0 mpi_0 at-phase+space-shift_0)))
88098        (let ((phase-desc_0
88099               (|#%name|
88100                phase-desc
88101                (lambda ()
88102                  (begin
88103                    (let ((app_0
88104                           (if (begin-unsafe (eq? at-phase_0 0))
88105                             ""
88106                             (if (begin-unsafe (not at-phase_0))
88107                               " for-label"
88108                               (format " for phase level ~a" at-phase_0)))))
88109                      (string-append
88110                       app_0
88111                       (if (not (space+ #f at-space-level_0))
88112                         ""
88113                         (format " in space level ~s" at-space-level_0)))))))))
88114          (begin
88115            (if requireds_0
88116              (void)
88117              (raise-syntax-error$1
88118               'provide
88119               (format
88120                "cannot provide from a module without a matching require~a"
88121                (phase-desc_0))
88122               orig-s_0
88123               matching-stx_0))
88124            (let ((add-prefix_0
88125                   (|#%name|
88126                    add-prefix
88127                    (lambda (sym_0)
88128                      (begin
88129                        (if prefix-sym_0
88130                          (string->symbol
88131                           (let ((app_0 (symbol->string prefix-sym_0)))
88132                             (string-append app_0 (symbol->string sym_0))))
88133                          sym_0))))))
88134              (let ((at-phase+space_0
88135                     (begin-unsafe
88136                      (intern-phase+space
88137                       (phase+space+$1 0 at-phase+space-shift_0)))))
88138                (let ((found_0 (make-hasheq)))
88139                  (begin
88140                    (begin
88141                      (letrec*
88142                       ((for-loop_0
88143                         (|#%name|
88144                          for-loop
88145                          (lambda (lst_0)
88146                            (begin
88147                              (if (pair? lst_0)
88148                                (let ((i_0 (unsafe-car lst_0)))
88149                                  (let ((rest_0 (unsafe-cdr lst_0)))
88150                                    (begin
88151                                      (let ((id_0 (required-id i_0)))
88152                                        (let ((phase+space_0
88153                                               (required-phase+space i_0)))
88154                                          (let ((phase_0
88155                                                 (phase+space-phase
88156                                                  phase+space_0)))
88157                                            (let ((space_0
88158                                                   (phase+space-space
88159                                                    phase+space_0)))
88160                                              (if (let ((or-part_0
88161                                                         (if matching-stx_0
88162                                                           (not
88163                                                            (if (eqv?
88164                                                                 phase+space_0
88165                                                                 at-phase+space_0)
88166                                                              (free-identifier=?$1
88167                                                               id_0
88168                                                               (add-space-scope
88169                                                                (datum->syntax$1
88170                                                                 matching-stx_0
88171                                                                 (syntax-e$1
88172                                                                  id_0))
88173                                                                space_0)
88174                                                               phase_0
88175                                                               phase_0)
88176                                                              #f))
88177                                                           #f)))
88178                                                    (if or-part_0
88179                                                      or-part_0
88180                                                      (begin
88181                                                        (letrec*
88182                                                         ((for-loop_1
88183                                                           (|#%name|
88184                                                            for-loop
88185                                                            (lambda (result_0
88186                                                                     lst_1)
88187                                                              (begin
88188                                                                (if (pair?
88189                                                                     lst_1)
88190                                                                  (let ((except-id_0
88191                                                                         (unsafe-car
88192                                                                          lst_1)))
88193                                                                    (let ((rest_1
88194                                                                           (unsafe-cdr
88195                                                                            lst_1)))
88196                                                                      (let ((result_1
88197                                                                             (let ((result_1
88198                                                                                    (if (free-identifier=?$1
88199                                                                                         id_0
88200                                                                                         (add-space-scope
88201                                                                                          except-id_0
88202                                                                                          space_0)
88203                                                                                         phase_0
88204                                                                                         phase_0)
88205                                                                                      (hash-set!
88206                                                                                       found_0
88207                                                                                       except-id_0
88208                                                                                       #t)
88209                                                                                      #f)))
88210                                                                               (values
88211                                                                                result_1))))
88212                                                                        (if (if (not
88213                                                                                 (let ((x_0
88214                                                                                        (list
88215                                                                                         except-id_0)))
88216                                                                                   result_1))
88217                                                                              #t
88218                                                                              #f)
88219                                                                          (for-loop_1
88220                                                                           result_1
88221                                                                           rest_1)
88222                                                                          result_1))))
88223                                                                  result_0))))))
88224                                                         (for-loop_1
88225                                                          #f
88226                                                          except-ids_0)))))
88227                                                (void)
88228                                                (let ((b_0
88229                                                       (resolve+shift/extra-inspector
88230                                                        id_0
88231                                                        phase_0
88232                                                        ns_0)))
88233                                                  (let ((immed-b_0
88234                                                         (resolve+shift.1
88235                                                          #f
88236                                                          #f
88237                                                          null
88238                                                          #t
88239                                                          #f
88240                                                          id_0
88241                                                          phase_0)))
88242                                                    (let ((temp149_0
88243                                                           (add-prefix_0
88244                                                            (syntax-e$1
88245                                                             id_0))))
88246                                                      (let ((temp156_0
88247                                                             (required-as-transformer?
88248                                                              i_0)))
88249                                                        (let ((temp149_1
88250                                                               temp149_0))
88251                                                          (add-provide!.1
88252                                                           protected?_0
88253                                                           temp156_0
88254                                                           rp_0
88255                                                           temp149_1
88256                                                           phase+space_0
88257                                                           b_0
88258                                                           immed-b_0
88259                                                           id_0
88260                                                           orig-s_0)))))))))))
88261                                      (for-loop_0 rest_0))))
88262                                (values)))))))
88263                       (for-loop_0 requireds_0)))
88264                    (void)
88265                    (if (let ((app_0 (hash-count found_0)))
88266                          (= app_0 (length except-ids_0)))
88267                      (void)
88268                      (begin
88269                        (begin
88270                          (letrec*
88271                           ((for-loop_0
88272                             (|#%name|
88273                              for-loop
88274                              (lambda (lst_0)
88275                                (begin
88276                                  (if (pair? lst_0)
88277                                    (let ((except-id_0 (unsafe-car lst_0)))
88278                                      (let ((rest_0 (unsafe-cdr lst_0)))
88279                                        (begin
88280                                          (if (let ((or-part_0
88281                                                     (hash-ref
88282                                                      found_0
88283                                                      except-id_0
88284                                                      #f)))
88285                                                (if or-part_0
88286                                                  or-part_0
88287                                                  (begin
88288                                                    (letrec*
88289                                                     ((for-loop_1
88290                                                       (|#%name|
88291                                                        for-loop
88292                                                        (lambda (result_0
88293                                                                 lst_1)
88294                                                          (begin
88295                                                            (if (pair? lst_1)
88296                                                              (let ((i_0
88297                                                                     (unsafe-car
88298                                                                      lst_1)))
88299                                                                (let ((rest_1
88300                                                                       (unsafe-cdr
88301                                                                        lst_1)))
88302                                                                  (let ((id_0
88303                                                                         (required-id
88304                                                                          i_0)))
88305                                                                    (let ((result_1
88306                                                                           (let ((result_1
88307                                                                                  (let ((phase+space_0
88308                                                                                         (required-phase+space
88309                                                                                          i_0)))
88310                                                                                    (let ((phase_0
88311                                                                                           (phase+space-phase
88312                                                                                            phase+space_0)))
88313                                                                                      (let ((space_0
88314                                                                                             (phase+space-space
88315                                                                                              phase+space_0)))
88316                                                                                        (free-identifier=?$1
88317                                                                                         id_0
88318                                                                                         (add-space-scope
88319                                                                                          except-id_0
88320                                                                                          space_0)
88321                                                                                         phase_0
88322                                                                                         phase_0))))))
88323                                                                             (values
88324                                                                              result_1))))
88325                                                                      (if (if (not
88326                                                                               (let ((x_0
88327                                                                                      (list
88328                                                                                       i_0)))
88329                                                                                 result_1))
88330                                                                            #t
88331                                                                            #f)
88332                                                                        (for-loop_1
88333                                                                         result_1
88334                                                                         rest_1)
88335                                                                        result_1)))))
88336                                                              result_0))))))
88337                                                     (for-loop_1
88338                                                      #f
88339                                                      requireds_0)))))
88340                                            (void)
88341                                            (raise-syntax-error$1
88342                                             'provide
88343                                             (let ((app_0
88344                                                    (if matching-stx_0
88345                                                      "excluded identifier was not defined or required in the module~a"
88346                                                      "excluded identifier was not required from the specified module~a")))
88347                                               (format app_0 (phase-desc_0)))
88348                                             orig-s_0
88349                                             except-id_0))
88350                                          (for-loop_0 rest_0))))
88351                                    (values)))))))
88352                           (for-loop_0 except-ids_0)))
88353                        (void)))))))))))))
88354(define check-cross-phase-persistent-form
88355  (lambda (bodys_0 self-mpi_0)
88356    (letrec*
88357     ((check-body_0
88358       (|#%name|
88359        check-body
88360        (lambda (bodys_1)
88361          (begin
88362            (begin
88363              (begin
88364                (letrec*
88365                 ((for-loop_0
88366                   (|#%name|
88367                    for-loop
88368                    (lambda (lst_0)
88369                      (begin
88370                        (if (pair? lst_0)
88371                          (let ((body_0 (unsafe-car lst_0)))
88372                            (let ((rest_0 (unsafe-cdr lst_0)))
88373                              (begin
88374                                (let ((p_0
88375                                       (if (expanded+parsed? body_0)
88376                                         (expanded+parsed-parsed body_0)
88377                                         body_0)))
88378                                  (if (parsed-define-values? p_0)
88379                                    (check-expr_0
88380                                     (parsed-define-values-rhs p_0)
88381                                     (length (parsed-define-values-syms p_0))
88382                                     p_0)
88383                                    (if (let ((or-part_0
88384                                               (|parsed-#%declare?| p_0)))
88385                                          (if or-part_0
88386                                            or-part_0
88387                                            (let ((or-part_1
88388                                                   (parsed-module? p_0)))
88389                                              (if or-part_1
88390                                                or-part_1
88391                                                (syntax?$1 p_0)))))
88392                                      (void)
88393                                      (disallow p_0))))
88394                                (for-loop_0 rest_0))))
88395                          (values)))))))
88396                 (for-loop_0 bodys_1)))
88397              (void))))))
88398      (check-expr_0
88399       (|#%name|
88400        check-expr
88401        (lambda (e_0 num-results_0 enclosing_0)
88402          (begin
88403            (if (parsed-lambda? e_0)
88404              (begin
88405                (check-count 1 num-results_0 enclosing_0)
88406                (check-no-disallowed-expr_0 e_0))
88407              (if (parsed-case-lambda? e_0)
88408                (begin
88409                  (check-count 1 num-results_0 enclosing_0)
88410                  (check-no-disallowed-expr_0 e_0))
88411                (if (parsed-quote? e_0)
88412                  (begin
88413                    (check-datum (parsed-quote-datum e_0) e_0)
88414                    (check-count 1 num-results_0 enclosing_0))
88415                  (if (parsed-app? e_0)
88416                    (let ((rands_0 (parsed-app-rands e_0)))
88417                      (begin
88418                        (begin
88419                          (letrec*
88420                           ((for-loop_0
88421                             (|#%name|
88422                              for-loop
88423                              (lambda (lst_0)
88424                                (begin
88425                                  (if (pair? lst_0)
88426                                    (let ((rand_0 (unsafe-car lst_0)))
88427                                      (let ((rest_0 (unsafe-cdr lst_0)))
88428                                        (begin
88429                                          (check-expr_0 rand_0 1 e_0)
88430                                          (for-loop_0 rest_0))))
88431                                    (values)))))))
88432                           (for-loop_0 rands_0)))
88433                        (void)
88434                        (let ((tmp_0
88435                               (cross-phase-primitive-name
88436                                (parsed-app-rator e_0))))
88437                          (if (if (eq? tmp_0 'cons) #t (eq? tmp_0 'list))
88438                            (check-count 1 num-results_0 enclosing_0)
88439                            (if (eq? tmp_0 'make-struct-type)
88440                              (check-count 5 num-results_0 enclosing_0)
88441                              (if (eq? tmp_0 'make-struct-type-property)
88442                                (check-count 3 num-results_0 enclosing_0)
88443                                (if (eq? tmp_0 'gensym)
88444                                  (if (let ((or-part_0 (= 0 (length rands_0))))
88445                                        (if or-part_0
88446                                          or-part_0
88447                                          (if (= 1 (length rands_0))
88448                                            (quoted-string? (car rands_0))
88449                                            #f)))
88450                                    (void)
88451                                    (disallow e_0))
88452                                  (if (eq? tmp_0 'string->uninterned-symbol)
88453                                    (if (if (= 1 (length rands_0))
88454                                          (quoted-string? (car rands_0))
88455                                          #f)
88456                                      (void)
88457                                      (disallow e_0))
88458                                    (disallow e_0)))))))))
88459                    (check-no-disallowed-expr_0 e_0)))))))))
88460      (check-no-disallowed-expr_0
88461       (|#%name|
88462        check-no-disallowed-expr
88463        (lambda (e_0)
88464          (begin
88465            (if (parsed-lambda? e_0)
88466              (check-body-no-disallowed-expr_0 (parsed-lambda-body e_0))
88467              (if (parsed-case-lambda? e_0)
88468                (begin
88469                  (let ((lst_0 (parsed-case-lambda-clauses e_0)))
88470                    (begin
88471                      (letrec*
88472                       ((for-loop_0
88473                         (|#%name|
88474                          for-loop
88475                          (lambda (lst_1)
88476                            (begin
88477                              (if (pair? lst_1)
88478                                (let ((clause_0 (unsafe-car lst_1)))
88479                                  (let ((rest_0 (unsafe-cdr lst_1)))
88480                                    (begin
88481                                      (check-body-no-disallowed-expr_0
88482                                       (cadr clause_0))
88483                                      (for-loop_0 rest_0))))
88484                                (values)))))))
88485                       (for-loop_0 lst_0))))
88486                  (void))
88487                (if (if (parsed-app? e_0)
88488                      (if (eq?
88489                           'variable-reference-from-unsafe?
88490                           (cross-phase-primitive-name (parsed-app-rator e_0)))
88491                        (andmap_2344
88492                         |parsed-#%variable-reference?|
88493                         (parsed-app-rands e_0))
88494                        #f)
88495                      #f)
88496                  (void)
88497                  (if (parsed-app? e_0)
88498                    (begin
88499                      (check-no-disallowed-expr_0 (parsed-app-rator e_0))
88500                      (let ((lst_0 (parsed-app-rands e_0)))
88501                        (begin
88502                          (letrec*
88503                           ((for-loop_0
88504                             (|#%name|
88505                              for-loop
88506                              (lambda (lst_1)
88507                                (begin
88508                                  (if (pair? lst_1)
88509                                    (let ((e_1 (unsafe-car lst_1)))
88510                                      (let ((rest_0 (unsafe-cdr lst_1)))
88511                                        (begin
88512                                          (check-no-disallowed-expr_0 e_1)
88513                                          (for-loop_0 rest_0))))
88514                                    (values)))))))
88515                           (for-loop_0 lst_0))))
88516                      (void))
88517                    (if (parsed-if? e_0)
88518                      (begin
88519                        (check-no-disallowed-expr_0 (parsed-if-tst e_0))
88520                        (check-no-disallowed-expr_0 (parsed-if-thn e_0))
88521                        (check-no-disallowed-expr_0 (parsed-if-els e_0)))
88522                      (if (parsed-set!? e_0)
88523                        (let ((id_0 (parsed-set!-id e_0)))
88524                          (let ((normal-b_0 (parsed-id-binding id_0)))
88525                            (begin
88526                              (if (let ((or-part_0 (not normal-b_0)))
88527                                    (if or-part_0
88528                                      or-part_0
88529                                      (let ((or-part_1 (parsed-top-id? id_0)))
88530                                        (if or-part_1
88531                                          or-part_1
88532                                          (if (not (symbol? normal-b_0))
88533                                            (eq?
88534                                             (module-binding-module normal-b_0)
88535                                             self-mpi_0)
88536                                            #f)))))
88537                                (disallow e_0)
88538                                (void))
88539                              (check-no-disallowed-expr_0
88540                               (parsed-set!-rhs e_0)))))
88541                        (if (parsed-with-continuation-mark? e_0)
88542                          (begin
88543                            (check-no-disallowed-expr_0
88544                             (parsed-with-continuation-mark-key e_0))
88545                            (check-no-disallowed-expr_0
88546                             (parsed-with-continuation-mark-val e_0))
88547                            (check-no-disallowed-expr_0
88548                             (parsed-with-continuation-mark-body e_0)))
88549                          (if (parsed-begin? e_0)
88550                            (check-body-no-disallowed-expr_0
88551                             (parsed-begin-body e_0))
88552                            (if (parsed-begin0? e_0)
88553                              (check-body-no-disallowed-expr_0
88554                               (parsed-begin0-body e_0))
88555                              (if (parsed-let_-values? e_0)
88556                                (begin
88557                                  (let ((lst_0
88558                                         (parsed-let_-values-clauses e_0)))
88559                                    (begin
88560                                      (letrec*
88561                                       ((for-loop_0
88562                                         (|#%name|
88563                                          for-loop
88564                                          (lambda (lst_1)
88565                                            (begin
88566                                              (if (pair? lst_1)
88567                                                (let ((clause_0
88568                                                       (unsafe-car lst_1)))
88569                                                  (let ((rest_0
88570                                                         (unsafe-cdr lst_1)))
88571                                                    (begin
88572                                                      (check-no-disallowed-expr_0
88573                                                       (cadr clause_0))
88574                                                      (for-loop_0 rest_0))))
88575                                                (values)))))))
88576                                       (for-loop_0 lst_0))))
88577                                  (void)
88578                                  (check-body-no-disallowed-expr_0
88579                                   (parsed-let_-values-body e_0)))
88580                                (if (let ((or-part_0
88581                                           (parsed-quote-syntax? e_0)))
88582                                      (if or-part_0
88583                                        or-part_0
88584                                        (|parsed-#%variable-reference?| e_0)))
88585                                  (disallow e_0)
88586                                  (void))))))))))))))))
88587      (check-body-no-disallowed-expr_0
88588       (|#%name|
88589        check-body-no-disallowed-expr
88590        (lambda (l_0)
88591          (begin
88592            (begin
88593              (begin
88594                (letrec*
88595                 ((for-loop_0
88596                   (|#%name|
88597                    for-loop
88598                    (lambda (lst_0)
88599                      (begin
88600                        (if (pair? lst_0)
88601                          (let ((e_0 (unsafe-car lst_0)))
88602                            (let ((rest_0 (unsafe-cdr lst_0)))
88603                              (begin
88604                                (check-no-disallowed-expr_0 e_0)
88605                                (for-loop_0 rest_0))))
88606                          (values)))))))
88607                 (for-loop_0 l_0)))
88608              (void)))))))
88609     (check-body_0 bodys_0))))
88610(define check-count
88611  (lambda (is-num_0 expected-num_0 enclosing_0)
88612    (if (= is-num_0 expected-num_0) (void) (disallow enclosing_0))))
88613(define check-datum
88614  (lambda (d_0 e_0)
88615    (if (let ((or-part_0 (number? d_0)))
88616          (if or-part_0
88617            or-part_0
88618            (let ((or-part_1 (boolean? d_0)))
88619              (if or-part_1
88620                or-part_1
88621                (let ((or-part_2 (symbol? d_0)))
88622                  (if or-part_2
88623                    or-part_2
88624                    (let ((or-part_3 (string? d_0)))
88625                      (if or-part_3
88626                        or-part_3
88627                        (let ((or-part_4 (bytes? d_0)))
88628                          (if or-part_4 or-part_4 (null? d_0)))))))))))
88629      (void)
88630      (disallow e_0))))
88631(define quoted-string?
88632  (lambda (e_0)
88633    (if (parsed-quote? e_0) (string? (parsed-quote-datum e_0)) #f)))
88634(define cross-phase-primitive-name
88635  (lambda (id_0)
88636    (if (parsed-id? id_0)
88637      (let ((b_0 (parsed-id-binding id_0)))
88638        (if (module-binding? b_0)
88639          (if (eq?
88640               runtime-module-name
88641               (1/module-path-index-resolve (module-binding-module b_0)))
88642            (module-binding-sym b_0)
88643            #f)
88644          #f))
88645      #f)))
88646(define disallow
88647  (lambda (body_0)
88648    (raise-syntax-error$1
88649     'module
88650     "not allowed in a cross-phase persistent module"
88651     (if (parsed? body_0)
88652       (datum->syntax$1 #f body_0 (parsed-s body_0))
88653       body_0))))
88654(define 1/call-with-module-prompt
88655  (|#%name|
88656   call-with-module-prompt
88657   (lambda (thunk_0)
88658     (begin
88659       (call-with-continuation-prompt
88660        thunk_0
88661        (default-continuation-prompt-tag)
88662        module-prompt-handler)))))
88663(define call-with-module-prompt/value-list
88664  (lambda (who_0 thunk_0 ids_0 handler_0)
88665    (1/call-with-module-prompt
88666     (lambda ()
88667       (|#%call-with-values|
88668        thunk_0
88669        (lambda vals_0
88670          (begin
88671            (if (let ((app_0 (length vals_0))) (= app_0 (length ids_0)))
88672              (void)
88673              (raise-bindings-arity-error who_0 ids_0 vals_0))
88674            (|#%app| handler_0 vals_0)
88675            (apply values vals_0))))))))
88676(define module-prompt-handler
88677  (lambda args_0
88678    (apply
88679     abort-current-continuation
88680     (default-continuation-prompt-tag)
88681     args_0)))
88682(define effect_2783
88683  (begin
88684    (void
88685     (add-core-form!*
88686      'module
88687      (lambda (s_0 ctx_0)
88688        (begin
88689          (if (eq?
88690               (begin-unsafe (expand-context/outer-context ctx_0))
88691               'top-level)
88692            (void)
88693            (begin
88694              (let ((obs_0
88695                     (begin-unsafe
88696                      (expand-context/inner-observer
88697                       (root-expand-context/outer-inner ctx_0)))))
88698                (if obs_0 (call-expand-observe obs_0 'prim-module #f) (void)))
88699              (raise-syntax-error$1
88700               #f
88701               "allowed only at the top level or in a module top-level"
88702               s_0)))
88703          (if log-performance?
88704            (start-performance-region 'expand 'module)
88705            (void))
88706          (begin0
88707            (|#%app|
88708             expand-module.1
88709             #f
88710             #f
88711             #f
88712             #f
88713             unsafe-undefined
88714             #f
88715             s_0
88716             ctx_0
88717             #f)
88718            (if log-performance? (end-performance-region) (void)))))))
88719    (void)))
88720(define effect_2067
88721  (begin
88722    (void
88723     (add-core-form!*
88724      'module*
88725      (lambda (s_0 ctx_0)
88726        (begin
88727          (let ((obs_0
88728                 (begin-unsafe
88729                  (expand-context/inner-observer
88730                   (root-expand-context/outer-inner ctx_0)))))
88731            (if obs_0 (call-expand-observe obs_0 'prim-module #f) (void)))
88732          (raise-syntax-error$1
88733           #f
88734           "illegal use (not in a module top-level)"
88735           s_0)))))
88736    (void)))
88737(define effect_2372
88738  (begin
88739    (void
88740     (add-core-form!*
88741      '|#%module-begin|
88742      (lambda (s_0 ctx_0)
88743        (begin
88744          (let ((obs_0
88745                 (begin-unsafe
88746                  (expand-context/inner-observer
88747                   (root-expand-context/outer-inner ctx_0)))))
88748            (if obs_0
88749              (call-expand-observe obs_0 'prim-module-begin #f)
88750              (void)))
88751          (if (eq?
88752               (begin-unsafe (expand-context/outer-context ctx_0))
88753               'module-begin)
88754            (void)
88755            (raise-syntax-error$1 #f "not in a module-definition context" s_0))
88756          (if (begin-unsafe
88757               (expand-context/inner-module-begin-k
88758                (root-expand-context/outer-inner ctx_0)))
88759            (void)
88760            (raise-syntax-error$1
88761             #f
88762             "not currently transforming a module"
88763             s_0))
88764          (|#%app|
88765           (begin-unsafe
88766            (expand-context/inner-module-begin-k
88767             (root-expand-context/outer-inner ctx_0)))
88768           s_0
88769           (if (expand-context/outer? ctx_0)
88770             (let ((the-struct_0 (root-expand-context/outer-inner ctx_0)))
88771               (let ((inner198_0
88772                      (if (expand-context/inner? the-struct_0)
88773                        (expand-context/inner2.1
88774                         (root-expand-context/inner-self-mpi the-struct_0)
88775                         (root-expand-context/inner-module-scopes the-struct_0)
88776                         (root-expand-context/inner-top-level-bind-scope
88777                          the-struct_0)
88778                         (root-expand-context/inner-all-scopes-stx
88779                          the-struct_0)
88780                         (root-expand-context/inner-defined-syms the-struct_0)
88781                         (root-expand-context/inner-counter the-struct_0)
88782                         (root-expand-context/inner-lift-key the-struct_0)
88783                         (expand-context/inner-to-parsed? the-struct_0)
88784                         (expand-context/inner-phase the-struct_0)
88785                         (expand-context/inner-namespace the-struct_0)
88786                         (expand-context/inner-just-once? the-struct_0)
88787                         #f
88788                         (expand-context/inner-allow-unbound? the-struct_0)
88789                         (expand-context/inner-in-local-expand? the-struct_0)
88790                         (|expand-context/inner-keep-#%expression?|
88791                          the-struct_0)
88792                         (expand-context/inner-stops the-struct_0)
88793                         (expand-context/inner-declared-submodule-names
88794                          the-struct_0)
88795                         (expand-context/inner-lifts the-struct_0)
88796                         (expand-context/inner-lift-envs the-struct_0)
88797                         (expand-context/inner-module-lifts the-struct_0)
88798                         (expand-context/inner-require-lifts the-struct_0)
88799                         (expand-context/inner-to-module-lifts the-struct_0)
88800                         (expand-context/inner-requires+provides the-struct_0)
88801                         (expand-context/inner-observer the-struct_0)
88802                         (expand-context/inner-for-serializable? the-struct_0)
88803                         (expand-context/inner-to-correlated-linklet?
88804                          the-struct_0)
88805                         (expand-context/inner-normalize-locals? the-struct_0)
88806                         (expand-context/inner-parsing-expanded? the-struct_0)
88807                         (expand-context/inner-skip-visit-available?
88808                          the-struct_0))
88809                        (raise-argument-error
88810                         'struct-copy
88811                         "expand-context/inner?"
88812                         the-struct_0))))
88813                 (expand-context/outer1.1
88814                  inner198_0
88815                  (root-expand-context/outer-post-expansion ctx_0)
88816                  (root-expand-context/outer-use-site-scopes ctx_0)
88817                  (root-expand-context/outer-frame-id ctx_0)
88818                  (expand-context/outer-context ctx_0)
88819                  (expand-context/outer-env ctx_0)
88820                  (expand-context/outer-scopes ctx_0)
88821                  (expand-context/outer-def-ctx-scopes ctx_0)
88822                  (expand-context/outer-binding-layer ctx_0)
88823                  (expand-context/outer-reference-records ctx_0)
88824                  (expand-context/outer-only-immediate? ctx_0)
88825                  (expand-context/outer-need-eventually-defined ctx_0)
88826                  (expand-context/outer-current-introduction-scopes ctx_0)
88827                  (expand-context/outer-current-use-scopes ctx_0)
88828                  (expand-context/outer-name ctx_0))))
88829             (raise-argument-error
88830              'struct-copy
88831              "expand-context/outer?"
88832              ctx_0)))))))
88833    (void)))
88834(define effect_2597
88835  (begin
88836    (void
88837     (add-core-form!*
88838      '|#%declare|
88839      (lambda (s_0 ctx_0)
88840        (begin
88841          (let ((obs_0
88842                 (begin-unsafe
88843                  (expand-context/inner-observer
88844                   (root-expand-context/outer-inner ctx_0)))))
88845            (if obs_0 (call-expand-observe obs_0 'prim-declare #f) (void)))
88846          (raise-syntax-error$1
88847           #f
88848           "not allowed outside of a module top-level"
88849           s_0)))))
88850    (void)))
88851(define expand-module.1
88852  (|#%name|
88853   expand-module
88854   (lambda (always-produce-compiled?1_0
88855            enclosing-is-cross-phase-persistent?3_0
88856            enclosing-requires+provides4_0
88857            keep-enclosing-scope-at-phase2_0
88858            modules-being-compiled6_0
88859            mpis-for-enclosing-reset5_0
88860            s13_0
88861            init-ctx14_0
88862            enclosing-self15_0)
88863     (begin
88864       (let ((modules-being-compiled_0
88865              (if (eq? modules-being-compiled6_0 unsafe-undefined)
88866                (make-hasheq)
88867                modules-being-compiled6_0)))
88868         (begin
88869           (let ((obs_0
88870                  (begin-unsafe
88871                   (expand-context/inner-observer
88872                    (root-expand-context/outer-inner init-ctx14_0)))))
88873             (if obs_0 (call-expand-observe obs_0 'prim-module s13_0) (void)))
88874           (call-with-values
88875            (lambda ()
88876              (call-with-values
88877               (lambda ()
88878                 (let ((s_0 (if (syntax?$1 s13_0) (syntax-e$1 s13_0) s13_0)))
88879                   (if (pair? s_0)
88880                     (let ((module204_0 (let ((s_1 (car s_0))) s_1)))
88881                       (call-with-values
88882                        (lambda ()
88883                          (let ((s_1 (cdr s_0)))
88884                            (let ((s_2
88885                                   (if (syntax?$1 s_1) (syntax-e$1 s_1) s_1)))
88886                              (if (pair? s_2)
88887                                (let ((id:module-name208_0
88888                                       (let ((s_3 (car s_2)))
88889                                         (if (let ((or-part_0
88890                                                    (if (syntax?$1 s_3)
88891                                                      (symbol?
88892                                                       (syntax-e$1 s_3))
88893                                                      #f)))
88894                                               (if or-part_0
88895                                                 or-part_0
88896                                                 (symbol? s_3)))
88897                                           s_3
88898                                           (raise-syntax-error$1
88899                                            #f
88900                                            "not an identifier"
88901                                            s13_0
88902                                            s_3)))))
88903                                  (call-with-values
88904                                   (lambda ()
88905                                     (let ((s_3 (cdr s_2)))
88906                                       (let ((s_4
88907                                              (if (syntax?$1 s_3)
88908                                                (syntax-e$1 s_3)
88909                                                s_3)))
88910                                         (if (pair? s_4)
88911                                           (let ((initial-require211_0
88912                                                  (let ((s_5 (car s_4))) s_5)))
88913                                             (let ((body212_0
88914                                                    (let ((s_5 (cdr s_4)))
88915                                                      (let ((s_6
88916                                                             (if (syntax?$1
88917                                                                  s_5)
88918                                                               (syntax-e$1 s_5)
88919                                                               s_5)))
88920                                                        (let ((flat-s_0
88921                                                               (to-syntax-list.1
88922                                                                s_6)))
88923                                                          (if (not flat-s_0)
88924                                                            (raise-syntax-error$1
88925                                                             #f
88926                                                             "bad syntax"
88927                                                             s13_0)
88928                                                            flat-s_0))))))
88929                                               (let ((initial-require211_1
88930                                                      initial-require211_0))
88931                                                 (values
88932                                                  initial-require211_1
88933                                                  body212_0))))
88934                                           (raise-syntax-error$1
88935                                            #f
88936                                            "bad syntax"
88937                                            s13_0)))))
88938                                   (case-lambda
88939                                    ((initial-require209_0 body210_0)
88940                                     (let ((id:module-name208_1
88941                                            id:module-name208_0))
88942                                       (values
88943                                        id:module-name208_1
88944                                        initial-require209_0
88945                                        body210_0)))
88946                                    (args
88947                                     (raise-binding-result-arity-error
88948                                      2
88949                                      args)))))
88950                                (raise-syntax-error$1
88951                                 #f
88952                                 "bad syntax"
88953                                 s13_0)))))
88954                        (case-lambda
88955                         ((id:module-name205_0 initial-require206_0 body207_0)
88956                          (let ((module204_1 module204_0))
88957                            (values
88958                             module204_1
88959                             id:module-name205_0
88960                             initial-require206_0
88961                             body207_0)))
88962                         (args (raise-binding-result-arity-error 3 args)))))
88963                     (raise-syntax-error$1 #f "bad syntax" s13_0))))
88964               (case-lambda
88965                ((module200_0
88966                  id:module-name201_0
88967                  initial-require202_0
88968                  body203_0)
88969                 (values
88970                  #t
88971                  module200_0
88972                  id:module-name201_0
88973                  initial-require202_0
88974                  body203_0))
88975                (args (raise-binding-result-arity-error 4 args)))))
88976            (case-lambda
88977             ((ok?_0
88978               module200_0
88979               id:module-name201_0
88980               initial-require202_0
88981               body203_0)
88982              (let ((rebuild-s_0
88983                     (keep-as-needed.1 #f #t #t init-ctx14_0 s13_0)))
88984                (let ((initial-require_0
88985                       (syntax->datum$1 initial-require202_0)))
88986                  (begin
88987                    (if (if keep-enclosing-scope-at-phase2_0
88988                          keep-enclosing-scope-at-phase2_0
88989                          (1/module-path? initial-require_0))
88990                      (void)
88991                      (raise-syntax-error$1
88992                       #f
88993                       "not a module path"
88994                       s13_0
88995                       initial-require202_0))
88996                    (let ((module-name-sym_0 (syntax-e$1 id:module-name201_0)))
88997                      (let ((outside-scope_0 (new-scope 'module)))
88998                        (let ((inside-scope_0
88999                               (new-multi-scope module-name-sym_0)))
89000                          (let ((self_0
89001                                 (make-self-module-path-index
89002                                  (if enclosing-self15_0
89003                                    module-name-sym_0
89004                                    (string->uninterned-symbol
89005                                     (symbol->string module-name-sym_0)))
89006                                  enclosing-self15_0)))
89007                            (let ((enclosing-mod_0
89008                                   (if enclosing-self15_0
89009                                     (1/module-path-index-join
89010                                      '(submod "..")
89011                                      self_0)
89012                                     #f)))
89013                              (begin
89014                                (if mpis-for-enclosing-reset5_0
89015                                  (set-box!
89016                                   mpis-for-enclosing-reset5_0
89017                                   (cons
89018                                    enclosing-mod_0
89019                                    (unbox mpis-for-enclosing-reset5_0)))
89020                                  (void))
89021                                (let ((apply-module-scopes_0
89022                                       (make-apply-module-scopes
89023                                        outside-scope_0
89024                                        inside-scope_0
89025                                        init-ctx14_0
89026                                        keep-enclosing-scope-at-phase2_0
89027                                        self_0
89028                                        enclosing-self15_0
89029                                        enclosing-mod_0)))
89030                                  (let ((initial-require-s_0
89031                                         (|#%app|
89032                                          apply-module-scopes_0
89033                                          initial-require202_0)))
89034                                    (let ((root-ctx_0
89035                                           (let ((temp226_0
89036                                                  (if keep-enclosing-scope-at-phase2_0
89037                                                    (begin-unsafe
89038                                                     (root-expand-context/inner-module-scopes
89039                                                      (root-expand-context/outer-inner
89040                                                       init-ctx14_0)))
89041                                                    null)))
89042                                             (make-root-expand-context.1
89043                                              initial-require-s_0
89044                                              temp226_0
89045                                              outside-scope_0
89046                                              inside-scope_0
89047                                              self_0))))
89048                                      (let ((new-module-scopes_0
89049                                             (begin-unsafe
89050                                              (root-expand-context/inner-module-scopes
89051                                               (root-expand-context/outer-inner
89052                                                root-ctx_0)))))
89053                                        (let ((frame-id_0
89054                                               (begin-unsafe
89055                                                (root-expand-context/outer-frame-id
89056                                                 root-ctx_0))))
89057                                          (let ((make-m-ns_0
89058                                                 (|#%name|
89059                                                  make-m-ns
89060                                                  (lambda (for-submodule?213_0
89061                                                           ns215_0)
89062                                                    (begin
89063                                                      (let ((for-submodule?_0
89064                                                             (if (eq?
89065                                                                  for-submodule?213_0
89066                                                                  unsafe-undefined)
89067                                                               (if enclosing-self15_0
89068                                                                 #t
89069                                                                 #f)
89070                                                               for-submodule?213_0)))
89071                                                        (make-module-namespace.1
89072                                                         for-submodule?_0
89073                                                         self_0
89074                                                         root-ctx_0
89075                                                         ns215_0)))))))
89076                                            (let ((temp234_0
89077                                                   (begin-unsafe
89078                                                    (expand-context/inner-namespace
89079                                                     (root-expand-context/outer-inner
89080                                                      init-ctx14_0)))))
89081                                              (let ((m-ns_0
89082                                                     (make-m-ns_0
89083                                                      unsafe-undefined
89084                                                      temp234_0)))
89085                                                (let ((ctx_0
89086                                                       (let ((v_0
89087                                                              (copy-root-expand-context
89088                                                               init-ctx14_0
89089                                                               root-ctx_0)))
89090                                                         (if (expand-context/outer?
89091                                                              v_0)
89092                                                           (let ((post-expansion235_0
89093                                                                  (|#%name|
89094                                                                   post-expansion235
89095                                                                   (lambda (s_0)
89096                                                                     (begin
89097                                                                       (add-scope
89098                                                                        s_0
89099                                                                        inside-scope_0))))))
89100                                                             (let ((inner236_0
89101                                                                    (let ((the-struct_0
89102                                                                           (root-expand-context/outer-inner
89103                                                                            v_0)))
89104                                                                      (if (expand-context/inner?
89105                                                                           the-struct_0)
89106                                                                        (expand-context/inner2.1
89107                                                                         (root-expand-context/inner-self-mpi
89108                                                                          the-struct_0)
89109                                                                         (root-expand-context/inner-module-scopes
89110                                                                          the-struct_0)
89111                                                                         (root-expand-context/inner-top-level-bind-scope
89112                                                                          the-struct_0)
89113                                                                         (root-expand-context/inner-all-scopes-stx
89114                                                                          the-struct_0)
89115                                                                         (root-expand-context/inner-defined-syms
89116                                                                          the-struct_0)
89117                                                                         (root-expand-context/inner-counter
89118                                                                          the-struct_0)
89119                                                                         (root-expand-context/inner-lift-key
89120                                                                          the-struct_0)
89121                                                                         (expand-context/inner-to-parsed?
89122                                                                          the-struct_0)
89123                                                                         0
89124                                                                         m-ns_0
89125                                                                         #f
89126                                                                         (expand-context/inner-module-begin-k
89127                                                                          the-struct_0)
89128                                                                         #f
89129                                                                         (expand-context/inner-in-local-expand?
89130                                                                          the-struct_0)
89131                                                                         (|expand-context/inner-keep-#%expression?|
89132                                                                          the-struct_0)
89133                                                                         (expand-context/inner-stops
89134                                                                          the-struct_0)
89135                                                                         (expand-context/inner-declared-submodule-names
89136                                                                          the-struct_0)
89137                                                                         (expand-context/inner-lifts
89138                                                                          the-struct_0)
89139                                                                         (expand-context/inner-lift-envs
89140                                                                          the-struct_0)
89141                                                                         (expand-context/inner-module-lifts
89142                                                                          the-struct_0)
89143                                                                         (expand-context/inner-require-lifts
89144                                                                          the-struct_0)
89145                                                                         (expand-context/inner-to-module-lifts
89146                                                                          the-struct_0)
89147                                                                         (expand-context/inner-requires+provides
89148                                                                          the-struct_0)
89149                                                                         (expand-context/inner-observer
89150                                                                          the-struct_0)
89151                                                                         (expand-context/inner-for-serializable?
89152                                                                          the-struct_0)
89153                                                                         (expand-context/inner-to-correlated-linklet?
89154                                                                          the-struct_0)
89155                                                                         (expand-context/inner-normalize-locals?
89156                                                                          the-struct_0)
89157                                                                         (expand-context/inner-parsing-expanded?
89158                                                                          the-struct_0)
89159                                                                         (expand-context/inner-skip-visit-available?
89160                                                                          the-struct_0))
89161                                                                        (raise-argument-error
89162                                                                         'struct-copy
89163                                                                         "expand-context/inner?"
89164                                                                         the-struct_0)))))
89165                                                               (let ((post-expansion235_1
89166                                                                      post-expansion235_0))
89167                                                                 (expand-context/outer1.1
89168                                                                  inner236_0
89169                                                                  post-expansion235_1
89170                                                                  (root-expand-context/outer-use-site-scopes
89171                                                                   v_0)
89172                                                                  (root-expand-context/outer-frame-id
89173                                                                   v_0)
89174                                                                  (expand-context/outer-context
89175                                                                   v_0)
89176                                                                  (expand-context/outer-env
89177                                                                   v_0)
89178                                                                  (expand-context/outer-scopes
89179                                                                   v_0)
89180                                                                  (expand-context/outer-def-ctx-scopes
89181                                                                   v_0)
89182                                                                  (expand-context/outer-binding-layer
89183                                                                   v_0)
89184                                                                  (expand-context/outer-reference-records
89185                                                                   v_0)
89186                                                                  (expand-context/outer-only-immediate?
89187                                                                   v_0)
89188                                                                  (expand-context/outer-need-eventually-defined
89189                                                                   v_0)
89190                                                                  (expand-context/outer-current-introduction-scopes
89191                                                                   v_0)
89192                                                                  (expand-context/outer-current-use-scopes
89193                                                                   v_0)
89194                                                                  (expand-context/outer-name
89195                                                                   v_0)))))
89196                                                           (raise-argument-error
89197                                                            'struct-copy
89198                                                            "expand-context/outer?"
89199                                                            v_0)))))
89200                                                  (let ((bodys_0
89201                                                         (let ((scoped-s_0
89202                                                                (|#%app|
89203                                                                 apply-module-scopes_0
89204                                                                 s13_0)))
89205                                                           (call-with-values
89206                                                            (lambda ()
89207                                                              (call-with-values
89208                                                               (lambda ()
89209                                                                 (let ((s_0
89210                                                                        (if (syntax?$1
89211                                                                             scoped-s_0)
89212                                                                          (syntax-e$1
89213                                                                           scoped-s_0)
89214                                                                          scoped-s_0)))
89215                                                                   (if (pair?
89216                                                                        s_0)
89217                                                                     (let ((_0
89218                                                                            (let ((s_1
89219                                                                                   (car
89220                                                                                    s_0)))
89221                                                                              s_1)))
89222                                                                       (call-with-values
89223                                                                        (lambda ()
89224                                                                          (let ((s_1
89225                                                                                 (cdr
89226                                                                                  s_0)))
89227                                                                            (let ((s_2
89228                                                                                   (if (syntax?$1
89229                                                                                        s_1)
89230                                                                                     (syntax-e$1
89231                                                                                      s_1)
89232                                                                                     s_1)))
89233                                                                              (if (pair?
89234                                                                                   s_2)
89235                                                                                (let ((_1
89236                                                                                       (let ((s_3
89237                                                                                              (car
89238                                                                                               s_2)))
89239                                                                                         s_3)))
89240                                                                                  (call-with-values
89241                                                                                   (lambda ()
89242                                                                                     (let ((s_3
89243                                                                                            (cdr
89244                                                                                             s_2)))
89245                                                                                       (let ((s_4
89246                                                                                              (if (syntax?$1
89247                                                                                                   s_3)
89248                                                                                                (syntax-e$1
89249                                                                                                 s_3)
89250                                                                                                s_3)))
89251                                                                                         (if (pair?
89252                                                                                              s_4)
89253                                                                                           (let ((_2
89254                                                                                                  (let ((s_5
89255                                                                                                         (car
89256                                                                                                          s_4)))
89257                                                                                                    s_5)))
89258                                                                                             (let ((body253_0
89259                                                                                                    (let ((s_5
89260                                                                                                           (cdr
89261                                                                                                            s_4)))
89262                                                                                                      (let ((s_6
89263                                                                                                             (if (syntax?$1
89264                                                                                                                  s_5)
89265                                                                                                               (syntax-e$1
89266                                                                                                                s_5)
89267                                                                                                               s_5)))
89268                                                                                                        (let ((flat-s_0
89269                                                                                                               (to-syntax-list.1
89270                                                                                                                s_6)))
89271                                                                                                          (if (not
89272                                                                                                               flat-s_0)
89273                                                                                                            (raise-syntax-error$1
89274                                                                                                             #f
89275                                                                                                             "bad syntax"
89276                                                                                                             scoped-s_0)
89277                                                                                                            flat-s_0))))))
89278                                                                                               (let ((_3
89279                                                                                                      _2))
89280                                                                                                 (values
89281                                                                                                  _3
89282                                                                                                  body253_0))))
89283                                                                                           (raise-syntax-error$1
89284                                                                                            #f
89285                                                                                            "bad syntax"
89286                                                                                            scoped-s_0)))))
89287                                                                                   (case-lambda
89288                                                                                    ((_2
89289                                                                                      body251_0)
89290                                                                                     (let ((_3
89291                                                                                            _1))
89292                                                                                       (values
89293                                                                                        _3
89294                                                                                        _2
89295                                                                                        body251_0)))
89296                                                                                    (args
89297                                                                                     (raise-binding-result-arity-error
89298                                                                                      2
89299                                                                                      args)))))
89300                                                                                (raise-syntax-error$1
89301                                                                                 #f
89302                                                                                 "bad syntax"
89303                                                                                 scoped-s_0)))))
89304                                                                        (case-lambda
89305                                                                         ((_1
89306                                                                           _2
89307                                                                           body248_0)
89308                                                                          (let ((_3
89309                                                                                 _0))
89310                                                                            (values
89311                                                                             _3
89312                                                                             _1
89313                                                                             _2
89314                                                                             body248_0)))
89315                                                                         (args
89316                                                                          (raise-binding-result-arity-error
89317                                                                           3
89318                                                                           args)))))
89319                                                                     (raise-syntax-error$1
89320                                                                      #f
89321                                                                      "bad syntax"
89322                                                                      scoped-s_0))))
89323                                                               (case-lambda
89324                                                                ((_0
89325                                                                  _1
89326                                                                  _2
89327                                                                  body244_0)
89328                                                                 (values
89329                                                                  #t
89330                                                                  _0
89331                                                                  _1
89332                                                                  _2
89333                                                                  body244_0))
89334                                                                (args
89335                                                                 (raise-binding-result-arity-error
89336                                                                  4
89337                                                                  args)))))
89338                                                            (case-lambda
89339                                                             ((ok?_1
89340                                                               _0
89341                                                               _1
89342                                                               _2
89343                                                               body244_0)
89344                                                              body244_0)
89345                                                             (args
89346                                                              (raise-binding-result-arity-error
89347                                                               5
89348                                                               args)))))))
89349                                                    (let ((requires+provides_0
89350                                                           (make-requires+provides.1
89351                                                            #f
89352                                                            self_0)))
89353                                                      (let ((defined-syms_0
89354                                                             (begin-unsafe
89355                                                              (root-expand-context/inner-defined-syms
89356                                                               (root-expand-context/outer-inner
89357                                                                root-ctx_0)))))
89358                                                        (let ((compiled-submodules_0
89359                                                               (make-hasheq)))
89360                                                          (let ((compiled-module-box_0
89361                                                                 (box #f)))
89362                                                            (let ((mpis-to-reset_0
89363                                                                   (box null)))
89364                                                              (let ((initial-require!_0
89365                                                                     (|#%name|
89366                                                                      initial-require!
89367                                                                      (lambda (bind?217_0)
89368                                                                        (begin
89369                                                                          (if (not
89370                                                                               keep-enclosing-scope-at-phase2_0)
89371                                                                            (let ((requires+provides259_0
89372                                                                                   requires+provides_0))
89373                                                                              (perform-initial-require!.1
89374                                                                               bind?217_0
89375                                                                               'module
89376                                                                               initial-require_0
89377                                                                               self_0
89378                                                                               initial-require-s_0
89379                                                                               m-ns_0
89380                                                                               requires+provides259_0))
89381                                                                            (begin
89382                                                                              (add-required-module!
89383                                                                               requires+provides_0
89384                                                                               enclosing-mod_0
89385                                                                               keep-enclosing-scope-at-phase2_0
89386                                                                               enclosing-is-cross-phase-persistent?3_0)
89387                                                                              (let ((requires+provides262_0
89388                                                                                     requires+provides_0))
89389                                                                                (add-enclosing-module-defined-and-required!.1
89390                                                                                 enclosing-requires+provides4_0
89391                                                                                 requires+provides262_0
89392                                                                                 enclosing-mod_0
89393                                                                                 keep-enclosing-scope-at-phase2_0))
89394                                                                              (namespace-module-visit!.1
89395                                                                               unsafe-undefined
89396                                                                               m-ns_0
89397                                                                               enclosing-mod_0
89398                                                                               keep-enclosing-scope-at-phase2_0))))))))
89399                                                                (begin
89400                                                                  (let ((obs_0
89401                                                                         (begin-unsafe
89402                                                                          (expand-context/inner-observer
89403                                                                           (root-expand-context/outer-inner
89404                                                                            init-ctx14_0)))))
89405                                                                    (if obs_0
89406                                                                      (call-expand-observe
89407                                                                       obs_0
89408                                                                       'prepare-env)
89409                                                                      (void)))
89410                                                                  (begin
89411                                                                    (initial-require!_0
89412                                                                     #t)
89413                                                                    (begin
89414                                                                      (let ((obs_0
89415                                                                             (begin-unsafe
89416                                                                              (expand-context/inner-observer
89417                                                                               (root-expand-context/outer-inner
89418                                                                                init-ctx14_0)))))
89419                                                                        (if obs_0
89420                                                                          (call-expand-observe
89421                                                                           obs_0
89422                                                                           'rename-one
89423                                                                           bodys_0)
89424                                                                          (void)))
89425                                                                      (let ((again?_0
89426                                                                             #f))
89427                                                                        (letrec*
89428                                                                         ((module-begin-k_0
89429                                                                           (|#%name|
89430                                                                            module-begin-k
89431                                                                            (lambda (mb-s_0
89432                                                                                     mb-init-ctx_0)
89433                                                                              (begin
89434                                                                                (begin
89435                                                                                  (if again?_0
89436                                                                                    (begin
89437                                                                                      (requires+provides-reset!
89438                                                                                       requires+provides_0)
89439                                                                                      (initial-require!_0
89440                                                                                       #f)
89441                                                                                      (hash-clear!
89442                                                                                       compiled-submodules_0)
89443                                                                                      (set-box!
89444                                                                                       compiled-module-box_0
89445                                                                                       #f))
89446                                                                                    (void))
89447                                                                                  (begin
89448                                                                                    (set! again?_0
89449                                                                                      #t)
89450                                                                                    (let ((ctx_1
89451                                                                                           (if (expand-context/outer?
89452                                                                                                mb-init-ctx_0)
89453                                                                                             (let ((post-expansion274_0
89454                                                                                                    (|#%name|
89455                                                                                                     post-expansion274
89456                                                                                                     (lambda (s_0)
89457                                                                                                       (begin
89458                                                                                                         (add-scope
89459                                                                                                          s_0
89460                                                                                                          inside-scope_0))))))
89461                                                                                               (let ((inner275_0
89462                                                                                                      (let ((the-struct_0
89463                                                                                                             (root-expand-context/outer-inner
89464                                                                                                              mb-init-ctx_0)))
89465                                                                                                        (if (expand-context/inner?
89466                                                                                                             the-struct_0)
89467                                                                                                          (let ((module-begin-k276_0
89468                                                                                                                 (|#%name|
89469                                                                                                                  module-begin-k276
89470                                                                                                                  (lambda (s_0
89471                                                                                                                           ctx_1)
89472                                                                                                                    (begin
89473                                                                                                                      (let ((new-requires+provides_0
89474                                                                                                                             (let ((requires+provides286_0
89475                                                                                                                                    requires+provides_0))
89476                                                                                                                               (make-requires+provides.1
89477                                                                                                                                requires+provides286_0
89478                                                                                                                                self_0))))
89479                                                                                                                        (let ((requires+provides277_0
89480                                                                                                                               requires+provides_0))
89481                                                                                                                          (let ((compiled-submodules278_0
89482                                                                                                                                 compiled-submodules_0))
89483                                                                                                                            (let ((compiled-module-box279_0
89484                                                                                                                                   compiled-module-box_0))
89485                                                                                                                              (let ((defined-syms280_0
89486                                                                                                                                     defined-syms_0))
89487                                                                                                                                (let ((compiled-submodules282_0
89488                                                                                                                                       (make-hasheq)))
89489                                                                                                                                  (let ((compiled-module-box283_0
89490                                                                                                                                         (box
89491                                                                                                                                          #f)))
89492                                                                                                                                    (let ((defined-syms284_0
89493                                                                                                                                           (make-hasheq)))
89494                                                                                                                                      (let ((compiled-module-box283_1
89495                                                                                                                                             compiled-module-box283_0)
89496                                                                                                                                            (compiled-submodules282_1
89497                                                                                                                                             compiled-submodules282_0)
89498                                                                                                                                            (defined-syms280_1
89499                                                                                                                                             defined-syms280_0)
89500                                                                                                                                            (compiled-module-box279_1
89501                                                                                                                                             compiled-module-box279_0)
89502                                                                                                                                            (compiled-submodules278_1
89503                                                                                                                                             compiled-submodules278_0)
89504                                                                                                                                            (requires+provides277_1
89505                                                                                                                                             requires+provides277_0))
89506                                                                                                                                        (dynamic-wind
89507                                                                                                                                         (lambda ()
89508                                                                                                                                           (begin
89509                                                                                                                                             (set! requires+provides_0
89510                                                                                                                                               new-requires+provides_0)
89511                                                                                                                                             (set! compiled-submodules_0
89512                                                                                                                                               compiled-submodules282_1)
89513                                                                                                                                             (set! compiled-module-box_0
89514                                                                                                                                               compiled-module-box283_1)
89515                                                                                                                                             (set! defined-syms_0
89516                                                                                                                                               defined-syms284_0)))
89517                                                                                                                                         (lambda ()
89518                                                                                                                                           (module-begin-k_0
89519                                                                                                                                            s_0
89520                                                                                                                                            ctx_1))
89521                                                                                                                                         (lambda ()
89522                                                                                                                                           (begin
89523                                                                                                                                             (set! requires+provides_0
89524                                                                                                                                               requires+provides277_1)
89525                                                                                                                                             (set! compiled-submodules_0
89526                                                                                                                                               compiled-submodules278_1)
89527                                                                                                                                             (set! compiled-module-box_0
89528                                                                                                                                               compiled-module-box279_1)
89529                                                                                                                                             (set! defined-syms_0
89530                                                                                                                                               defined-syms280_1))))))))))))))))))
89531                                                                                                            (expand-context/inner2.1
89532                                                                                                             (root-expand-context/inner-self-mpi
89533                                                                                                              the-struct_0)
89534                                                                                                             (root-expand-context/inner-module-scopes
89535                                                                                                              the-struct_0)
89536                                                                                                             (root-expand-context/inner-top-level-bind-scope
89537                                                                                                              the-struct_0)
89538                                                                                                             (root-expand-context/inner-all-scopes-stx
89539                                                                                                              the-struct_0)
89540                                                                                                             (root-expand-context/inner-defined-syms
89541                                                                                                              the-struct_0)
89542                                                                                                             (root-expand-context/inner-counter
89543                                                                                                              the-struct_0)
89544                                                                                                             (root-expand-context/inner-lift-key
89545                                                                                                              the-struct_0)
89546                                                                                                             (expand-context/inner-to-parsed?
89547                                                                                                              the-struct_0)
89548                                                                                                             (expand-context/inner-phase
89549                                                                                                              the-struct_0)
89550                                                                                                             (expand-context/inner-namespace
89551                                                                                                              the-struct_0)
89552                                                                                                             (expand-context/inner-just-once?
89553                                                                                                              the-struct_0)
89554                                                                                                             module-begin-k276_0
89555                                                                                                             (expand-context/inner-allow-unbound?
89556                                                                                                              the-struct_0)
89557                                                                                                             (expand-context/inner-in-local-expand?
89558                                                                                                              the-struct_0)
89559                                                                                                             (|expand-context/inner-keep-#%expression?|
89560                                                                                                              the-struct_0)
89561                                                                                                             (expand-context/inner-stops
89562                                                                                                              the-struct_0)
89563                                                                                                             (expand-context/inner-declared-submodule-names
89564                                                                                                              the-struct_0)
89565                                                                                                             (expand-context/inner-lifts
89566                                                                                                              the-struct_0)
89567                                                                                                             (expand-context/inner-lift-envs
89568                                                                                                              the-struct_0)
89569                                                                                                             (expand-context/inner-module-lifts
89570                                                                                                              the-struct_0)
89571                                                                                                             (expand-context/inner-require-lifts
89572                                                                                                              the-struct_0)
89573                                                                                                             (expand-context/inner-to-module-lifts
89574                                                                                                              the-struct_0)
89575                                                                                                             (expand-context/inner-requires+provides
89576                                                                                                              the-struct_0)
89577                                                                                                             (expand-context/inner-observer
89578                                                                                                              the-struct_0)
89579                                                                                                             (expand-context/inner-for-serializable?
89580                                                                                                              the-struct_0)
89581                                                                                                             (expand-context/inner-to-correlated-linklet?
89582                                                                                                              the-struct_0)
89583                                                                                                             (expand-context/inner-normalize-locals?
89584                                                                                                              the-struct_0)
89585                                                                                                             (expand-context/inner-parsing-expanded?
89586                                                                                                              the-struct_0)
89587                                                                                                             (expand-context/inner-skip-visit-available?
89588                                                                                                              the-struct_0)))
89589                                                                                                          (raise-argument-error
89590                                                                                                           'struct-copy
89591                                                                                                           "expand-context/inner?"
89592                                                                                                           the-struct_0)))))
89593                                                                                                 (let ((post-expansion274_1
89594                                                                                                        post-expansion274_0))
89595                                                                                                   (expand-context/outer1.1
89596                                                                                                    inner275_0
89597                                                                                                    post-expansion274_1
89598                                                                                                    (root-expand-context/outer-use-site-scopes
89599                                                                                                     mb-init-ctx_0)
89600                                                                                                    (root-expand-context/outer-frame-id
89601                                                                                                     mb-init-ctx_0)
89602                                                                                                    (expand-context/outer-context
89603                                                                                                     mb-init-ctx_0)
89604                                                                                                    (expand-context/outer-env
89605                                                                                                     mb-init-ctx_0)
89606                                                                                                    (expand-context/outer-scopes
89607                                                                                                     mb-init-ctx_0)
89608                                                                                                    (expand-context/outer-def-ctx-scopes
89609                                                                                                     mb-init-ctx_0)
89610                                                                                                    (expand-context/outer-binding-layer
89611                                                                                                     mb-init-ctx_0)
89612                                                                                                    (expand-context/outer-reference-records
89613                                                                                                     mb-init-ctx_0)
89614                                                                                                    (expand-context/outer-only-immediate?
89615                                                                                                     mb-init-ctx_0)
89616                                                                                                    (expand-context/outer-need-eventually-defined
89617                                                                                                     mb-init-ctx_0)
89618                                                                                                    (expand-context/outer-current-introduction-scopes
89619                                                                                                     mb-init-ctx_0)
89620                                                                                                    (expand-context/outer-current-use-scopes
89621                                                                                                     mb-init-ctx_0)
89622                                                                                                    (expand-context/outer-name
89623                                                                                                     mb-init-ctx_0)))))
89624                                                                                             (raise-argument-error
89625                                                                                              'struct-copy
89626                                                                                              "expand-context/outer?"
89627                                                                                              mb-init-ctx_0))))
89628                                                                                      (let ((added-s_0
89629                                                                                             (add-scope
89630                                                                                              mb-s_0
89631                                                                                              inside-scope_0)))
89632                                                                                        (call-with-values
89633                                                                                         (lambda ()
89634                                                                                           (call-with-values
89635                                                                                            (lambda ()
89636                                                                                              (let ((s_0
89637                                                                                                     (if (syntax?$1
89638                                                                                                          added-s_0)
89639                                                                                                       (syntax-e$1
89640                                                                                                        added-s_0)
89641                                                                                                       added-s_0)))
89642                                                                                                (if (pair?
89643                                                                                                     s_0)
89644                                                                                                  (let ((|#%module-begin271_0|
89645                                                                                                         (let ((s_1
89646                                                                                                                (car
89647                                                                                                                 s_0)))
89648                                                                                                           s_1)))
89649                                                                                                    (let ((body272_0
89650                                                                                                           (let ((s_1
89651                                                                                                                  (cdr
89652                                                                                                                   s_0)))
89653                                                                                                             (let ((s_2
89654                                                                                                                    (if (syntax?$1
89655                                                                                                                         s_1)
89656                                                                                                                      (syntax-e$1
89657                                                                                                                       s_1)
89658                                                                                                                      s_1)))
89659                                                                                                               (let ((flat-s_0
89660                                                                                                                      (to-syntax-list.1
89661                                                                                                                       s_2)))
89662                                                                                                                 (if (not
89663                                                                                                                      flat-s_0)
89664                                                                                                                   (raise-syntax-error$1
89665                                                                                                                    #f
89666                                                                                                                    "bad syntax"
89667                                                                                                                    added-s_0)
89668                                                                                                                   flat-s_0))))))
89669                                                                                                      (let ((|#%module-begin271_1|
89670                                                                                                             |#%module-begin271_0|))
89671                                                                                                        (values
89672                                                                                                         |#%module-begin271_1|
89673                                                                                                         body272_0))))
89674                                                                                                  (raise-syntax-error$1
89675                                                                                                   #f
89676                                                                                                   "bad syntax"
89677                                                                                                   added-s_0))))
89678                                                                                            (case-lambda
89679                                                                                             ((|#%module-begin269_0|
89680                                                                                               body270_0)
89681                                                                                              (values
89682                                                                                               #t
89683                                                                                               |#%module-begin269_0|
89684                                                                                               body270_0))
89685                                                                                             (args
89686                                                                                              (raise-binding-result-arity-error
89687                                                                                               2
89688                                                                                               args)))))
89689                                                                                         (case-lambda
89690                                                                                          ((ok?_1
89691                                                                                            |#%module-begin269_0|
89692                                                                                            body270_0)
89693                                                                                           (begin
89694                                                                                             (let ((obs_0
89695                                                                                                    (begin-unsafe
89696                                                                                                     (expand-context/inner-observer
89697                                                                                                      (root-expand-context/outer-inner
89698                                                                                                       ctx_1)))))
89699                                                                                               (if obs_0
89700                                                                                                 (call-expand-observe
89701                                                                                                  obs_0
89702                                                                                                  'rename-one
89703                                                                                                  added-s_0)
89704                                                                                                 (void)))
89705                                                                                             (let ((rebuild-mb-s_0
89706                                                                                                    (keep-as-needed.1
89707                                                                                                     #f
89708                                                                                                     #f
89709                                                                                                     #f
89710                                                                                                     ctx_1
89711                                                                                                     mb-s_0)))
89712                                                                                               (let ((need-eventually-defined_0
89713                                                                                                      (make-hasheqv)))
89714                                                                                                 (let ((module-ends_0
89715                                                                                                        (make-shared-module-ends)))
89716                                                                                                   (let ((declared-keywords_0
89717                                                                                                          (make-hasheq)))
89718                                                                                                     (let ((declared-submodule-names_0
89719                                                                                                            (make-hasheq)))
89720                                                                                                       (let ((require-lifts_0
89721                                                                                                              (begin-unsafe
89722                                                                                                               (expand-context/inner-require-lifts
89723                                                                                                                (root-expand-context/outer-inner
89724                                                                                                                 ctx_1)))))
89725                                                                                                         (let ((initial-lifted-requires_0
89726                                                                                                                (begin-unsafe
89727                                                                                                                 (unbox
89728                                                                                                                  (require-lift-context-requires
89729                                                                                                                   require-lifts_0)))))
89730                                                                                                           (let ((expression-expanded-bodys_0
89731                                                                                                                  (letrec*
89732                                                                                                                   ((pass-1-and-2-loop_0
89733                                                                                                                     (|#%name|
89734                                                                                                                      pass-1-and-2-loop
89735                                                                                                                      (lambda (bodys_1
89736                                                                                                                               phase_0
89737                                                                                                                               keep-stops?_0
89738                                                                                                                               initial-lifted-requires_1)
89739                                                                                                                        (begin
89740                                                                                                                          (let ((def-ctx-scopes_0
89741                                                                                                                                 (box
89742                                                                                                                                  null)))
89743                                                                                                                            (let ((partial-body-ctx_0
89744                                                                                                                                   (if (expand-context/outer?
89745                                                                                                                                        ctx_1)
89746                                                                                                                                     (let ((the-struct_0
89747                                                                                                                                            (root-expand-context/outer-inner
89748                                                                                                                                             ctx_1)))
89749                                                                                                                                       (let ((inner300_0
89750                                                                                                                                              (if (expand-context/inner?
89751                                                                                                                                                   the-struct_0)
89752                                                                                                                                                (let ((namespace302_0
89753                                                                                                                                                       (namespace->namespace-at-phase
89754                                                                                                                                                        m-ns_0
89755                                                                                                                                                        phase_0)))
89756                                                                                                                                                  (let ((stops303_0
89757                                                                                                                                                         (free-id-set
89758                                                                                                                                                          phase_0
89759                                                                                                                                                          (module-expand-stop-ids
89760                                                                                                                                                           phase_0))))
89761                                                                                                                                                    (let ((lift-key305_0
89762                                                                                                                                                           (generate-lift-key)))
89763                                                                                                                                                      (let ((lifts306_0
89764                                                                                                                                                             (let ((temp310_0
89765                                                                                                                                                                    (let ((app_0
89766                                                                                                                                                                           defined-syms_0))
89767                                                                                                                                                                      (make-wrap-as-definition
89768                                                                                                                                                                       self_0
89769                                                                                                                                                                       frame-id_0
89770                                                                                                                                                                       inside-scope_0
89771                                                                                                                                                                       initial-require-s_0
89772                                                                                                                                                                       app_0
89773                                                                                                                                                                       requires+provides_0))))
89774                                                                                                                                                               (make-lift-context.1
89775                                                                                                                                                                #f
89776                                                                                                                                                                temp310_0))))
89777                                                                                                                                                        (let ((module-lifts307_0
89778                                                                                                                                                               (begin-unsafe
89779                                                                                                                                                                (module-lift-context15.1
89780                                                                                                                                                                 phase_0
89781                                                                                                                                                                 (box
89782                                                                                                                                                                  null)
89783                                                                                                                                                                 #t))))
89784                                                                                                                                                          (let ((require-lifts308_0
89785                                                                                                                                                                 (make-require-lift-context
89786                                                                                                                                                                  phase_0
89787                                                                                                                                                                  (let ((requires+provides313_0
89788                                                                                                                                                                         requires+provides_0))
89789                                                                                                                                                                    (make-parse-lifted-require.1
89790                                                                                                                                                                     declared-submodule-names_0
89791                                                                                                                                                                     m-ns_0
89792                                                                                                                                                                     self_0
89793                                                                                                                                                                     requires+provides313_0))
89794                                                                                                                                                                  initial-lifted-requires_1)))
89795                                                                                                                                                            (let ((to-module-lifts309_0
89796                                                                                                                                                                   (make-to-module-lift-context.1
89797                                                                                                                                                                    #f
89798                                                                                                                                                                    module-ends_0
89799                                                                                                                                                                    phase_0)))
89800                                                                                                                                                              (let ((require-lifts308_1
89801                                                                                                                                                                     require-lifts308_0)
89802                                                                                                                                                                    (module-lifts307_1
89803                                                                                                                                                                     module-lifts307_0)
89804                                                                                                                                                                    (lifts306_1
89805                                                                                                                                                                     lifts306_0)
89806                                                                                                                                                                    (lift-key305_1
89807                                                                                                                                                                     lift-key305_0)
89808                                                                                                                                                                    (stops303_1
89809                                                                                                                                                                     stops303_0)
89810                                                                                                                                                                    (namespace302_1
89811                                                                                                                                                                     namespace302_0))
89812                                                                                                                                                                (expand-context/inner2.1
89813                                                                                                                                                                 (root-expand-context/inner-self-mpi
89814                                                                                                                                                                  the-struct_0)
89815                                                                                                                                                                 (root-expand-context/inner-module-scopes
89816                                                                                                                                                                  the-struct_0)
89817                                                                                                                                                                 (root-expand-context/inner-top-level-bind-scope
89818                                                                                                                                                                  the-struct_0)
89819                                                                                                                                                                 (root-expand-context/inner-all-scopes-stx
89820                                                                                                                                                                  the-struct_0)
89821                                                                                                                                                                 (root-expand-context/inner-defined-syms
89822                                                                                                                                                                  the-struct_0)
89823                                                                                                                                                                 (root-expand-context/inner-counter
89824                                                                                                                                                                  the-struct_0)
89825                                                                                                                                                                 lift-key305_1
89826                                                                                                                                                                 (expand-context/inner-to-parsed?
89827                                                                                                                                                                  the-struct_0)
89828                                                                                                                                                                 phase_0
89829                                                                                                                                                                 namespace302_1
89830                                                                                                                                                                 (expand-context/inner-just-once?
89831                                                                                                                                                                  the-struct_0)
89832                                                                                                                                                                 (expand-context/inner-module-begin-k
89833                                                                                                                                                                  the-struct_0)
89834                                                                                                                                                                 (expand-context/inner-allow-unbound?
89835                                                                                                                                                                  the-struct_0)
89836                                                                                                                                                                 (expand-context/inner-in-local-expand?
89837                                                                                                                                                                  the-struct_0)
89838                                                                                                                                                                 (|expand-context/inner-keep-#%expression?|
89839                                                                                                                                                                  the-struct_0)
89840                                                                                                                                                                 stops303_1
89841                                                                                                                                                                 declared-submodule-names_0
89842                                                                                                                                                                 lifts306_1
89843                                                                                                                                                                 (expand-context/inner-lift-envs
89844                                                                                                                                                                  the-struct_0)
89845                                                                                                                                                                 module-lifts307_1
89846                                                                                                                                                                 require-lifts308_1
89847                                                                                                                                                                 to-module-lifts309_0
89848                                                                                                                                                                 (expand-context/inner-requires+provides
89849                                                                                                                                                                  the-struct_0)
89850                                                                                                                                                                 (expand-context/inner-observer
89851                                                                                                                                                                  the-struct_0)
89852                                                                                                                                                                 (expand-context/inner-for-serializable?
89853                                                                                                                                                                  the-struct_0)
89854                                                                                                                                                                 (expand-context/inner-to-correlated-linklet?
89855                                                                                                                                                                  the-struct_0)
89856                                                                                                                                                                 (expand-context/inner-normalize-locals?
89857                                                                                                                                                                  the-struct_0)
89858                                                                                                                                                                 (expand-context/inner-parsing-expanded?
89859                                                                                                                                                                  the-struct_0)
89860                                                                                                                                                                 (expand-context/inner-skip-visit-available?
89861                                                                                                                                                                  the-struct_0))))))))))
89862                                                                                                                                                (raise-argument-error
89863                                                                                                                                                 'struct-copy
89864                                                                                                                                                 "expand-context/inner?"
89865                                                                                                                                                 the-struct_0))))
89866                                                                                                                                         (expand-context/outer1.1
89867                                                                                                                                          inner300_0
89868                                                                                                                                          (root-expand-context/outer-post-expansion
89869                                                                                                                                           ctx_1)
89870                                                                                                                                          (root-expand-context/outer-use-site-scopes
89871                                                                                                                                           ctx_1)
89872                                                                                                                                          (root-expand-context/outer-frame-id
89873                                                                                                                                           ctx_1)
89874                                                                                                                                          'module
89875                                                                                                                                          (expand-context/outer-env
89876                                                                                                                                           ctx_1)
89877                                                                                                                                          (expand-context/outer-scopes
89878                                                                                                                                           ctx_1)
89879                                                                                                                                          def-ctx-scopes_0
89880                                                                                                                                          (expand-context/outer-binding-layer
89881                                                                                                                                           ctx_1)
89882                                                                                                                                          (expand-context/outer-reference-records
89883                                                                                                                                           ctx_1)
89884                                                                                                                                          (expand-context/outer-only-immediate?
89885                                                                                                                                           ctx_1)
89886                                                                                                                                          need-eventually-defined_0
89887                                                                                                                                          (expand-context/outer-current-introduction-scopes
89888                                                                                                                                           ctx_1)
89889                                                                                                                                          (expand-context/outer-current-use-scopes
89890                                                                                                                                           ctx_1)
89891                                                                                                                                          (expand-context/outer-name
89892                                                                                                                                           ctx_1))))
89893                                                                                                                                     (raise-argument-error
89894                                                                                                                                      'struct-copy
89895                                                                                                                                      "expand-context/outer?"
89896                                                                                                                                      ctx_1))))
89897                                                                                                                              (let ((partially-expanded-bodys_0
89898                                                                                                                                     (let ((requires+provides324_0
89899                                                                                                                                            requires+provides_0))
89900                                                                                                                                       (let ((defined-syms327_0
89901                                                                                                                                              defined-syms_0))
89902                                                                                                                                         (let ((compiled-submodules330_0
89903                                                                                                                                                compiled-submodules_0))
89904                                                                                                                                           (let ((defined-syms327_1
89905                                                                                                                                                  defined-syms327_0)
89906                                                                                                                                                 (requires+provides324_1
89907                                                                                                                                                  requires+provides324_0))
89908                                                                                                                                             (partially-expand-bodys.1
89909                                                                                                                                              initial-require-s_0
89910                                                                                                                                              compiled-submodules330_0
89911                                                                                                                                              partial-body-ctx_0
89912                                                                                                                                              declared-keywords_0
89913                                                                                                                                              declared-submodule-names_0
89914                                                                                                                                              defined-syms327_1
89915                                                                                                                                              frame-id_0
89916                                                                                                                                              pass-1-and-2-loop_0
89917                                                                                                                                              modules-being-compiled_0
89918                                                                                                                                              mpis-to-reset_0
89919                                                                                                                                              m-ns_0
89920                                                                                                                                              need-eventually-defined_0
89921                                                                                                                                              phase_0
89922                                                                                                                                              requires+provides324_1
89923                                                                                                                                              self_0
89924                                                                                                                                              bodys_1)))))))
89925                                                                                                                                (begin
89926                                                                                                                                  (let ((obs_0
89927                                                                                                                                         (begin-unsafe
89928                                                                                                                                          (expand-context/inner-observer
89929                                                                                                                                           (root-expand-context/outer-inner
89930                                                                                                                                            partial-body-ctx_0)))))
89931                                                                                                                                    (if obs_0
89932                                                                                                                                      (call-expand-observe
89933                                                                                                                                       obs_0
89934                                                                                                                                       'next-group)
89935                                                                                                                                      (void)))
89936                                                                                                                                  (let ((body-ctx_0
89937                                                                                                                                         (let ((v_0
89938                                                                                                                                                (accumulate-def-ctx-scopes
89939                                                                                                                                                 partial-body-ctx_0
89940                                                                                                                                                 def-ctx-scopes_0)))
89941                                                                                                                                           (if (expand-context/outer?
89942                                                                                                                                                v_0)
89943                                                                                                                                             (let ((the-struct_0
89944                                                                                                                                                    (root-expand-context/outer-inner
89945                                                                                                                                                     v_0)))
89946                                                                                                                                               (let ((inner336_0
89947                                                                                                                                                      (if (expand-context/inner?
89948                                                                                                                                                           the-struct_0)
89949                                                                                                                                                        (let ((stops337_0
89950                                                                                                                                                               (if keep-stops?_0
89951                                                                                                                                                                 (begin-unsafe
89952                                                                                                                                                                  (expand-context/inner-stops
89953                                                                                                                                                                   (root-expand-context/outer-inner
89954                                                                                                                                                                    ctx_1)))
89955                                                                                                                                                                 empty-free-id-set)))
89956                                                                                                                                                          (let ((to-module-lifts338_0
89957                                                                                                                                                                 (make-to-module-lift-context.1
89958                                                                                                                                                                  #t
89959                                                                                                                                                                  module-ends_0
89960                                                                                                                                                                  phase_0)))
89961                                                                                                                                                            (let ((stops337_1
89962                                                                                                                                                                   stops337_0))
89963                                                                                                                                                              (expand-context/inner2.1
89964                                                                                                                                                               (root-expand-context/inner-self-mpi
89965                                                                                                                                                                the-struct_0)
89966                                                                                                                                                               (root-expand-context/inner-module-scopes
89967                                                                                                                                                                the-struct_0)
89968                                                                                                                                                               (root-expand-context/inner-top-level-bind-scope
89969                                                                                                                                                                the-struct_0)
89970                                                                                                                                                               (root-expand-context/inner-all-scopes-stx
89971                                                                                                                                                                the-struct_0)
89972                                                                                                                                                               (root-expand-context/inner-defined-syms
89973                                                                                                                                                                the-struct_0)
89974                                                                                                                                                               (root-expand-context/inner-counter
89975                                                                                                                                                                the-struct_0)
89976                                                                                                                                                               (root-expand-context/inner-lift-key
89977                                                                                                                                                                the-struct_0)
89978                                                                                                                                                               (expand-context/inner-to-parsed?
89979                                                                                                                                                                the-struct_0)
89980                                                                                                                                                               (expand-context/inner-phase
89981                                                                                                                                                                the-struct_0)
89982                                                                                                                                                               (expand-context/inner-namespace
89983                                                                                                                                                                the-struct_0)
89984                                                                                                                                                               (expand-context/inner-just-once?
89985                                                                                                                                                                the-struct_0)
89986                                                                                                                                                               (expand-context/inner-module-begin-k
89987                                                                                                                                                                the-struct_0)
89988                                                                                                                                                               (expand-context/inner-allow-unbound?
89989                                                                                                                                                                the-struct_0)
89990                                                                                                                                                               (expand-context/inner-in-local-expand?
89991                                                                                                                                                                the-struct_0)
89992                                                                                                                                                               (|expand-context/inner-keep-#%expression?|
89993                                                                                                                                                                the-struct_0)
89994                                                                                                                                                               stops337_1
89995                                                                                                                                                               (expand-context/inner-declared-submodule-names
89996                                                                                                                                                                the-struct_0)
89997                                                                                                                                                               (expand-context/inner-lifts
89998                                                                                                                                                                the-struct_0)
89999                                                                                                                                                               (expand-context/inner-lift-envs
90000                                                                                                                                                                the-struct_0)
90001                                                                                                                                                               (expand-context/inner-module-lifts
90002                                                                                                                                                                the-struct_0)
90003                                                                                                                                                               (expand-context/inner-require-lifts
90004                                                                                                                                                                the-struct_0)
90005                                                                                                                                                               to-module-lifts338_0
90006                                                                                                                                                               (expand-context/inner-requires+provides
90007                                                                                                                                                                the-struct_0)
90008                                                                                                                                                               (expand-context/inner-observer
90009                                                                                                                                                                the-struct_0)
90010                                                                                                                                                               (expand-context/inner-for-serializable?
90011                                                                                                                                                                the-struct_0)
90012                                                                                                                                                               (expand-context/inner-to-correlated-linklet?
90013                                                                                                                                                                the-struct_0)
90014                                                                                                                                                               (expand-context/inner-normalize-locals?
90015                                                                                                                                                                the-struct_0)
90016                                                                                                                                                               (expand-context/inner-parsing-expanded?
90017                                                                                                                                                                the-struct_0)
90018                                                                                                                                                               (expand-context/inner-skip-visit-available?
90019                                                                                                                                                                the-struct_0)))))
90020                                                                                                                                                        (raise-argument-error
90021                                                                                                                                                         'struct-copy
90022                                                                                                                                                         "expand-context/inner?"
90023                                                                                                                                                         the-struct_0))))
90024                                                                                                                                                 (expand-context/outer1.1
90025                                                                                                                                                  inner336_0
90026                                                                                                                                                  #f
90027                                                                                                                                                  (root-expand-context/outer-use-site-scopes
90028                                                                                                                                                   v_0)
90029                                                                                                                                                  (root-expand-context/outer-frame-id
90030                                                                                                                                                   v_0)
90031                                                                                                                                                  (expand-context/outer-context
90032                                                                                                                                                   v_0)
90033                                                                                                                                                  (expand-context/outer-env
90034                                                                                                                                                   v_0)
90035                                                                                                                                                  (expand-context/outer-scopes
90036                                                                                                                                                   v_0)
90037                                                                                                                                                  #f
90038                                                                                                                                                  (expand-context/outer-binding-layer
90039                                                                                                                                                   v_0)
90040                                                                                                                                                  (expand-context/outer-reference-records
90041                                                                                                                                                   v_0)
90042                                                                                                                                                  (expand-context/outer-only-immediate?
90043                                                                                                                                                   v_0)
90044                                                                                                                                                  (expand-context/outer-need-eventually-defined
90045                                                                                                                                                   v_0)
90046                                                                                                                                                  (expand-context/outer-current-introduction-scopes
90047                                                                                                                                                   v_0)
90048                                                                                                                                                  (expand-context/outer-current-use-scopes
90049                                                                                                                                                   v_0)
90050                                                                                                                                                  (expand-context/outer-name
90051                                                                                                                                                   v_0))))
90052                                                                                                                                             (raise-argument-error
90053                                                                                                                                              'struct-copy
90054                                                                                                                                              "expand-context/outer?"
90055                                                                                                                                              v_0)))))
90056                                                                                                                                    (let ((compiled-submodules294_0
90057                                                                                                                                           compiled-submodules_0))
90058                                                                                                                                      (finish-expanding-body-expressions.1
90059                                                                                                                                       compiled-submodules294_0
90060                                                                                                                                       body-ctx_0
90061                                                                                                                                       declared-submodule-names_0
90062                                                                                                                                       modules-being-compiled_0
90063                                                                                                                                       mpis-to-reset_0
90064                                                                                                                                       phase_0
90065                                                                                                                                       self_0
90066                                                                                                                                       partially-expanded-bodys_0))))))))))))
90067                                                                                                                   (pass-1-and-2-loop_0
90068                                                                                                                    body270_0
90069                                                                                                                    0
90070                                                                                                                    (stop-at-module*?
90071                                                                                                                     ctx_1)
90072                                                                                                                    initial-lifted-requires_0))))
90073                                                                                                             (begin
90074                                                                                                               (let ((obs_0
90075                                                                                                                      (begin-unsafe
90076                                                                                                                       (expand-context/inner-observer
90077                                                                                                                        (root-expand-context/outer-inner
90078                                                                                                                         ctx_1)))))
90079                                                                                                                 (if obs_0
90080                                                                                                                   (call-expand-observe
90081                                                                                                                    obs_0
90082                                                                                                                    'next-group)
90083                                                                                                                   (void)))
90084                                                                                                               (begin
90085                                                                                                                 (check-defined-by-now
90086                                                                                                                  need-eventually-defined_0
90087                                                                                                                  self_0
90088                                                                                                                  ctx_1
90089                                                                                                                  requires+provides_0)
90090                                                                                                                 (begin
90091                                                                                                                   (let ((obs_0
90092                                                                                                                          (begin-unsafe
90093                                                                                                                           (expand-context/inner-observer
90094                                                                                                                            (root-expand-context/outer-inner
90095                                                                                                                             ctx_1)))))
90096                                                                                                                     (if obs_0
90097                                                                                                                       (call-expand-observe
90098                                                                                                                        obs_0
90099                                                                                                                        'next-group)
90100                                                                                                                       (void)))
90101                                                                                                                   (let ((fully-expanded-bodys-except-post-submodules_0
90102                                                                                                                          (let ((requires+provides343_0
90103                                                                                                                                 requires+provides_0))
90104                                                                                                                            (resolve-provides.1
90105                                                                                                                             ctx_1
90106                                                                                                                             declared-submodule-names_0
90107                                                                                                                             m-ns_0
90108                                                                                                                             0
90109                                                                                                                             requires+provides343_0
90110                                                                                                                             self_0
90111                                                                                                                             expression-expanded-bodys_0))))
90112                                                                                                                     (let ((is-cross-phase-persistent?_0
90113                                                                                                                            (hash-ref
90114                                                                                                                             declared-keywords_0
90115                                                                                                                             kw2208
90116                                                                                                                             #f)))
90117                                                                                                                       (begin
90118                                                                                                                         (if is-cross-phase-persistent?_0
90119                                                                                                                           (begin
90120                                                                                                                             (if (requires+provides-can-cross-phase-persistent?
90121                                                                                                                                  requires+provides_0)
90122                                                                                                                               (void)
90123                                                                                                                               (raise-syntax-error$1
90124                                                                                                                                #f
90125                                                                                                                                "cannot be cross-phase persistent due to required modules"
90126                                                                                                                                rebuild-s_0
90127                                                                                                                                (hash-ref
90128                                                                                                                                 declared-keywords_0
90129                                                                                                                                 kw2208)))
90130                                                                                                                             (check-cross-phase-persistent-form
90131                                                                                                                              fully-expanded-bodys-except-post-submodules_0
90132                                                                                                                              self_0))
90133                                                                                                                           (void))
90134                                                                                                                         (begin
90135                                                                                                                           (let ((obs_0
90136                                                                                                                                  (begin-unsafe
90137                                                                                                                                   (expand-context/inner-observer
90138                                                                                                                                    (root-expand-context/outer-inner
90139                                                                                                                                     ctx_1)))))
90140                                                                                                                             (if obs_0
90141                                                                                                                               (call-expand-observe
90142                                                                                                                                obs_0
90143                                                                                                                                'next-group)
90144                                                                                                                               (void)))
90145                                                                                                                           (let ((submod-m-ns_0
90146                                                                                                                                  (make-m-ns_0
90147                                                                                                                                   #t
90148                                                                                                                                   m-ns_0)))
90149                                                                                                                             (let ((submod-ctx_0
90150                                                                                                                                    (if (expand-context/outer?
90151                                                                                                                                         ctx_1)
90152                                                                                                                                      (let ((the-struct_0
90153                                                                                                                                             (root-expand-context/outer-inner
90154                                                                                                                                              ctx_1)))
90155                                                                                                                                        (let ((inner353_0
90156                                                                                                                                               (if (expand-context/inner?
90157                                                                                                                                                    the-struct_0)
90158                                                                                                                                                 (expand-context/inner2.1
90159                                                                                                                                                  (root-expand-context/inner-self-mpi
90160                                                                                                                                                   the-struct_0)
90161                                                                                                                                                  (root-expand-context/inner-module-scopes
90162                                                                                                                                                   the-struct_0)
90163                                                                                                                                                  (root-expand-context/inner-top-level-bind-scope
90164                                                                                                                                                   the-struct_0)
90165                                                                                                                                                  (root-expand-context/inner-all-scopes-stx
90166                                                                                                                                                   the-struct_0)
90167                                                                                                                                                  (root-expand-context/inner-defined-syms
90168                                                                                                                                                   the-struct_0)
90169                                                                                                                                                  (root-expand-context/inner-counter
90170                                                                                                                                                   the-struct_0)
90171                                                                                                                                                  (root-expand-context/inner-lift-key
90172                                                                                                                                                   the-struct_0)
90173                                                                                                                                                  (expand-context/inner-to-parsed?
90174                                                                                                                                                   the-struct_0)
90175                                                                                                                                                  (expand-context/inner-phase
90176                                                                                                                                                   the-struct_0)
90177                                                                                                                                                  submod-m-ns_0
90178                                                                                                                                                  (expand-context/inner-just-once?
90179                                                                                                                                                   the-struct_0)
90180                                                                                                                                                  (expand-context/inner-module-begin-k
90181                                                                                                                                                   the-struct_0)
90182                                                                                                                                                  (expand-context/inner-allow-unbound?
90183                                                                                                                                                   the-struct_0)
90184                                                                                                                                                  (expand-context/inner-in-local-expand?
90185                                                                                                                                                   the-struct_0)
90186                                                                                                                                                  (|expand-context/inner-keep-#%expression?|
90187                                                                                                                                                   the-struct_0)
90188                                                                                                                                                  (expand-context/inner-stops
90189                                                                                                                                                   the-struct_0)
90190                                                                                                                                                  (expand-context/inner-declared-submodule-names
90191                                                                                                                                                   the-struct_0)
90192                                                                                                                                                  (expand-context/inner-lifts
90193                                                                                                                                                   the-struct_0)
90194                                                                                                                                                  (expand-context/inner-lift-envs
90195                                                                                                                                                   the-struct_0)
90196                                                                                                                                                  (expand-context/inner-module-lifts
90197                                                                                                                                                   the-struct_0)
90198                                                                                                                                                  (expand-context/inner-require-lifts
90199                                                                                                                                                   the-struct_0)
90200                                                                                                                                                  (expand-context/inner-to-module-lifts
90201                                                                                                                                                   the-struct_0)
90202                                                                                                                                                  (expand-context/inner-requires+provides
90203                                                                                                                                                   the-struct_0)
90204                                                                                                                                                  (expand-context/inner-observer
90205                                                                                                                                                   the-struct_0)
90206                                                                                                                                                  (expand-context/inner-for-serializable?
90207                                                                                                                                                   the-struct_0)
90208                                                                                                                                                  (expand-context/inner-to-correlated-linklet?
90209                                                                                                                                                   the-struct_0)
90210                                                                                                                                                  (expand-context/inner-normalize-locals?
90211                                                                                                                                                   the-struct_0)
90212                                                                                                                                                  (expand-context/inner-parsing-expanded?
90213                                                                                                                                                   the-struct_0)
90214                                                                                                                                                  (expand-context/inner-skip-visit-available?
90215                                                                                                                                                   the-struct_0))
90216                                                                                                                                                 (raise-argument-error
90217                                                                                                                                                  'struct-copy
90218                                                                                                                                                  "expand-context/inner?"
90219                                                                                                                                                  the-struct_0))))
90220                                                                                                                                          (expand-context/outer1.1
90221                                                                                                                                           inner353_0
90222                                                                                                                                           #f
90223                                                                                                                                           (root-expand-context/outer-use-site-scopes
90224                                                                                                                                            ctx_1)
90225                                                                                                                                           #f
90226                                                                                                                                           (expand-context/outer-context
90227                                                                                                                                            ctx_1)
90228                                                                                                                                           (expand-context/outer-env
90229                                                                                                                                            ctx_1)
90230                                                                                                                                           (expand-context/outer-scopes
90231                                                                                                                                            ctx_1)
90232                                                                                                                                           (expand-context/outer-def-ctx-scopes
90233                                                                                                                                            ctx_1)
90234                                                                                                                                           (expand-context/outer-binding-layer
90235                                                                                                                                            ctx_1)
90236                                                                                                                                           (expand-context/outer-reference-records
90237                                                                                                                                            ctx_1)
90238                                                                                                                                           (expand-context/outer-only-immediate?
90239                                                                                                                                            ctx_1)
90240                                                                                                                                           (expand-context/outer-need-eventually-defined
90241                                                                                                                                            ctx_1)
90242                                                                                                                                           (expand-context/outer-current-introduction-scopes
90243                                                                                                                                            ctx_1)
90244                                                                                                                                           (expand-context/outer-current-use-scopes
90245                                                                                                                                            ctx_1)
90246                                                                                                                                           (expand-context/outer-name
90247                                                                                                                                            ctx_1))))
90248                                                                                                                                      (raise-argument-error
90249                                                                                                                                       'struct-copy
90250                                                                                                                                       "expand-context/outer?"
90251                                                                                                                                       ctx_1))))
90252                                                                                                                               (let ((declare-enclosing-module_0
90253                                                                                                                                      (promise1.1
90254                                                                                                                                       (lambda ()
90255                                                                                                                                         (let ((requires+provides358_0
90256                                                                                                                                                requires+provides_0))
90257                                                                                                                                           (let ((compiled-module-box365_0
90258                                                                                                                                                  compiled-module-box_0))
90259                                                                                                                                             (let ((requires+provides358_1
90260                                                                                                                                                    requires+provides358_0))
90261                                                                                                                                               (declare-module-for-expansion.1
90262                                                                                                                                                submod-ctx_0
90263                                                                                                                                                enclosing-self15_0
90264                                                                                                                                                compiled-module-box365_0
90265                                                                                                                                                id:module-name201_0
90266                                                                                                                                                modules-being-compiled_0
90267                                                                                                                                                submod-m-ns_0
90268                                                                                                                                                rebuild-s_0
90269                                                                                                                                                requires+provides358_1
90270                                                                                                                                                root-ctx_0
90271                                                                                                                                                self_0
90272                                                                                                                                                fully-expanded-bodys-except-post-submodules_0)))))
90273                                                                                                                                       #f)))
90274                                                                                                                                 (let ((fully-expanded-bodys_0
90275                                                                                                                                        (if (stop-at-module*?
90276                                                                                                                                             submod-ctx_0)
90277                                                                                                                                          fully-expanded-bodys-except-post-submodules_0
90278                                                                                                                                          (let ((requires+provides370_0
90279                                                                                                                                                 requires+provides_0))
90280                                                                                                                                            (let ((compiled-submodules375_0
90281                                                                                                                                                   compiled-submodules_0))
90282                                                                                                                                              (let ((requires+provides370_1
90283                                                                                                                                                     requires+provides370_0))
90284                                                                                                                                                (expand-post-submodules.1
90285                                                                                                                                                 initial-require-s_0
90286                                                                                                                                                 compiled-submodules375_0
90287                                                                                                                                                 submod-ctx_0
90288                                                                                                                                                 declare-enclosing-module_0
90289                                                                                                                                                 declared-submodule-names_0
90290                                                                                                                                                 is-cross-phase-persistent?_0
90291                                                                                                                                                 modules-being-compiled_0
90292                                                                                                                                                 mpis-to-reset_0
90293                                                                                                                                                 0
90294                                                                                                                                                 requires+provides370_1
90295                                                                                                                                                 self_0
90296                                                                                                                                                 fully-expanded-bodys-except-post-submodules_0)))))))
90297                                                                                                                                   (if (begin-unsafe
90298                                                                                                                                        (expand-context/inner-to-parsed?
90299                                                                                                                                         (root-expand-context/outer-inner
90300                                                                                                                                          submod-ctx_0)))
90301                                                                                                                                     (|parsed-#%module-begin24.1|
90302                                                                                                                                      rebuild-mb-s_0
90303                                                                                                                                      (parsed-only
90304                                                                                                                                       fully-expanded-bodys_0))
90305                                                                                                                                     (let ((mb-result-s_0
90306                                                                                                                                            (let ((temp379_0
90307                                                                                                                                                   (list*
90308                                                                                                                                                    |#%module-begin269_0|
90309                                                                                                                                                    (syntax-only
90310                                                                                                                                                     fully-expanded-bodys_0))))
90311                                                                                                                                              (rebuild.1
90312                                                                                                                                               #t
90313                                                                                                                                               rebuild-mb-s_0
90314                                                                                                                                               temp379_0))))
90315                                                                                                                                       (if (not
90316                                                                                                                                            (begin-unsafe
90317                                                                                                                                             (expand-context/inner-in-local-expand?
90318                                                                                                                                              (root-expand-context/outer-inner
90319                                                                                                                                               submod-ctx_0))))
90320                                                                                                                                         (expanded+parsed1.1
90321                                                                                                                                          mb-result-s_0
90322                                                                                                                                          (|parsed-#%module-begin24.1|
90323                                                                                                                                           rebuild-mb-s_0
90324                                                                                                                                           (parsed-only
90325                                                                                                                                            fully-expanded-bodys_0)))
90326                                                                                                                                         mb-result-s_0))))))))))))))))))))))))
90327                                                                                          (args
90328                                                                                           (raise-binding-result-arity-error
90329                                                                                            3
90330                                                                                            args)))))))))))))
90331                                                                         (let ((mb-ctx_0
90332                                                                                (if (expand-context/outer?
90333                                                                                     ctx_0)
90334                                                                                  (let ((the-struct_0
90335                                                                                         (root-expand-context/outer-inner
90336                                                                                          ctx_0)))
90337                                                                                    (let ((inner381_0
90338                                                                                           (if (expand-context/inner?
90339                                                                                                the-struct_0)
90340                                                                                             (let ((require-lifts387_0
90341                                                                                                    (make-require-lift-context
90342                                                                                                     0
90343                                                                                                     (let ((requires+provides390_0
90344                                                                                                            requires+provides_0))
90345                                                                                                       (let ((temp391_0
90346                                                                                                              (make-hasheq)))
90347                                                                                                         (let ((requires+provides390_1
90348                                                                                                                requires+provides390_0))
90349                                                                                                           (make-parse-lifted-require.1
90350                                                                                                            temp391_0
90351                                                                                                            m-ns_0
90352                                                                                                            self_0
90353                                                                                                            requires+provides390_1)))))))
90354                                                                                               (expand-context/inner2.1
90355                                                                                                (root-expand-context/inner-self-mpi
90356                                                                                                 the-struct_0)
90357                                                                                                (root-expand-context/inner-module-scopes
90358                                                                                                 the-struct_0)
90359                                                                                                (root-expand-context/inner-top-level-bind-scope
90360                                                                                                 the-struct_0)
90361                                                                                                (root-expand-context/inner-all-scopes-stx
90362                                                                                                 the-struct_0)
90363                                                                                                (root-expand-context/inner-defined-syms
90364                                                                                                 the-struct_0)
90365                                                                                                (root-expand-context/inner-counter
90366                                                                                                 the-struct_0)
90367                                                                                                (root-expand-context/inner-lift-key
90368                                                                                                 the-struct_0)
90369                                                                                                (expand-context/inner-to-parsed?
90370                                                                                                 the-struct_0)
90371                                                                                                (expand-context/inner-phase
90372                                                                                                 the-struct_0)
90373                                                                                                (expand-context/inner-namespace
90374                                                                                                 the-struct_0)
90375                                                                                                (expand-context/inner-just-once?
90376                                                                                                 the-struct_0)
90377                                                                                                module-begin-k_0
90378                                                                                                (expand-context/inner-allow-unbound?
90379                                                                                                 the-struct_0)
90380                                                                                                #f
90381                                                                                                (|expand-context/inner-keep-#%expression?|
90382                                                                                                 the-struct_0)
90383                                                                                                (expand-context/inner-stops
90384                                                                                                 the-struct_0)
90385                                                                                                (expand-context/inner-declared-submodule-names
90386                                                                                                 the-struct_0)
90387                                                                                                #f
90388                                                                                                (expand-context/inner-lift-envs
90389                                                                                                 the-struct_0)
90390                                                                                                #f
90391                                                                                                require-lifts387_0
90392                                                                                                #f
90393                                                                                                (expand-context/inner-requires+provides
90394                                                                                                 the-struct_0)
90395                                                                                                (expand-context/inner-observer
90396                                                                                                 the-struct_0)
90397                                                                                                (expand-context/inner-for-serializable?
90398                                                                                                 the-struct_0)
90399                                                                                                (expand-context/inner-to-correlated-linklet?
90400                                                                                                 the-struct_0)
90401                                                                                                (expand-context/inner-normalize-locals?
90402                                                                                                 the-struct_0)
90403                                                                                                (expand-context/inner-parsing-expanded?
90404                                                                                                 the-struct_0)
90405                                                                                                (expand-context/inner-skip-visit-available?
90406                                                                                                 the-struct_0)))
90407                                                                                             (raise-argument-error
90408                                                                                              'struct-copy
90409                                                                                              "expand-context/inner?"
90410                                                                                              the-struct_0))))
90411                                                                                      (expand-context/outer1.1
90412                                                                                       inner381_0
90413                                                                                       (root-expand-context/outer-post-expansion
90414                                                                                        ctx_0)
90415                                                                                       (root-expand-context/outer-use-site-scopes
90416                                                                                        ctx_0)
90417                                                                                       (root-expand-context/outer-frame-id
90418                                                                                        ctx_0)
90419                                                                                       'module-begin
90420                                                                                       (expand-context/outer-env
90421                                                                                        ctx_0)
90422                                                                                       (expand-context/outer-scopes
90423                                                                                        ctx_0)
90424                                                                                       (expand-context/outer-def-ctx-scopes
90425                                                                                        ctx_0)
90426                                                                                       (expand-context/outer-binding-layer
90427                                                                                        ctx_0)
90428                                                                                       (expand-context/outer-reference-records
90429                                                                                        ctx_0)
90430                                                                                       (expand-context/outer-only-immediate?
90431                                                                                        ctx_0)
90432                                                                                       (expand-context/outer-need-eventually-defined
90433                                                                                        ctx_0)
90434                                                                                       (expand-context/outer-current-introduction-scopes
90435                                                                                        ctx_0)
90436                                                                                       (expand-context/outer-current-use-scopes
90437                                                                                        ctx_0)
90438                                                                                       (expand-context/outer-name
90439                                                                                        ctx_0))))
90440                                                                                  (raise-argument-error
90441                                                                                   'struct-copy
90442                                                                                   "expand-context/outer?"
90443                                                                                   ctx_0))))
90444                                                                           (let ((mb-scopes-s_0
90445                                                                                  (if keep-enclosing-scope-at-phase2_0
90446                                                                                    (|#%app|
90447                                                                                     apply-module-scopes_0
90448                                                                                     s13_0)
90449                                                                                    initial-require-s_0)))
90450                                                                             (let ((mb-def-ctx-scopes_0
90451                                                                                    (box
90452                                                                                     null)))
90453                                                                               (let ((mb_0
90454                                                                                      (ensure-module-begin.1
90455                                                                                       mb-ctx_0
90456                                                                                       mb-def-ctx-scopes_0
90457                                                                                       m-ns_0
90458                                                                                       module-name-sym_0
90459                                                                                       0
90460                                                                                       s13_0
90461                                                                                       mb-scopes-s_0
90462                                                                                       bodys_0)))
90463                                                                                 (begin
90464                                                                                   (let ((obs_0
90465                                                                                          (begin-unsafe
90466                                                                                           (expand-context/inner-observer
90467                                                                                            (root-expand-context/outer-inner
90468                                                                                             ctx_0)))))
90469                                                                                     (if obs_0
90470                                                                                       (call-expand-observe
90471                                                                                        obs_0
90472                                                                                        'next)
90473                                                                                       (void)))
90474                                                                                   (let ((expanded-mb_0
90475                                                                                          (begin
90476                                                                                            (if log-performance?
90477                                                                                              (start-performance-region
90478                                                                                               'expand
90479                                                                                               'module-begin)
90480                                                                                              (void))
90481                                                                                            (begin0
90482                                                                                              (let ((temp401_0
90483                                                                                                     (let ((v_0
90484                                                                                                            (accumulate-def-ctx-scopes
90485                                                                                                             mb-ctx_0
90486                                                                                                             mb-def-ctx-scopes_0)))
90487                                                                                                       (if (expand-context/outer?
90488                                                                                                            v_0)
90489                                                                                                         (let ((inner403_0
90490                                                                                                                (root-expand-context/outer-inner
90491                                                                                                                 v_0)))
90492                                                                                                           (expand-context/outer1.1
90493                                                                                                            inner403_0
90494                                                                                                            (root-expand-context/outer-post-expansion
90495                                                                                                             v_0)
90496                                                                                                            (root-expand-context/outer-use-site-scopes
90497                                                                                                             v_0)
90498                                                                                                            (root-expand-context/outer-frame-id
90499                                                                                                             v_0)
90500                                                                                                            (expand-context/outer-context
90501                                                                                                             v_0)
90502                                                                                                            (expand-context/outer-env
90503                                                                                                             v_0)
90504                                                                                                            (expand-context/outer-scopes
90505                                                                                                             v_0)
90506                                                                                                            #f
90507                                                                                                            (expand-context/outer-binding-layer
90508                                                                                                             v_0)
90509                                                                                                            (expand-context/outer-reference-records
90510                                                                                                             v_0)
90511                                                                                                            (expand-context/outer-only-immediate?
90512                                                                                                             v_0)
90513                                                                                                            (expand-context/outer-need-eventually-defined
90514                                                                                                             v_0)
90515                                                                                                            (expand-context/outer-current-introduction-scopes
90516                                                                                                             v_0)
90517                                                                                                            (expand-context/outer-current-use-scopes
90518                                                                                                             v_0)
90519                                                                                                            (expand-context/outer-name
90520                                                                                                             v_0)))
90521                                                                                                         (raise-argument-error
90522                                                                                                          'struct-copy
90523                                                                                                          "expand-context/outer?"
90524                                                                                                          v_0)))))
90525                                                                                                (expand.1
90526                                                                                                 #f
90527                                                                                                 #f
90528                                                                                                 mb_0
90529                                                                                                 temp401_0))
90530                                                                                              (if log-performance?
90531                                                                                                (end-performance-region)
90532                                                                                                (void))))))
90533                                                                                     (call-with-values
90534                                                                                      (lambda ()
90535                                                                                        (extract-requires-and-provides
90536                                                                                         requires+provides_0
90537                                                                                         self_0
90538                                                                                         self_0))
90539                                                                                      (case-lambda
90540                                                                                       ((requires_0
90541                                                                                         provides_0)
90542                                                                                        (let ((result-form_0
90543                                                                                               (if (let ((or-part_0
90544                                                                                                          (begin-unsafe
90545                                                                                                           (expand-context/inner-to-parsed?
90546                                                                                                            (root-expand-context/outer-inner
90547                                                                                                             init-ctx14_0)))))
90548                                                                                                     (if or-part_0
90549                                                                                                       or-part_0
90550                                                                                                       always-produce-compiled?1_0))
90551                                                                                                 (let ((app_0
90552                                                                                                        (requires+provides-all-bindings-simple?
90553                                                                                                         requires+provides_0)))
90554                                                                                                   (let ((app_1
90555                                                                                                          (root-expand-context-encode-for-module
90556                                                                                                           root-ctx_0
90557                                                                                                           self_0
90558                                                                                                           self_0)))
90559                                                                                                     (let ((app_2
90560                                                                                                            (|parsed-#%module-begin-body|
90561                                                                                                             (if (expanded+parsed?
90562                                                                                                                  expanded-mb_0)
90563                                                                                                               (expanded+parsed-parsed
90564                                                                                                                expanded-mb_0)
90565                                                                                                               expanded-mb_0))))
90566                                                                                                       (let ((app_3
90567                                                                                                              (unbox
90568                                                                                                               compiled-module-box_0)))
90569                                                                                                         (parsed-module25.1
90570                                                                                                          rebuild-s_0
90571                                                                                                          #f
90572                                                                                                          id:module-name201_0
90573                                                                                                          self_0
90574                                                                                                          requires_0
90575                                                                                                          provides_0
90576                                                                                                          app_0
90577                                                                                                          app_1
90578                                                                                                          app_2
90579                                                                                                          app_3
90580                                                                                                          compiled-submodules_0)))))
90581                                                                                                 #f)))
90582                                                                                          (let ((result-s_0
90583                                                                                                 (if (not
90584                                                                                                      (begin-unsafe
90585                                                                                                       (expand-context/inner-to-parsed?
90586                                                                                                        (root-expand-context/outer-inner
90587                                                                                                         init-ctx14_0))))
90588                                                                                                   (let ((generic-self_0
90589                                                                                                          (make-generic-self-module-path-index
90590                                                                                                           self_0)))
90591                                                                                                     (begin
90592                                                                                                       (imitate-generic-module-path-index!
90593                                                                                                        self_0)
90594                                                                                                       (let ((lst_0
90595                                                                                                              (unbox
90596                                                                                                               mpis-to-reset_0)))
90597                                                                                                         (begin
90598                                                                                                           (letrec*
90599                                                                                                            ((for-loop_0
90600                                                                                                              (|#%name|
90601                                                                                                               for-loop
90602                                                                                                               (lambda (lst_1)
90603                                                                                                                 (begin
90604                                                                                                                   (if (pair?
90605                                                                                                                        lst_1)
90606                                                                                                                     (let ((mpi_0
90607                                                                                                                            (unsafe-car
90608                                                                                                                             lst_1)))
90609                                                                                                                       (let ((rest_0
90610                                                                                                                              (unsafe-cdr
90611                                                                                                                               lst_1)))
90612                                                                                                                         (begin
90613                                                                                                                           (imitate-generic-module-path-index!
90614                                                                                                                            mpi_0)
90615                                                                                                                           (for-loop_0
90616                                                                                                                            rest_0))))
90617                                                                                                                     (values)))))))
90618                                                                                                            (for-loop_0
90619                                                                                                             lst_0))))
90620                                                                                                       (void)
90621                                                                                                       (let ((temp405_0
90622                                                                                                              (list
90623                                                                                                               module200_0
90624                                                                                                               id:module-name201_0
90625                                                                                                               initial-require-s_0
90626                                                                                                               (expanded+parsed-s
90627                                                                                                                expanded-mb_0))))
90628                                                                                                         (let ((result-s_0
90629                                                                                                                (rebuild.1
90630                                                                                                                 #t
90631                                                                                                                 rebuild-s_0
90632                                                                                                                 temp405_0)))
90633                                                                                                           (let ((result-s_1
90634                                                                                                                  (syntax-module-path-index-shift.1
90635                                                                                                                   #f
90636                                                                                                                   result-s_0
90637                                                                                                                   self_0
90638                                                                                                                   generic-self_0
90639                                                                                                                   #f)))
90640                                                                                                             (let ((result-s_2
90641                                                                                                                    (attach-root-expand-context-properties
90642                                                                                                                     result-s_1
90643                                                                                                                     root-ctx_0
90644                                                                                                                     self_0
90645                                                                                                                     generic-self_0)))
90646                                                                                                               (let ((result-s_3
90647                                                                                                                      (if (requires+provides-all-bindings-simple?
90648                                                                                                                           requires+provides_0)
90649                                                                                                                        (syntax-property$1
90650                                                                                                                         result-s_2
90651                                                                                                                         'module-body-context-simple?
90652                                                                                                                         #t)
90653                                                                                                                        result-s_2)))
90654                                                                                                                 (begin
90655                                                                                                                   (let ((obs_0
90656                                                                                                                          (begin-unsafe
90657                                                                                                                           (expand-context/inner-observer
90658                                                                                                                            (root-expand-context/outer-inner
90659                                                                                                                             init-ctx14_0)))))
90660                                                                                                                     (if obs_0
90661                                                                                                                       (call-expand-observe
90662                                                                                                                        obs_0
90663                                                                                                                        'rename-one
90664                                                                                                                        result-s_3)
90665                                                                                                                       (void)))
90666                                                                                                                   result-s_3))))))))
90667                                                                                                   (void))))
90668                                                                                            (if (begin-unsafe
90669                                                                                                 (expand-context/inner-to-parsed?
90670                                                                                                  (root-expand-context/outer-inner
90671                                                                                                   init-ctx14_0)))
90672                                                                                              result-form_0
90673                                                                                              (if always-produce-compiled?1_0
90674                                                                                                (expanded+parsed1.1
90675                                                                                                 result-s_0
90676                                                                                                 result-form_0)
90677                                                                                                result-s_0)))))
90678                                                                                       (args
90679                                                                                        (raise-binding-result-arity-error
90680                                                                                         2
90681                                                                                         args)))))))))))))))))))))))))))))))))))))))))
90682             (args (raise-binding-result-arity-error 5 args))))))))))
90683(define ensure-module-begin.1
90684  (|#%name|
90685   ensure-module-begin
90686   (lambda (ctx20_0
90687            def-ctx-scopes21_0
90688            m-ns19_0
90689            module-name-sym17_0
90690            phase22_0
90691            s23_0
90692            scopes-s18_0
90693            bodys31_0)
90694     (begin
90695       (let ((make-mb-ctx_0
90696              (|#%name|
90697               make-mb-ctx
90698               (lambda ()
90699                 (begin
90700                   (if (expand-context/outer? ctx20_0)
90701                     (let ((inner412_0
90702                            (root-expand-context/outer-inner ctx20_0)))
90703                       (expand-context/outer1.1
90704                        inner412_0
90705                        (root-expand-context/outer-post-expansion ctx20_0)
90706                        (root-expand-context/outer-use-site-scopes ctx20_0)
90707                        (root-expand-context/outer-frame-id ctx20_0)
90708                        'module-begin
90709                        (expand-context/outer-env ctx20_0)
90710                        (expand-context/outer-scopes ctx20_0)
90711                        def-ctx-scopes21_0
90712                        (expand-context/outer-binding-layer ctx20_0)
90713                        (expand-context/outer-reference-records ctx20_0)
90714                        #t
90715                        (expand-context/outer-need-eventually-defined ctx20_0)
90716                        (expand-context/outer-current-introduction-scopes
90717                         ctx20_0)
90718                        (expand-context/outer-current-use-scopes ctx20_0)
90719                        (expand-context/outer-name ctx20_0)))
90720                     (raise-argument-error
90721                      'struct-copy
90722                      "expand-context/outer?"
90723                      ctx20_0)))))))
90724         (let ((mb_0
90725                (if (= 1 (length bodys31_0))
90726                  (if (eq?
90727                       '|#%module-begin|
90728                       (core-form-sym (car bodys31_0) phase22_0))
90729                    (car bodys31_0)
90730                    (let ((named-body-s_0
90731                           (let ((stx_0 (car bodys31_0)))
90732                             (begin-unsafe
90733                              (syntax-property$1
90734                               stx_0
90735                               'enclosing-module-name
90736                               module-name-sym17_0)))))
90737                      (begin
90738                        (let ((obs_0
90739                               (begin-unsafe
90740                                (expand-context/inner-observer
90741                                 (root-expand-context/outer-inner ctx20_0)))))
90742                          (if obs_0
90743                            (call-expand-observe
90744                             obs_0
90745                             'track-syntax
90746                             'property
90747                             named-body-s_0
90748                             (car bodys31_0))
90749                            (void)))
90750                        (let ((partly-expanded-body_0
90751                               (begin
90752                                 (if log-performance?
90753                                   (start-performance-region
90754                                    'expand
90755                                    'module-begin)
90756                                   (void))
90757                                 (begin0
90758                                   (let ((temp414_0 (make-mb-ctx_0)))
90759                                     (expand.1 #f #f named-body-s_0 temp414_0))
90760                                   (if log-performance?
90761                                     (end-performance-region)
90762                                     (void))))))
90763                          (if (eq?
90764                               '|#%module-begin|
90765                               (core-form-sym
90766                                partly-expanded-body_0
90767                                phase22_0))
90768                            partly-expanded-body_0
90769                            (let ((temp415_0 (list partly-expanded-body_0)))
90770                              (let ((temp420_0 (make-mb-ctx_0)))
90771                                (let ((temp415_1 temp415_0))
90772                                  (add-module-begin.1
90773                                   #f
90774                                   temp415_1
90775                                   s23_0
90776                                   scopes-s18_0
90777                                   phase22_0
90778                                   module-name-sym17_0
90779                                   temp420_0)))))))))
90780                  (let ((temp427_0 (make-mb-ctx_0)))
90781                    (add-module-begin.1
90782                     #t
90783                     bodys31_0
90784                     s23_0
90785                     scopes-s18_0
90786                     phase22_0
90787                     module-name-sym17_0
90788                     temp427_0)))))
90789           (let ((named-mb_0
90790                  (begin-unsafe
90791                   (syntax-property$1
90792                    mb_0
90793                    'enclosing-module-name
90794                    module-name-sym17_0))))
90795             (begin
90796               (let ((obs_0
90797                      (begin-unsafe
90798                       (expand-context/inner-observer
90799                        (root-expand-context/outer-inner ctx20_0)))))
90800                 (if obs_0
90801                   (call-expand-observe
90802                    obs_0
90803                    'track-syntax
90804                    'property
90805                    named-mb_0
90806                    mb_0)
90807                   (void)))
90808               named-mb_0))))))))
90809(define add-module-begin.1
90810  (|#%name|
90811   add-module-begin
90812   (lambda (log-rename-one?33_0
90813            bodys35_0
90814            s36_0
90815            scopes-s37_0
90816            phase38_0
90817            module-name-sym39_0
90818            mb-ctx40_0)
90819     (begin
90820       (let ((mb-id_0 (datum->syntax$1 scopes-s37_0 '|#%module-begin|)))
90821         (begin
90822           (if (resolve.1 #f #f null #f mb-id_0 phase38_0)
90823             (void)
90824             (raise-syntax-error$1
90825              #f
90826              "no #%module-begin binding in the module's language"
90827              s36_0))
90828           (let ((mb_0
90829                  (datum->syntax$1
90830                   scopes-s37_0
90831                   (list* mb-id_0 bodys35_0)
90832                   s36_0
90833                   s36_0)))
90834             (begin
90835               (let ((obs_0
90836                      (begin-unsafe
90837                       (expand-context/inner-observer
90838                        (root-expand-context/outer-inner mb-ctx40_0)))))
90839                 (if obs_0 (call-expand-observe obs_0 'tag mb_0) (void)))
90840               (let ((named-mb_0
90841                      (begin-unsafe
90842                       (syntax-property$1
90843                        mb_0
90844                        'enclosing-module-name
90845                        module-name-sym39_0))))
90846                 (begin
90847                   (let ((obs_0
90848                          (begin-unsafe
90849                           (expand-context/inner-observer
90850                            (root-expand-context/outer-inner mb-ctx40_0)))))
90851                     (if obs_0
90852                       (call-expand-observe
90853                        obs_0
90854                        'track-syntax
90855                        'property
90856                        named-mb_0
90857                        mb_0)
90858                       (void)))
90859                   (let ((partly-expanded-mb_0
90860                          (begin
90861                            (if log-performance?
90862                              (start-performance-region 'expand 'module-begin)
90863                              (void))
90864                            (begin0
90865                              (expand.1 #f #f named-mb_0 mb-ctx40_0)
90866                              (if log-performance?
90867                                (end-performance-region)
90868                                (void))))))
90869                     (begin
90870                       (if (eq?
90871                            '|#%module-begin|
90872                            (core-form-sym partly-expanded-mb_0 phase38_0))
90873                         (void)
90874                         (raise-syntax-error$1
90875                          #f
90876                          "expansion of #%module-begin is not a #%plain-module-begin form"
90877                          s36_0
90878                          partly-expanded-mb_0))
90879                       partly-expanded-mb_0))))))))))))
90880(define add-enclosing-name-property
90881  (lambda (stx_0 module-name-sym_0)
90882    (syntax-property$1 stx_0 'enclosing-module-name module-name-sym_0)))
90883(define make-apply-module-scopes
90884  (lambda (inside-scope_0
90885           outside-scope_0
90886           init-ctx_0
90887           keep-enclosing-scope-at-phase_0
90888           self_0
90889           enclosing-self_0
90890           enclosing-mod_0)
90891    (lambda (s_0)
90892      (begin
90893        (if log-performance?
90894          (start-performance-region 'expand 'module 'scopes)
90895          (void))
90896        (begin0
90897          (let ((s-without-enclosing_0
90898                 (if keep-enclosing-scope-at-phase_0
90899                   s_0
90900                   (remove-use-site-scopes
90901                    (remove-scopes
90902                     s_0
90903                     (begin-unsafe
90904                      (root-expand-context/inner-module-scopes
90905                       (root-expand-context/outer-inner init-ctx_0))))
90906                    init-ctx_0))))
90907            (let ((s-with-edges_0
90908                   (add-scope
90909                    (add-scope s-without-enclosing_0 outside-scope_0)
90910                    inside-scope_0)))
90911              (let ((s-with-suitable-enclosing_0
90912                     (if keep-enclosing-scope-at-phase_0
90913                       (syntax-module-path-index-shift.1
90914                        #f
90915                        s-with-edges_0
90916                        enclosing-self_0
90917                        enclosing-mod_0
90918                        #f)
90919                       s-with-edges_0)))
90920                (let ((temp433_0 (make-generic-self-module-path-index self_0)))
90921                  (let ((temp435_0 (current-code-inspector)))
90922                    (let ((temp433_1 temp433_0))
90923                      (syntax-module-path-index-shift.1
90924                       #f
90925                       s-with-suitable-enclosing_0
90926                       temp433_1
90927                       self_0
90928                       temp435_0)))))))
90929          (if log-performance? (end-performance-region) (void)))))))
90930(define partially-expand-bodys.1
90931  (|#%name|
90932   partially-expand-bodys
90933   (lambda (all-scopes-stx49_0
90934            compiled-submodules53_0
90935            ctx43_0
90936            declared-keywords51_0
90937            declared-submodule-names52_0
90938            defined-syms50_0
90939            frame-id46_0
90940            loop56_0
90941            modules-being-compiled54_0
90942            mpis-to-reset55_0
90943            namespace44_0
90944            need-eventually-defined48_0
90945            phase42_0
90946            requires-and-provides47_0
90947            self45_0
90948            bodys72_0)
90949     (begin
90950       (begin
90951         (namespace-visit-available-modules! namespace44_0 phase42_0)
90952         (letrec*
90953          ((loop_0
90954            (|#%name|
90955             loop
90956             (lambda (tail?_0 bodys_0)
90957               (begin
90958                 (if (null? bodys_0)
90959                   (if (if tail?_0 (not (zero? phase42_0)) #f)
90960                     null
90961                     (if tail?_0
90962                       (let ((bodys_1
90963                              (let ((app_0
90964                                     (let ((to-module-lifts_0
90965                                            (begin-unsafe
90966                                             (expand-context/inner-to-module-lifts
90967                                              (root-expand-context/outer-inner
90968                                               ctx43_0)))))
90969                                       (begin-unsafe
90970                                        (box-clear!
90971                                         (to-module-lift-context-ends
90972                                          to-module-lifts_0))))))
90973                                (append
90974                                 app_0
90975                                 (let ((to-module-lifts_0
90976                                        (begin-unsafe
90977                                         (expand-context/inner-to-module-lifts
90978                                          (root-expand-context/outer-inner
90979                                           ctx43_0)))))
90980                                   (begin-unsafe
90981                                    (box-clear!
90982                                     (to-module-lift-context-provides
90983                                      to-module-lifts_0))))))))
90984                         (if (null? bodys_1)
90985                           null
90986                           (let ((added-bodys_0
90987                                  (add-post-expansion-scope bodys_1 ctx43_0)))
90988                             (begin
90989                               (let ((obs_0
90990                                      (begin-unsafe
90991                                       (expand-context/inner-observer
90992                                        (root-expand-context/outer-inner
90993                                         ctx43_0)))))
90994                                 (if obs_0
90995                                   (call-expand-observe
90996                                    obs_0
90997                                    'module-end-lifts
90998                                    added-bodys_0)
90999                                   (void)))
91000                               (loop_0 #t added-bodys_0)))))
91001                       null))
91002                   (let ((rest-bodys_0 (cdr bodys_0)))
91003                     (begin
91004                       (let ((obs_0
91005                              (begin-unsafe
91006                               (expand-context/inner-observer
91007                                (root-expand-context/outer-inner ctx43_0)))))
91008                         (if obs_0 (call-expand-observe obs_0 'next) (void)))
91009                       (let ((exp-body_0
91010                              (begin
91011                                (if log-performance?
91012                                  (start-performance-region
91013                                   'expand
91014                                   'form-in-module/1)
91015                                  (void))
91016                                (begin0
91017                                  (let ((temp439_0 (car bodys_0)))
91018                                    (expand.1 #f #f temp439_0 ctx43_0))
91019                                  (if log-performance?
91020                                    (end-performance-region)
91021                                    (void))))))
91022                         (let ((lifts_0
91023                                (begin-unsafe
91024                                 (expand-context/inner-lifts
91025                                  (root-expand-context/outer-inner ctx43_0)))))
91026                           (let ((lifted-defns_0
91027                                  (begin-unsafe
91028                                   (box-clear! (lift-context-lifts lifts_0)))))
91029                             (let ((require-lifts_0
91030                                    (begin-unsafe
91031                                     (expand-context/inner-require-lifts
91032                                      (root-expand-context/outer-inner
91033                                       ctx43_0)))))
91034                               (let ((lifted-reqs_0
91035                                      (begin-unsafe
91036                                       (box-clear!
91037                                        (require-lift-context-requires
91038                                         require-lifts_0)))))
91039                                 (let ((module-lifts_0
91040                                        (begin-unsafe
91041                                         (expand-context/inner-module-lifts
91042                                          (root-expand-context/outer-inner
91043                                           ctx43_0)))))
91044                                   (let ((lifted-mods_0
91045                                          (begin-unsafe
91046                                           (box-clear!
91047                                            (module-lift-context-lifts
91048                                             module-lifts_0)))))
91049                                     (let ((added-lifted-mods_0
91050                                            (add-post-expansion-scope
91051                                             lifted-mods_0
91052                                             ctx43_0)))
91053                                       (begin
91054                                         (if (if (null? lifted-defns_0)
91055                                               (if (null? lifted-reqs_0)
91056                                                 (null? lifted-mods_0)
91057                                                 #f)
91058                                               #f)
91059                                           (void)
91060                                           (let ((obs_0
91061                                                  (begin-unsafe
91062                                                   (expand-context/inner-observer
91063                                                    (root-expand-context/outer-inner
91064                                                     ctx43_0)))))
91065                                             (if obs_0
91066                                               (call-expand-observe
91067                                                obs_0
91068                                                'module-pass1-lifts
91069                                                (lifted-defns-extract-syntax
91070                                                 lifted-defns_0)
91071                                                lifted-reqs_0
91072                                                added-lifted-mods_0)
91073                                               (void))))
91074                                         (let ((exp-lifted-mods_0
91075                                                (loop_0
91076                                                 #f
91077                                                 added-lifted-mods_0)))
91078                                           (begin
91079                                             (let ((obs_0
91080                                                    (begin-unsafe
91081                                                     (expand-context/inner-observer
91082                                                      (root-expand-context/outer-inner
91083                                                       ctx43_0)))))
91084                                               (if obs_0
91085                                                 (call-expand-observe
91086                                                  obs_0
91087                                                  'module-pass1-case
91088                                                  exp-body_0)
91089                                                 (void)))
91090                                             (let ((finish_0
91091                                                    (|#%name|
91092                                                     finish
91093                                                     (lambda ()
91094                                                       (begin
91095                                                         (let ((tmp_0
91096                                                                (core-form-sym
91097                                                                 exp-body_0
91098                                                                 phase42_0)))
91099                                                           (if (eq?
91100                                                                tmp_0
91101                                                                'begin)
91102                                                             (begin
91103                                                               (let ((obs_0
91104                                                                      (begin-unsafe
91105                                                                       (expand-context/inner-observer
91106                                                                        (root-expand-context/outer-inner
91107                                                                         ctx43_0)))))
91108                                                                 (if obs_0
91109                                                                   (call-expand-observe
91110                                                                    obs_0
91111                                                                    'prim-begin
91112                                                                    exp-body_0)
91113                                                                   (void)))
91114                                                               (call-with-values
91115                                                                (lambda ()
91116                                                                  (call-with-values
91117                                                                   (lambda ()
91118                                                                     (let ((s_0
91119                                                                            (if (syntax?$1
91120                                                                                 exp-body_0)
91121                                                                              (syntax-e$1
91122                                                                               exp-body_0)
91123                                                                              exp-body_0)))
91124                                                                       (if (pair?
91125                                                                            s_0)
91126                                                                         (let ((begin443_0
91127                                                                                (let ((s_1
91128                                                                                       (car
91129                                                                                        s_0)))
91130                                                                                  s_1)))
91131                                                                           (let ((e444_0
91132                                                                                  (let ((s_1
91133                                                                                         (cdr
91134                                                                                          s_0)))
91135                                                                                    (let ((s_2
91136                                                                                           (if (syntax?$1
91137                                                                                                s_1)
91138                                                                                             (syntax-e$1
91139                                                                                              s_1)
91140                                                                                             s_1)))
91141                                                                                      (let ((flat-s_0
91142                                                                                             (to-syntax-list.1
91143                                                                                              s_2)))
91144                                                                                        (if (not
91145                                                                                             flat-s_0)
91146                                                                                          (raise-syntax-error$1
91147                                                                                           #f
91148                                                                                           "bad syntax"
91149                                                                                           exp-body_0)
91150                                                                                          flat-s_0))))))
91151                                                                             (let ((begin443_1
91152                                                                                    begin443_0))
91153                                                                               (values
91154                                                                                begin443_1
91155                                                                                e444_0))))
91156                                                                         (raise-syntax-error$1
91157                                                                          #f
91158                                                                          "bad syntax"
91159                                                                          exp-body_0))))
91160                                                                   (case-lambda
91161                                                                    ((begin441_0
91162                                                                      e442_0)
91163                                                                     (values
91164                                                                      #t
91165                                                                      begin441_0
91166                                                                      e442_0))
91167                                                                    (args
91168                                                                     (raise-binding-result-arity-error
91169                                                                      2
91170                                                                      args)))))
91171                                                                (case-lambda
91172                                                                 ((ok?_0
91173                                                                   begin441_0
91174                                                                   e442_0)
91175                                                                  (let ((track_0
91176                                                                         (|#%name|
91177                                                                          track
91178                                                                          (lambda (e_0)
91179                                                                            (begin
91180                                                                              (syntax-track-origin$1
91181                                                                               e_0
91182                                                                               exp-body_0))))))
91183                                                                    (let ((spliced-bodys_0
91184                                                                           (append
91185                                                                            (map_1346
91186                                                                             track_0
91187                                                                             e442_0)
91188                                                                            rest-bodys_0)))
91189                                                                      (begin
91190                                                                        (let ((obs_0
91191                                                                               (begin-unsafe
91192                                                                                (expand-context/inner-observer
91193                                                                                 (root-expand-context/outer-inner
91194                                                                                  ctx43_0)))))
91195                                                                          (if obs_0
91196                                                                            (call-expand-observe
91197                                                                             obs_0
91198                                                                             'splice
91199                                                                             spliced-bodys_0)
91200                                                                            (void)))
91201                                                                        (loop_0
91202                                                                         tail?_0
91203                                                                         spliced-bodys_0)))))
91204                                                                 (args
91205                                                                  (raise-binding-result-arity-error
91206                                                                   3
91207                                                                   args)))))
91208                                                             (if (eq?
91209                                                                  tmp_0
91210                                                                  'begin-for-syntax)
91211                                                               (begin
91212                                                                 (let ((obs_0
91213                                                                        (begin-unsafe
91214                                                                         (expand-context/inner-observer
91215                                                                          (root-expand-context/outer-inner
91216                                                                           ctx43_0)))))
91217                                                                   (if obs_0
91218                                                                     (call-expand-observe
91219                                                                      obs_0
91220                                                                      'prim-begin-for-syntax
91221                                                                      exp-body_0)
91222                                                                     (void)))
91223                                                                 (call-with-values
91224                                                                  (lambda ()
91225                                                                    (call-with-values
91226                                                                     (lambda ()
91227                                                                       (let ((s_0
91228                                                                              (if (syntax?$1
91229                                                                                   exp-body_0)
91230                                                                                (syntax-e$1
91231                                                                                 exp-body_0)
91232                                                                                exp-body_0)))
91233                                                                         (if (pair?
91234                                                                              s_0)
91235                                                                           (let ((begin-for-syntax447_0
91236                                                                                  (let ((s_1
91237                                                                                         (car
91238                                                                                          s_0)))
91239                                                                                    s_1)))
91240                                                                             (let ((e448_0
91241                                                                                    (let ((s_1
91242                                                                                           (cdr
91243                                                                                            s_0)))
91244                                                                                      (let ((s_2
91245                                                                                             (if (syntax?$1
91246                                                                                                  s_1)
91247                                                                                               (syntax-e$1
91248                                                                                                s_1)
91249                                                                                               s_1)))
91250                                                                                        (let ((flat-s_0
91251                                                                                               (to-syntax-list.1
91252                                                                                                s_2)))
91253                                                                                          (if (not
91254                                                                                               flat-s_0)
91255                                                                                            (raise-syntax-error$1
91256                                                                                             #f
91257                                                                                             "bad syntax"
91258                                                                                             exp-body_0)
91259                                                                                            flat-s_0))))))
91260                                                                               (let ((begin-for-syntax447_1
91261                                                                                      begin-for-syntax447_0))
91262                                                                                 (values
91263                                                                                  begin-for-syntax447_1
91264                                                                                  e448_0))))
91265                                                                           (raise-syntax-error$1
91266                                                                            #f
91267                                                                            "bad syntax"
91268                                                                            exp-body_0))))
91269                                                                     (case-lambda
91270                                                                      ((begin-for-syntax445_0
91271                                                                        e446_0)
91272                                                                       (values
91273                                                                        #t
91274                                                                        begin-for-syntax445_0
91275                                                                        e446_0))
91276                                                                      (args
91277                                                                       (raise-binding-result-arity-error
91278                                                                        2
91279                                                                        args)))))
91280                                                                  (case-lambda
91281                                                                   ((ok?_0
91282                                                                     begin-for-syntax445_0
91283                                                                     e446_0)
91284                                                                    (begin
91285                                                                      (let ((obs_0
91286                                                                             (begin-unsafe
91287                                                                              (expand-context/inner-observer
91288                                                                               (root-expand-context/outer-inner
91289                                                                                ctx43_0)))))
91290                                                                        (if obs_0
91291                                                                          (call-expand-observe
91292                                                                           obs_0
91293                                                                           'prepare-env)
91294                                                                          (void)))
91295                                                                      (let ((ct-m-ns_0
91296                                                                             (namespace->namespace-at-phase
91297                                                                              namespace44_0
91298                                                                              (add1
91299                                                                               phase42_0))))
91300                                                                        (begin
91301                                                                          (prepare-next-phase-namespace
91302                                                                           ctx43_0)
91303                                                                          (begin
91304                                                                            (let ((obs_0
91305                                                                                   (begin-unsafe
91306                                                                                    (expand-context/inner-observer
91307                                                                                     (root-expand-context/outer-inner
91308                                                                                      ctx43_0)))))
91309                                                                              (if obs_0
91310                                                                                (call-expand-observe
91311                                                                                 obs_0
91312                                                                                 'phase-up)
91313                                                                                (void)))
91314                                                                            (let ((nested-bodys_0
91315                                                                                   (|#%app|
91316                                                                                    loop56_0
91317                                                                                    e446_0
91318                                                                                    (add1
91319                                                                                     phase42_0)
91320                                                                                    #f
91321                                                                                    null)))
91322                                                                              (begin
91323                                                                                (let ((obs_0
91324                                                                                       (begin-unsafe
91325                                                                                        (expand-context/inner-observer
91326                                                                                         (root-expand-context/outer-inner
91327                                                                                          ctx43_0)))))
91328                                                                                  (if obs_0
91329                                                                                    (call-expand-observe
91330                                                                                     obs_0
91331                                                                                     'next-group)
91332                                                                                    (void)))
91333                                                                                (namespace-run-available-modules!
91334                                                                                 namespace44_0
91335                                                                                 (add1
91336                                                                                  phase42_0))
91337                                                                                (eval-nested-bodys
91338                                                                                 nested-bodys_0
91339                                                                                 (add1
91340                                                                                  phase42_0)
91341                                                                                 ct-m-ns_0
91342                                                                                 self45_0
91343                                                                                 ctx43_0)
91344                                                                                (namespace-visit-available-modules!
91345                                                                                 namespace44_0
91346                                                                                 phase42_0)
91347                                                                                (let ((obs_0
91348                                                                                       (begin-unsafe
91349                                                                                        (expand-context/inner-observer
91350                                                                                         (root-expand-context/outer-inner
91351                                                                                          ctx43_0)))))
91352                                                                                  (if obs_0
91353                                                                                    (call-expand-observe
91354                                                                                     obs_0
91355                                                                                     'exit-case
91356                                                                                     (let ((s-nested-bodys_0
91357                                                                                            (reverse$1
91358                                                                                             (begin
91359                                                                                               (letrec*
91360                                                                                                ((for-loop_0
91361                                                                                                  (|#%name|
91362                                                                                                   for-loop
91363                                                                                                   (lambda (fold-var_0
91364                                                                                                            lst_0)
91365                                                                                                     (begin
91366                                                                                                       (if (pair?
91367                                                                                                            lst_0)
91368                                                                                                         (let ((nested-body_0
91369                                                                                                                (unsafe-car
91370                                                                                                                 lst_0)))
91371                                                                                                           (let ((rest_0
91372                                                                                                                  (unsafe-cdr
91373                                                                                                                   lst_0)))
91374                                                                                                             (let ((fold-var_1
91375                                                                                                                    (let ((fold-var_1
91376                                                                                                                           (cons
91377                                                                                                                            (extract-syntax
91378                                                                                                                             nested-body_0)
91379                                                                                                                            fold-var_0)))
91380                                                                                                                      (values
91381                                                                                                                       fold-var_1))))
91382                                                                                                               (for-loop_0
91383                                                                                                                fold-var_1
91384                                                                                                                rest_0))))
91385                                                                                                         fold-var_0))))))
91386                                                                                                (for-loop_0
91387                                                                                                 null
91388                                                                                                 nested-bodys_0))))))
91389                                                                                       (cons
91390                                                                                        begin-for-syntax445_0
91391                                                                                        s-nested-bodys_0)))
91392                                                                                    (void)))
91393                                                                                (let ((app_0
91394                                                                                       (semi-parsed-begin-for-syntax3.1
91395                                                                                        exp-body_0
91396                                                                                        nested-bodys_0)))
91397                                                                                  (cons
91398                                                                                   app_0
91399                                                                                   (loop_0
91400                                                                                    tail?_0
91401                                                                                    rest-bodys_0))))))))))
91402                                                                   (args
91403                                                                    (raise-binding-result-arity-error
91404                                                                     3
91405                                                                     args)))))
91406                                                               (if (eq?
91407                                                                    tmp_0
91408                                                                    'define-values)
91409                                                                 (begin
91410                                                                   (let ((obs_0
91411                                                                          (begin-unsafe
91412                                                                           (expand-context/inner-observer
91413                                                                            (root-expand-context/outer-inner
91414                                                                             ctx43_0)))))
91415                                                                     (if obs_0
91416                                                                       (call-expand-observe
91417                                                                        obs_0
91418                                                                        'prim-define-values
91419                                                                        exp-body_0)
91420                                                                       (void)))
91421                                                                   (call-with-values
91422                                                                    (lambda ()
91423                                                                      (call-with-values
91424                                                                       (lambda ()
91425                                                                         (let ((s_0
91426                                                                                (if (syntax?$1
91427                                                                                     exp-body_0)
91428                                                                                  (syntax-e$1
91429                                                                                   exp-body_0)
91430                                                                                  exp-body_0)))
91431                                                                           (if (pair?
91432                                                                                s_0)
91433                                                                             (let ((define-values452_0
91434                                                                                    (let ((s_1
91435                                                                                           (car
91436                                                                                            s_0)))
91437                                                                                      s_1)))
91438                                                                               (call-with-values
91439                                                                                (lambda ()
91440                                                                                  (let ((s_1
91441                                                                                         (cdr
91442                                                                                          s_0)))
91443                                                                                    (let ((s_2
91444                                                                                           (if (syntax?$1
91445                                                                                                s_1)
91446                                                                                             (syntax-e$1
91447                                                                                              s_1)
91448                                                                                             s_1)))
91449                                                                                      (if (pair?
91450                                                                                           s_2)
91451                                                                                        (let ((id455_0
91452                                                                                               (let ((s_3
91453                                                                                                      (car
91454                                                                                                       s_2)))
91455                                                                                                 (let ((s_4
91456                                                                                                        (if (syntax?$1
91457                                                                                                             s_3)
91458                                                                                                          (syntax-e$1
91459                                                                                                           s_3)
91460                                                                                                          s_3)))
91461                                                                                                   (let ((flat-s_0
91462                                                                                                          (to-syntax-list.1
91463                                                                                                           s_4)))
91464                                                                                                     (if (not
91465                                                                                                          flat-s_0)
91466                                                                                                       (raise-syntax-error$1
91467                                                                                                        #f
91468                                                                                                        "bad syntax"
91469                                                                                                        exp-body_0)
91470                                                                                                       (let ((id_0
91471                                                                                                              (begin
91472                                                                                                                (letrec*
91473                                                                                                                 ((for-loop_0
91474                                                                                                                   (|#%name|
91475                                                                                                                    for-loop
91476                                                                                                                    (lambda (id_0
91477                                                                                                                             lst_0)
91478                                                                                                                      (begin
91479                                                                                                                        (if (pair?
91480                                                                                                                             lst_0)
91481                                                                                                                          (let ((s_5
91482                                                                                                                                 (unsafe-car
91483                                                                                                                                  lst_0)))
91484                                                                                                                            (let ((rest_0
91485                                                                                                                                   (unsafe-cdr
91486                                                                                                                                    lst_0)))
91487                                                                                                                              (let ((id_1
91488                                                                                                                                     (let ((id_1
91489                                                                                                                                            (let ((id468_0
91490                                                                                                                                                   (if (let ((or-part_0
91491                                                                                                                                                              (if (syntax?$1
91492                                                                                                                                                                   s_5)
91493                                                                                                                                                                (symbol?
91494                                                                                                                                                                 (syntax-e$1
91495                                                                                                                                                                  s_5))
91496                                                                                                                                                                #f)))
91497                                                                                                                                                         (if or-part_0
91498                                                                                                                                                           or-part_0
91499                                                                                                                                                           (symbol?
91500                                                                                                                                                            s_5)))
91501                                                                                                                                                     s_5
91502                                                                                                                                                     (raise-syntax-error$1
91503                                                                                                                                                      #f
91504                                                                                                                                                      "not an identifier"
91505                                                                                                                                                      exp-body_0
91506                                                                                                                                                      s_5))))
91507                                                                                                                                              (cons
91508                                                                                                                                               id468_0
91509                                                                                                                                               id_0))))
91510                                                                                                                                       (values
91511                                                                                                                                        id_1))))
91512                                                                                                                                (for-loop_0
91513                                                                                                                                 id_1
91514                                                                                                                                 rest_0))))
91515                                                                                                                          id_0))))))
91516                                                                                                                 (for-loop_0
91517                                                                                                                  null
91518                                                                                                                  flat-s_0)))))
91519                                                                                                         (reverse$1
91520                                                                                                          id_0))))))))
91521                                                                                          (let ((rhs456_0
91522                                                                                                 (let ((s_3
91523                                                                                                        (cdr
91524                                                                                                         s_2)))
91525                                                                                                   (let ((s_4
91526                                                                                                          (if (syntax?$1
91527                                                                                                               s_3)
91528                                                                                                            (syntax-e$1
91529                                                                                                             s_3)
91530                                                                                                            s_3)))
91531                                                                                                     (if (pair?
91532                                                                                                          s_4)
91533                                                                                                       (let ((rhs457_0
91534                                                                                                              (let ((s_5
91535                                                                                                                     (car
91536                                                                                                                      s_4)))
91537                                                                                                                s_5)))
91538                                                                                                         (call-with-values
91539                                                                                                          (lambda ()
91540                                                                                                            (let ((s_5
91541                                                                                                                   (cdr
91542                                                                                                                    s_4)))
91543                                                                                                              (let ((s_6
91544                                                                                                                     (if (syntax?$1
91545                                                                                                                          s_5)
91546                                                                                                                       (syntax-e$1
91547                                                                                                                        s_5)
91548                                                                                                                       s_5)))
91549                                                                                                                (if (null?
91550                                                                                                                     s_6)
91551                                                                                                                  (values)
91552                                                                                                                  (raise-syntax-error$1
91553                                                                                                                   #f
91554                                                                                                                   "bad syntax"
91555                                                                                                                   exp-body_0)))))
91556                                                                                                          (case-lambda
91557                                                                                                           (()
91558                                                                                                            (let ((rhs457_1
91559                                                                                                                   rhs457_0))
91560                                                                                                              (values
91561                                                                                                               rhs457_1)))
91562                                                                                                           (args
91563                                                                                                            (raise-binding-result-arity-error
91564                                                                                                             0
91565                                                                                                             args)))))
91566                                                                                                       (raise-syntax-error$1
91567                                                                                                        #f
91568                                                                                                        "bad syntax"
91569                                                                                                        exp-body_0))))))
91570                                                                                            (let ((id455_1
91571                                                                                                   id455_0))
91572                                                                                              (values
91573                                                                                               id455_1
91574                                                                                               rhs456_0))))
91575                                                                                        (raise-syntax-error$1
91576                                                                                         #f
91577                                                                                         "bad syntax"
91578                                                                                         exp-body_0)))))
91579                                                                                (case-lambda
91580                                                                                 ((id453_0
91581                                                                                   rhs454_0)
91582                                                                                  (let ((define-values452_1
91583                                                                                         define-values452_0))
91584                                                                                    (values
91585                                                                                     define-values452_1
91586                                                                                     id453_0
91587                                                                                     rhs454_0)))
91588                                                                                 (args
91589                                                                                  (raise-binding-result-arity-error
91590                                                                                   2
91591                                                                                   args)))))
91592                                                                             (raise-syntax-error$1
91593                                                                              #f
91594                                                                              "bad syntax"
91595                                                                              exp-body_0))))
91596                                                                       (case-lambda
91597                                                                        ((define-values449_0
91598                                                                          id450_0
91599                                                                          rhs451_0)
91600                                                                         (values
91601                                                                          #t
91602                                                                          define-values449_0
91603                                                                          id450_0
91604                                                                          rhs451_0))
91605                                                                        (args
91606                                                                         (raise-binding-result-arity-error
91607                                                                          3
91608                                                                          args)))))
91609                                                                    (case-lambda
91610                                                                     ((ok?_0
91611                                                                       define-values449_0
91612                                                                       id450_0
91613                                                                       rhs451_0)
91614                                                                      (let ((ids_0
91615                                                                             (remove-use-site-scopes
91616                                                                              id450_0
91617                                                                              ctx43_0)))
91618                                                                        (begin
91619                                                                          (check-no-duplicate-ids.1
91620                                                                           unsafe-undefined
91621                                                                           ids_0
91622                                                                           phase42_0
91623                                                                           exp-body_0
91624                                                                           unsafe-undefined)
91625                                                                          (begin
91626                                                                            (check-ids-unbound.1
91627                                                                             exp-body_0
91628                                                                             ids_0
91629                                                                             phase42_0
91630                                                                             requires-and-provides47_0)
91631                                                                            (let ((syms_0
91632                                                                                   (select-defined-syms-and-bind!.1
91633                                                                                    #f
91634                                                                                    frame-id46_0
91635                                                                                    exp-body_0
91636                                                                                    requires-and-provides47_0
91637                                                                                    #f
91638                                                                                    ids_0
91639                                                                                    defined-syms50_0
91640                                                                                    self45_0
91641                                                                                    phase42_0
91642                                                                                    all-scopes-stx49_0)))
91643                                                                              (begin
91644                                                                                (begin
91645                                                                                  (letrec*
91646                                                                                   ((for-loop_0
91647                                                                                     (|#%name|
91648                                                                                      for-loop
91649                                                                                      (lambda (lst_0)
91650                                                                                        (begin
91651                                                                                          (if (pair?
91652                                                                                               lst_0)
91653                                                                                            (let ((sym_0
91654                                                                                                   (unsafe-car
91655                                                                                                    lst_0)))
91656                                                                                              (let ((rest_0
91657                                                                                                     (unsafe-cdr
91658                                                                                                      lst_0)))
91659                                                                                                (begin
91660                                                                                                  (namespace-unset-transformer!
91661                                                                                                   namespace44_0
91662                                                                                                   phase42_0
91663                                                                                                   sym_0)
91664                                                                                                  (for-loop_0
91665                                                                                                   rest_0))))
91666                                                                                            (values)))))))
91667                                                                                   (for-loop_0
91668                                                                                    syms_0)))
91669                                                                                (void)
91670                                                                                (add-defined-syms!.1
91671                                                                                 #f
91672                                                                                 requires-and-provides47_0
91673                                                                                 syms_0
91674                                                                                 phase42_0)
91675                                                                                (let ((obs_0
91676                                                                                       (begin-unsafe
91677                                                                                        (expand-context/inner-observer
91678                                                                                         (root-expand-context/outer-inner
91679                                                                                          ctx43_0)))))
91680                                                                                  (if obs_0
91681                                                                                    (call-expand-observe
91682                                                                                     obs_0
91683                                                                                     'exit-case
91684                                                                                     (list
91685                                                                                      define-values449_0
91686                                                                                      ids_0
91687                                                                                      rhs451_0))
91688                                                                                    (void)))
91689                                                                                (let ((app_0
91690                                                                                       (semi-parsed-define-values2.1
91691                                                                                        exp-body_0
91692                                                                                        syms_0
91693                                                                                        ids_0
91694                                                                                        rhs451_0)))
91695                                                                                  (cons
91696                                                                                   app_0
91697                                                                                   (loop_0
91698                                                                                    tail?_0
91699                                                                                    rest-bodys_0)))))))))
91700                                                                     (args
91701                                                                      (raise-binding-result-arity-error
91702                                                                       4
91703                                                                       args)))))
91704                                                                 (if (eq?
91705                                                                      tmp_0
91706                                                                      'define-syntaxes)
91707                                                                   (begin
91708                                                                     (let ((obs_0
91709                                                                            (begin-unsafe
91710                                                                             (expand-context/inner-observer
91711                                                                              (root-expand-context/outer-inner
91712                                                                               ctx43_0)))))
91713                                                                       (if obs_0
91714                                                                         (call-expand-observe
91715                                                                          obs_0
91716                                                                          'prim-define-syntaxes
91717                                                                          exp-body_0)
91718                                                                         (void)))
91719                                                                     (call-with-values
91720                                                                      (lambda ()
91721                                                                        (call-with-values
91722                                                                         (lambda ()
91723                                                                           (let ((s_0
91724                                                                                  (if (syntax?$1
91725                                                                                       exp-body_0)
91726                                                                                    (syntax-e$1
91727                                                                                     exp-body_0)
91728                                                                                    exp-body_0)))
91729                                                                             (if (pair?
91730                                                                                  s_0)
91731                                                                               (let ((define-syntaxes480_0
91732                                                                                      (let ((s_1
91733                                                                                             (car
91734                                                                                              s_0)))
91735                                                                                        s_1)))
91736                                                                                 (call-with-values
91737                                                                                  (lambda ()
91738                                                                                    (let ((s_1
91739                                                                                           (cdr
91740                                                                                            s_0)))
91741                                                                                      (let ((s_2
91742                                                                                             (if (syntax?$1
91743                                                                                                  s_1)
91744                                                                                               (syntax-e$1
91745                                                                                                s_1)
91746                                                                                               s_1)))
91747                                                                                        (if (pair?
91748                                                                                             s_2)
91749                                                                                          (let ((id483_0
91750                                                                                                 (let ((s_3
91751                                                                                                        (car
91752                                                                                                         s_2)))
91753                                                                                                   (let ((s_4
91754                                                                                                          (if (syntax?$1
91755                                                                                                               s_3)
91756                                                                                                            (syntax-e$1
91757                                                                                                             s_3)
91758                                                                                                            s_3)))
91759                                                                                                     (let ((flat-s_0
91760                                                                                                            (to-syntax-list.1
91761                                                                                                             s_4)))
91762                                                                                                       (if (not
91763                                                                                                            flat-s_0)
91764                                                                                                         (raise-syntax-error$1
91765                                                                                                          #f
91766                                                                                                          "bad syntax"
91767                                                                                                          exp-body_0)
91768                                                                                                         (let ((id_0
91769                                                                                                                (begin
91770                                                                                                                  (letrec*
91771                                                                                                                   ((for-loop_0
91772                                                                                                                     (|#%name|
91773                                                                                                                      for-loop
91774                                                                                                                      (lambda (id_0
91775                                                                                                                               lst_0)
91776                                                                                                                        (begin
91777                                                                                                                          (if (pair?
91778                                                                                                                               lst_0)
91779                                                                                                                            (let ((s_5
91780                                                                                                                                   (unsafe-car
91781                                                                                                                                    lst_0)))
91782                                                                                                                              (let ((rest_0
91783                                                                                                                                     (unsafe-cdr
91784                                                                                                                                      lst_0)))
91785                                                                                                                                (let ((id_1
91786                                                                                                                                       (let ((id_1
91787                                                                                                                                              (let ((id497_0
91788                                                                                                                                                     (if (let ((or-part_0
91789                                                                                                                                                                (if (syntax?$1
91790                                                                                                                                                                     s_5)
91791                                                                                                                                                                  (symbol?
91792                                                                                                                                                                   (syntax-e$1
91793                                                                                                                                                                    s_5))
91794                                                                                                                                                                  #f)))
91795                                                                                                                                                           (if or-part_0
91796                                                                                                                                                             or-part_0
91797                                                                                                                                                             (symbol?
91798                                                                                                                                                              s_5)))
91799                                                                                                                                                       s_5
91800                                                                                                                                                       (raise-syntax-error$1
91801                                                                                                                                                        #f
91802                                                                                                                                                        "not an identifier"
91803                                                                                                                                                        exp-body_0
91804                                                                                                                                                        s_5))))
91805                                                                                                                                                (cons
91806                                                                                                                                                 id497_0
91807                                                                                                                                                 id_0))))
91808                                                                                                                                         (values
91809                                                                                                                                          id_1))))
91810                                                                                                                                  (for-loop_0
91811                                                                                                                                   id_1
91812                                                                                                                                   rest_0))))
91813                                                                                                                            id_0))))))
91814                                                                                                                   (for-loop_0
91815                                                                                                                    null
91816                                                                                                                    flat-s_0)))))
91817                                                                                                           (reverse$1
91818                                                                                                            id_0))))))))
91819                                                                                            (let ((rhs484_0
91820                                                                                                   (let ((s_3
91821                                                                                                          (cdr
91822                                                                                                           s_2)))
91823                                                                                                     (let ((s_4
91824                                                                                                            (if (syntax?$1
91825                                                                                                                 s_3)
91826                                                                                                              (syntax-e$1
91827                                                                                                               s_3)
91828                                                                                                              s_3)))
91829                                                                                                       (if (pair?
91830                                                                                                            s_4)
91831                                                                                                         (let ((rhs485_0
91832                                                                                                                (let ((s_5
91833                                                                                                                       (car
91834                                                                                                                        s_4)))
91835                                                                                                                  s_5)))
91836                                                                                                           (call-with-values
91837                                                                                                            (lambda ()
91838                                                                                                              (let ((s_5
91839                                                                                                                     (cdr
91840                                                                                                                      s_4)))
91841                                                                                                                (let ((s_6
91842                                                                                                                       (if (syntax?$1
91843                                                                                                                            s_5)
91844                                                                                                                         (syntax-e$1
91845                                                                                                                          s_5)
91846                                                                                                                         s_5)))
91847                                                                                                                  (if (null?
91848                                                                                                                       s_6)
91849                                                                                                                    (values)
91850                                                                                                                    (raise-syntax-error$1
91851                                                                                                                     #f
91852                                                                                                                     "bad syntax"
91853                                                                                                                     exp-body_0)))))
91854                                                                                                            (case-lambda
91855                                                                                                             (()
91856                                                                                                              (let ((rhs485_1
91857                                                                                                                     rhs485_0))
91858                                                                                                                (values
91859                                                                                                                 rhs485_1)))
91860                                                                                                             (args
91861                                                                                                              (raise-binding-result-arity-error
91862                                                                                                               0
91863                                                                                                               args)))))
91864                                                                                                         (raise-syntax-error$1
91865                                                                                                          #f
91866                                                                                                          "bad syntax"
91867                                                                                                          exp-body_0))))))
91868                                                                                              (let ((id483_1
91869                                                                                                     id483_0))
91870                                                                                                (values
91871                                                                                                 id483_1
91872                                                                                                 rhs484_0))))
91873                                                                                          (raise-syntax-error$1
91874                                                                                           #f
91875                                                                                           "bad syntax"
91876                                                                                           exp-body_0)))))
91877                                                                                  (case-lambda
91878                                                                                   ((id481_0
91879                                                                                     rhs482_0)
91880                                                                                    (let ((define-syntaxes480_1
91881                                                                                           define-syntaxes480_0))
91882                                                                                      (values
91883                                                                                       define-syntaxes480_1
91884                                                                                       id481_0
91885                                                                                       rhs482_0)))
91886                                                                                   (args
91887                                                                                    (raise-binding-result-arity-error
91888                                                                                     2
91889                                                                                     args)))))
91890                                                                               (raise-syntax-error$1
91891                                                                                #f
91892                                                                                "bad syntax"
91893                                                                                exp-body_0))))
91894                                                                         (case-lambda
91895                                                                          ((define-syntaxes477_0
91896                                                                            id478_0
91897                                                                            rhs479_0)
91898                                                                           (values
91899                                                                            #t
91900                                                                            define-syntaxes477_0
91901                                                                            id478_0
91902                                                                            rhs479_0))
91903                                                                          (args
91904                                                                           (raise-binding-result-arity-error
91905                                                                            3
91906                                                                            args)))))
91907                                                                      (case-lambda
91908                                                                       ((ok?_0
91909                                                                         define-syntaxes477_0
91910                                                                         id478_0
91911                                                                         rhs479_0)
91912                                                                        (begin
91913                                                                          (let ((obs_0
91914                                                                                 (begin-unsafe
91915                                                                                  (expand-context/inner-observer
91916                                                                                   (root-expand-context/outer-inner
91917                                                                                    ctx43_0)))))
91918                                                                            (if obs_0
91919                                                                              (call-expand-observe
91920                                                                               obs_0
91921                                                                               'prepare-env)
91922                                                                              (void)))
91923                                                                          (begin
91924                                                                            (prepare-next-phase-namespace
91925                                                                             ctx43_0)
91926                                                                            (begin
91927                                                                              (let ((obs_0
91928                                                                                     (begin-unsafe
91929                                                                                      (expand-context/inner-observer
91930                                                                                       (root-expand-context/outer-inner
91931                                                                                        ctx43_0)))))
91932                                                                                (if obs_0
91933                                                                                  (call-expand-observe
91934                                                                                   obs_0
91935                                                                                   'phase-up)
91936                                                                                  (void)))
91937                                                                              (let ((ids_0
91938                                                                                     (remove-use-site-scopes
91939                                                                                      id478_0
91940                                                                                      ctx43_0)))
91941                                                                                (begin
91942                                                                                  (check-no-duplicate-ids.1
91943                                                                                   unsafe-undefined
91944                                                                                   ids_0
91945                                                                                   phase42_0
91946                                                                                   exp-body_0
91947                                                                                   unsafe-undefined)
91948                                                                                  (begin
91949                                                                                    (check-ids-unbound.1
91950                                                                                     exp-body_0
91951                                                                                     ids_0
91952                                                                                     phase42_0
91953                                                                                     requires-and-provides47_0)
91954                                                                                    (let ((syms_0
91955                                                                                           (select-defined-syms-and-bind!.1
91956                                                                                            #t
91957                                                                                            frame-id46_0
91958                                                                                            exp-body_0
91959                                                                                            requires-and-provides47_0
91960                                                                                            #f
91961                                                                                            ids_0
91962                                                                                            defined-syms50_0
91963                                                                                            self45_0
91964                                                                                            phase42_0
91965                                                                                            all-scopes-stx49_0)))
91966                                                                                      (begin
91967                                                                                        (add-defined-syms!.1
91968                                                                                         #t
91969                                                                                         requires-and-provides47_0
91970                                                                                         syms_0
91971                                                                                         phase42_0)
91972                                                                                        (let ((install-values_0
91973                                                                                               (|#%name|
91974                                                                                                install-values
91975                                                                                                (lambda (vals_0)
91976                                                                                                  (begin
91977                                                                                                    (begin
91978                                                                                                      (begin
91979                                                                                                        (letrec*
91980                                                                                                         ((for-loop_0
91981                                                                                                           (|#%name|
91982                                                                                                            for-loop
91983                                                                                                            (lambda (lst_0
91984                                                                                                                     lst_1
91985                                                                                                                     lst_2)
91986                                                                                                              (begin
91987                                                                                                                (if (if (pair?
91988                                                                                                                         lst_0)
91989                                                                                                                      (if (pair?
91990                                                                                                                           lst_1)
91991                                                                                                                        (pair?
91992                                                                                                                         lst_2)
91993                                                                                                                        #f)
91994                                                                                                                      #f)
91995                                                                                                                  (let ((sym_0
91996                                                                                                                         (unsafe-car
91997                                                                                                                          lst_0)))
91998                                                                                                                    (let ((rest_0
91999                                                                                                                           (unsafe-cdr
92000                                                                                                                            lst_0)))
92001                                                                                                                      (let ((val_0
92002                                                                                                                             (unsafe-car
92003                                                                                                                              lst_1)))
92004                                                                                                                        (let ((rest_1
92005                                                                                                                               (unsafe-cdr
92006                                                                                                                                lst_1)))
92007                                                                                                                          (let ((id_0
92008                                                                                                                                 (unsafe-car
92009                                                                                                                                  lst_2)))
92010                                                                                                                            (let ((rest_2
92011                                                                                                                                   (unsafe-cdr
92012                                                                                                                                    lst_2)))
92013                                                                                                                              (begin
92014                                                                                                                                (begin
92015                                                                                                                                  (maybe-install-free=id-in-context!
92016                                                                                                                                   val_0
92017                                                                                                                                   id_0
92018                                                                                                                                   phase42_0
92019                                                                                                                                   ctx43_0)
92020                                                                                                                                  (namespace-set-transformer!
92021                                                                                                                                   namespace44_0
92022                                                                                                                                   phase42_0
92023                                                                                                                                   sym_0
92024                                                                                                                                   val_0))
92025                                                                                                                                (for-loop_0
92026                                                                                                                                 rest_0
92027                                                                                                                                 rest_1
92028                                                                                                                                 rest_2))))))))
92029                                                                                                                  (values)))))))
92030                                                                                                         (for-loop_0
92031                                                                                                          syms_0
92032                                                                                                          vals_0
92033                                                                                                          ids_0)))
92034                                                                                                      (void)))))))
92035                                                                                          (call-with-values
92036                                                                                           (lambda ()
92037                                                                                             (let ((temp510_0
92038                                                                                                    (if (expand-context/outer?
92039                                                                                                         ctx43_0)
92040                                                                                                      (let ((the-struct_0
92041                                                                                                             (root-expand-context/outer-inner
92042                                                                                                              ctx43_0)))
92043                                                                                                        (let ((inner514_0
92044                                                                                                               (if (expand-context/inner?
92045                                                                                                                    the-struct_0)
92046                                                                                                                 (expand-context/inner2.1
92047                                                                                                                  (root-expand-context/inner-self-mpi
92048                                                                                                                   the-struct_0)
92049                                                                                                                  (root-expand-context/inner-module-scopes
92050                                                                                                                   the-struct_0)
92051                                                                                                                  (root-expand-context/inner-top-level-bind-scope
92052                                                                                                                   the-struct_0)
92053                                                                                                                  (root-expand-context/inner-all-scopes-stx
92054                                                                                                                   the-struct_0)
92055                                                                                                                  (root-expand-context/inner-defined-syms
92056                                                                                                                   the-struct_0)
92057                                                                                                                  (root-expand-context/inner-counter
92058                                                                                                                   the-struct_0)
92059                                                                                                                  (root-expand-context/inner-lift-key
92060                                                                                                                   the-struct_0)
92061                                                                                                                  (expand-context/inner-to-parsed?
92062                                                                                                                   the-struct_0)
92063                                                                                                                  (expand-context/inner-phase
92064                                                                                                                   the-struct_0)
92065                                                                                                                  (expand-context/inner-namespace
92066                                                                                                                   the-struct_0)
92067                                                                                                                  (expand-context/inner-just-once?
92068                                                                                                                   the-struct_0)
92069                                                                                                                  (expand-context/inner-module-begin-k
92070                                                                                                                   the-struct_0)
92071                                                                                                                  (expand-context/inner-allow-unbound?
92072                                                                                                                   the-struct_0)
92073                                                                                                                  (expand-context/inner-in-local-expand?
92074                                                                                                                   the-struct_0)
92075                                                                                                                  (|expand-context/inner-keep-#%expression?|
92076                                                                                                                   the-struct_0)
92077                                                                                                                  (expand-context/inner-stops
92078                                                                                                                   the-struct_0)
92079                                                                                                                  (expand-context/inner-declared-submodule-names
92080                                                                                                                   the-struct_0)
92081                                                                                                                  #f
92082                                                                                                                  (expand-context/inner-lift-envs
92083                                                                                                                   the-struct_0)
92084                                                                                                                  #f
92085                                                                                                                  (expand-context/inner-require-lifts
92086                                                                                                                   the-struct_0)
92087                                                                                                                  #f
92088                                                                                                                  (expand-context/inner-requires+provides
92089                                                                                                                   the-struct_0)
92090                                                                                                                  (expand-context/inner-observer
92091                                                                                                                   the-struct_0)
92092                                                                                                                  (expand-context/inner-for-serializable?
92093                                                                                                                   the-struct_0)
92094                                                                                                                  (expand-context/inner-to-correlated-linklet?
92095                                                                                                                   the-struct_0)
92096                                                                                                                  (expand-context/inner-normalize-locals?
92097                                                                                                                   the-struct_0)
92098                                                                                                                  (expand-context/inner-parsing-expanded?
92099                                                                                                                   the-struct_0)
92100                                                                                                                  (expand-context/inner-skip-visit-available?
92101                                                                                                                   the-struct_0))
92102                                                                                                                 (raise-argument-error
92103                                                                                                                  'struct-copy
92104                                                                                                                  "expand-context/inner?"
92105                                                                                                                  the-struct_0))))
92106                                                                                                          (expand-context/outer1.1
92107                                                                                                           inner514_0
92108                                                                                                           (root-expand-context/outer-post-expansion
92109                                                                                                            ctx43_0)
92110                                                                                                           (root-expand-context/outer-use-site-scopes
92111                                                                                                            ctx43_0)
92112                                                                                                           (root-expand-context/outer-frame-id
92113                                                                                                            ctx43_0)
92114                                                                                                           (expand-context/outer-context
92115                                                                                                            ctx43_0)
92116                                                                                                           (expand-context/outer-env
92117                                                                                                            ctx43_0)
92118                                                                                                           (expand-context/outer-scopes
92119                                                                                                            ctx43_0)
92120                                                                                                           (expand-context/outer-def-ctx-scopes
92121                                                                                                            ctx43_0)
92122                                                                                                           (expand-context/outer-binding-layer
92123                                                                                                            ctx43_0)
92124                                                                                                           (expand-context/outer-reference-records
92125                                                                                                            ctx43_0)
92126                                                                                                           (expand-context/outer-only-immediate?
92127                                                                                                            ctx43_0)
92128                                                                                                           need-eventually-defined48_0
92129                                                                                                           (expand-context/outer-current-introduction-scopes
92130                                                                                                            ctx43_0)
92131                                                                                                           (expand-context/outer-current-use-scopes
92132                                                                                                            ctx43_0)
92133                                                                                                           (expand-context/outer-name
92134                                                                                                            ctx43_0))))
92135                                                                                                      (raise-argument-error
92136                                                                                                       'struct-copy
92137                                                                                                       "expand-context/outer?"
92138                                                                                                       ctx43_0))))
92139                                                                                               (let ((temp512_0
92140                                                                                                      (lambda (go_0)
92141                                                                                                        (call-with-module-prompt/value-list
92142                                                                                                         'define-syntaxes
92143                                                                                                         go_0
92144                                                                                                         ids_0
92145                                                                                                         install-values_0))))
92146                                                                                                 (let ((temp510_1
92147                                                                                                        temp510_0))
92148                                                                                                   (expand+eval-for-syntaxes-binding.1
92149                                                                                                    #f
92150                                                                                                    temp512_0
92151                                                                                                    'define-syntaxes
92152                                                                                                    rhs479_0
92153                                                                                                    ids_0
92154                                                                                                    temp510_1)))))
92155                                                                                           (case-lambda
92156                                                                                            ((exp-rhs_0
92157                                                                                              parsed-rhs_0
92158                                                                                              vals_0)
92159                                                                                             (begin
92160                                                                                               (let ((obs_0
92161                                                                                                      (begin-unsafe
92162                                                                                                       (expand-context/inner-observer
92163                                                                                                        (root-expand-context/outer-inner
92164                                                                                                         ctx43_0)))))
92165                                                                                                 (if obs_0
92166                                                                                                   (call-expand-observe
92167                                                                                                    obs_0
92168                                                                                                    'exit-case
92169                                                                                                    (list
92170                                                                                                     define-syntaxes477_0
92171                                                                                                     ids_0
92172                                                                                                     exp-rhs_0))
92173                                                                                                   (void)))
92174                                                                                               (let ((parsed-body_0
92175                                                                                                      (parsed-define-syntaxes20.1
92176                                                                                                       (keep-properties-only
92177                                                                                                        exp-body_0)
92178                                                                                                       ids_0
92179                                                                                                       syms_0
92180                                                                                                       parsed-rhs_0)))
92181                                                                                                 (let ((app_0
92182                                                                                                        (if (begin-unsafe
92183                                                                                                             (expand-context/inner-to-parsed?
92184                                                                                                              (root-expand-context/outer-inner
92185                                                                                                               ctx43_0)))
92186                                                                                                          parsed-body_0
92187                                                                                                          (expanded+parsed1.1
92188                                                                                                           (let ((temp519_0
92189                                                                                                                  (list
92190                                                                                                                   define-syntaxes477_0
92191                                                                                                                   ids_0
92192                                                                                                                   exp-rhs_0)))
92193                                                                                                             (rebuild.1
92194                                                                                                              #t
92195                                                                                                              exp-body_0
92196                                                                                                              temp519_0))
92197                                                                                                           parsed-body_0))))
92198                                                                                                   (cons
92199                                                                                                    app_0
92200                                                                                                    (loop_0
92201                                                                                                     tail?_0
92202                                                                                                     rest-bodys_0))))))
92203                                                                                            (args
92204                                                                                             (raise-binding-result-arity-error
92205                                                                                              3
92206                                                                                              args))))))))))))))
92207                                                                       (args
92208                                                                        (raise-binding-result-arity-error
92209                                                                         4
92210                                                                         args)))))
92211                                                                   (if (eq?
92212                                                                        tmp_0
92213                                                                        '|#%require|)
92214                                                                     (begin
92215                                                                       (let ((obs_0
92216                                                                              (begin-unsafe
92217                                                                               (expand-context/inner-observer
92218                                                                                (root-expand-context/outer-inner
92219                                                                                 ctx43_0)))))
92220                                                                         (if obs_0
92221                                                                           (call-expand-observe
92222                                                                            obs_0
92223                                                                            'prim-require
92224                                                                            exp-body_0)
92225                                                                           (void)))
92226                                                                       (let ((ready-body_0
92227                                                                              (remove-use-site-scopes
92228                                                                               exp-body_0
92229                                                                               ctx43_0)))
92230                                                                         (call-with-values
92231                                                                          (lambda ()
92232                                                                            (call-with-values
92233                                                                             (lambda ()
92234                                                                               (let ((s_0
92235                                                                                      (if (syntax?$1
92236                                                                                           ready-body_0)
92237                                                                                        (syntax-e$1
92238                                                                                         ready-body_0)
92239                                                                                        ready-body_0)))
92240                                                                                 (if (pair?
92241                                                                                      s_0)
92242                                                                                   (let ((|#%require522_0|
92243                                                                                          (let ((s_1
92244                                                                                                 (car
92245                                                                                                  s_0)))
92246                                                                                            s_1)))
92247                                                                                     (let ((req523_0
92248                                                                                            (let ((s_1
92249                                                                                                   (cdr
92250                                                                                                    s_0)))
92251                                                                                              (let ((s_2
92252                                                                                                     (if (syntax?$1
92253                                                                                                          s_1)
92254                                                                                                       (syntax-e$1
92255                                                                                                        s_1)
92256                                                                                                       s_1)))
92257                                                                                                (let ((flat-s_0
92258                                                                                                       (to-syntax-list.1
92259                                                                                                        s_2)))
92260                                                                                                  (if (not
92261                                                                                                       flat-s_0)
92262                                                                                                    (raise-syntax-error$1
92263                                                                                                     #f
92264                                                                                                     "bad syntax"
92265                                                                                                     ready-body_0)
92266                                                                                                    flat-s_0))))))
92267                                                                                       (let ((|#%require522_1|
92268                                                                                              |#%require522_0|))
92269                                                                                         (values
92270                                                                                          |#%require522_1|
92271                                                                                          req523_0))))
92272                                                                                   (raise-syntax-error$1
92273                                                                                    #f
92274                                                                                    "bad syntax"
92275                                                                                    ready-body_0))))
92276                                                                             (case-lambda
92277                                                                              ((|#%require520_0|
92278                                                                                req521_0)
92279                                                                               (values
92280                                                                                #t
92281                                                                                |#%require520_0|
92282                                                                                req521_0))
92283                                                                              (args
92284                                                                               (raise-binding-result-arity-error
92285                                                                                2
92286                                                                                args)))))
92287                                                                          (case-lambda
92288                                                                           ((ok?_0
92289                                                                             |#%require520_0|
92290                                                                             req521_0)
92291                                                                            (begin
92292                                                                              (parse-and-perform-requires!.1
92293                                                                               #f
92294                                                                               #f
92295                                                                               declared-submodule-names52_0
92296                                                                               #f
92297                                                                               phase42_0
92298                                                                               #f
92299                                                                               self45_0
92300                                                                               #f
92301                                                                               #t
92302                                                                               'module
92303                                                                               req521_0
92304                                                                               exp-body_0
92305                                                                               namespace44_0
92306                                                                               phase42_0
92307                                                                               requires-and-provides47_0)
92308                                                                              (let ((obs_0
92309                                                                                     (begin-unsafe
92310                                                                                      (expand-context/inner-observer
92311                                                                                       (root-expand-context/outer-inner
92312                                                                                        ctx43_0)))))
92313                                                                                (if obs_0
92314                                                                                  (call-expand-observe
92315                                                                                   obs_0
92316                                                                                   'exit-case
92317                                                                                   ready-body_0)
92318                                                                                  (void)))
92319                                                                              (cons
92320                                                                               ready-body_0
92321                                                                               (loop_0
92322                                                                                tail?_0
92323                                                                                rest-bodys_0))))
92324                                                                           (args
92325                                                                            (raise-binding-result-arity-error
92326                                                                             3
92327                                                                             args))))))
92328                                                                     (if (eq?
92329                                                                          tmp_0
92330                                                                          '|#%provide|)
92331                                                                       (begin
92332                                                                         (let ((obs_0
92333                                                                                (begin-unsafe
92334                                                                                 (expand-context/inner-observer
92335                                                                                  (root-expand-context/outer-inner
92336                                                                                   ctx43_0)))))
92337                                                                           (if obs_0
92338                                                                             (call-expand-observe
92339                                                                              obs_0
92340                                                                              'prim-stop
92341                                                                              #f)
92342                                                                             (void)))
92343                                                                         (cons
92344                                                                          exp-body_0
92345                                                                          (loop_0
92346                                                                           tail?_0
92347                                                                           rest-bodys_0)))
92348                                                                       (if (eq?
92349                                                                            tmp_0
92350                                                                            'module)
92351                                                                         (begin
92352                                                                           (let ((obs_0
92353                                                                                  (begin-unsafe
92354                                                                                   (expand-context/inner-observer
92355                                                                                    (root-expand-context/outer-inner
92356                                                                                     ctx43_0)))))
92357                                                                             (if obs_0
92358                                                                               (call-expand-observe
92359                                                                                obs_0
92360                                                                                'prim-submodule
92361                                                                                #f)
92362                                                                               (void)))
92363                                                                           (let ((ready-body_0
92364                                                                                  (remove-use-site-scopes
92365                                                                                   exp-body_0
92366                                                                                   ctx43_0)))
92367                                                                             (let ((submod_0
92368                                                                                    (expand-submodule.1
92369                                                                                     compiled-submodules53_0
92370                                                                                     declared-submodule-names52_0
92371                                                                                     #f
92372                                                                                     #f
92373                                                                                     #f
92374                                                                                     #f
92375                                                                                     modules-being-compiled54_0
92376                                                                                     mpis-to-reset55_0
92377                                                                                     ready-body_0
92378                                                                                     self45_0
92379                                                                                     ctx43_0)))
92380                                                                               (cons
92381                                                                                submod_0
92382                                                                                (loop_0
92383                                                                                 tail?_0
92384                                                                                 rest-bodys_0)))))
92385                                                                         (if (eq?
92386                                                                              tmp_0
92387                                                                              'module*)
92388                                                                           (begin
92389                                                                             (let ((obs_0
92390                                                                                    (begin-unsafe
92391                                                                                     (expand-context/inner-observer
92392                                                                                      (root-expand-context/outer-inner
92393                                                                                       ctx43_0)))))
92394                                                                               (if obs_0
92395                                                                                 (call-expand-observe
92396                                                                                  obs_0
92397                                                                                  'prim-stop
92398                                                                                  #f)
92399                                                                                 (void)))
92400                                                                             (cons
92401                                                                              exp-body_0
92402                                                                              (loop_0
92403                                                                               tail?_0
92404                                                                               rest-bodys_0)))
92405                                                                           (if (eq?
92406                                                                                tmp_0
92407                                                                                '|#%declare|)
92408                                                                             (begin
92409                                                                               (let ((obs_0
92410                                                                                      (begin-unsafe
92411                                                                                       (expand-context/inner-observer
92412                                                                                        (root-expand-context/outer-inner
92413                                                                                         ctx43_0)))))
92414                                                                                 (if obs_0
92415                                                                                   (call-expand-observe
92416                                                                                    obs_0
92417                                                                                    'prim-declare
92418                                                                                    exp-body_0)
92419                                                                                   (void)))
92420                                                                               (call-with-values
92421                                                                                (lambda ()
92422                                                                                  (call-with-values
92423                                                                                   (lambda ()
92424                                                                                     (let ((s_0
92425                                                                                            (if (syntax?$1
92426                                                                                                 exp-body_0)
92427                                                                                              (syntax-e$1
92428                                                                                               exp-body_0)
92429                                                                                              exp-body_0)))
92430                                                                                       (if (pair?
92431                                                                                            s_0)
92432                                                                                         (let ((|#%declare543_0|
92433                                                                                                (let ((s_1
92434                                                                                                       (car
92435                                                                                                        s_0)))
92436                                                                                                  s_1)))
92437                                                                                           (let ((kw544_0
92438                                                                                                  (let ((s_1
92439                                                                                                         (cdr
92440                                                                                                          s_0)))
92441                                                                                                    (let ((s_2
92442                                                                                                           (if (syntax?$1
92443                                                                                                                s_1)
92444                                                                                                             (syntax-e$1
92445                                                                                                              s_1)
92446                                                                                                             s_1)))
92447                                                                                                      (let ((flat-s_0
92448                                                                                                             (to-syntax-list.1
92449                                                                                                              s_2)))
92450                                                                                                        (if (not
92451                                                                                                             flat-s_0)
92452                                                                                                          (raise-syntax-error$1
92453                                                                                                           #f
92454                                                                                                           "bad syntax"
92455                                                                                                           exp-body_0)
92456                                                                                                          flat-s_0))))))
92457                                                                                             (let ((|#%declare543_1|
92458                                                                                                    |#%declare543_0|))
92459                                                                                               (values
92460                                                                                                |#%declare543_1|
92461                                                                                                kw544_0))))
92462                                                                                         (raise-syntax-error$1
92463                                                                                          #f
92464                                                                                          "bad syntax"
92465                                                                                          exp-body_0))))
92466                                                                                   (case-lambda
92467                                                                                    ((|#%declare541_0|
92468                                                                                      kw542_0)
92469                                                                                     (values
92470                                                                                      #t
92471                                                                                      |#%declare541_0|
92472                                                                                      kw542_0))
92473                                                                                    (args
92474                                                                                     (raise-binding-result-arity-error
92475                                                                                      2
92476                                                                                      args)))))
92477                                                                                (case-lambda
92478                                                                                 ((ok?_0
92479                                                                                   |#%declare541_0|
92480                                                                                   kw542_0)
92481                                                                                  (begin
92482                                                                                    (begin
92483                                                                                      (letrec*
92484                                                                                       ((for-loop_0
92485                                                                                         (|#%name|
92486                                                                                          for-loop
92487                                                                                          (lambda (lst_0)
92488                                                                                            (begin
92489                                                                                              (if (pair?
92490                                                                                                   lst_0)
92491                                                                                                (let ((kw_0
92492                                                                                                       (unsafe-car
92493                                                                                                        lst_0)))
92494                                                                                                  (let ((rest_0
92495                                                                                                         (unsafe-cdr
92496                                                                                                          lst_0)))
92497                                                                                                    (begin
92498                                                                                                      (begin
92499                                                                                                        (if (keyword?
92500                                                                                                             (syntax-e$1
92501                                                                                                              kw_0))
92502                                                                                                          (void)
92503                                                                                                          (raise-syntax-error$1
92504                                                                                                           #f
92505                                                                                                           "expected a keyword"
92506                                                                                                           exp-body_0
92507                                                                                                           kw_0))
92508                                                                                                        (if (memq
92509                                                                                                             (syntax-e$1
92510                                                                                                              kw_0)
92511                                                                                                             kws2278)
92512                                                                                                          (void)
92513                                                                                                          (raise-syntax-error$1
92514                                                                                                           #f
92515                                                                                                           "not an allowed declaration keyword"
92516                                                                                                           exp-body_0
92517                                                                                                           kw_0))
92518                                                                                                        (if (hash-ref
92519                                                                                                             declared-keywords51_0
92520                                                                                                             (syntax-e$1
92521                                                                                                              kw_0)
92522                                                                                                             #f)
92523                                                                                                          (raise-syntax-error$1
92524                                                                                                           #f
92525                                                                                                           "keyword declared multiple times"
92526                                                                                                           exp-body_0
92527                                                                                                           kw_0)
92528                                                                                                          (void))
92529                                                                                                        (if (eq?
92530                                                                                                             (syntax-e$1
92531                                                                                                              kw_0)
92532                                                                                                             kw2838)
92533                                                                                                          (if (eq?
92534                                                                                                               (current-code-inspector)
92535                                                                                                               initial-code-inspector)
92536                                                                                                            (void)
92537                                                                                                            (raise-syntax-error$1
92538                                                                                                             #f
92539                                                                                                             "unsafe compilation disallowed by code inspector"
92540                                                                                                             exp-body_0
92541                                                                                                             kw_0))
92542                                                                                                          (void))
92543                                                                                                        (hash-set!
92544                                                                                                         declared-keywords51_0
92545                                                                                                         (syntax-e$1
92546                                                                                                          kw_0)
92547                                                                                                         kw_0))
92548                                                                                                      (for-loop_0
92549                                                                                                       rest_0))))
92550                                                                                                (values)))))))
92551                                                                                       (for-loop_0
92552                                                                                        kw542_0)))
92553                                                                                    (let ((parsed-body_0
92554                                                                                           (|parsed-#%declare22.1|
92555                                                                                            exp-body_0)))
92556                                                                                      (let ((app_0
92557                                                                                             (if (begin-unsafe
92558                                                                                                  (expand-context/inner-to-parsed?
92559                                                                                                   (root-expand-context/outer-inner
92560                                                                                                    ctx43_0)))
92561                                                                                               parsed-body_0
92562                                                                                               (expanded+parsed1.1
92563                                                                                                exp-body_0
92564                                                                                                parsed-body_0))))
92565                                                                                        (cons
92566                                                                                         app_0
92567                                                                                         (loop_0
92568                                                                                          tail?_0
92569                                                                                          rest-bodys_0))))))
92570                                                                                 (args
92571                                                                                  (raise-binding-result-arity-error
92572                                                                                   3
92573                                                                                   args)))))
92574                                                                             (begin
92575                                                                               (let ((obs_0
92576                                                                                      (begin-unsafe
92577                                                                                       (expand-context/inner-observer
92578                                                                                        (root-expand-context/outer-inner
92579                                                                                         ctx43_0)))))
92580                                                                                 (if obs_0
92581                                                                                   (call-expand-observe
92582                                                                                    obs_0
92583                                                                                    'prim-stop
92584                                                                                    #f)
92585                                                                                   (void)))
92586                                                                               (cons
92587                                                                                exp-body_0
92588                                                                                (loop_0
92589                                                                                 tail?_0
92590                                                                                 rest-bodys_0))))))))))))))))))
92591                                               (let ((l_0
92592                                                      (append
92593                                                       lifted-reqs_0
92594                                                       lifted-defns_0
92595                                                       exp-lifted-mods_0)))
92596                                                 (if (null? l_0)
92597                                                   (finish_0)
92598                                                   (append
92599                                                    l_0
92600                                                    (finish_0))))))))))))))))))))))))
92601          (loop_0 #t bodys72_0)))))))
92602(define make-wrap-as-definition
92603  (lambda (self_0
92604           frame-id_0
92605           inside-scope_0
92606           all-scopes-stx_0
92607           defined-syms_0
92608           requires+provides_0)
92609    (lambda (ids_0 rhs_0 phase_0)
92610      (let ((scoped-ids_0
92611             (reverse$1
92612              (begin
92613                (letrec*
92614                 ((for-loop_0
92615                   (|#%name|
92616                    for-loop
92617                    (lambda (fold-var_0 lst_0)
92618                      (begin
92619                        (if (pair? lst_0)
92620                          (let ((id_0 (unsafe-car lst_0)))
92621                            (let ((rest_0 (unsafe-cdr lst_0)))
92622                              (let ((fold-var_1
92623                                     (let ((fold-var_1
92624                                            (cons
92625                                             (add-scope id_0 inside-scope_0)
92626                                             fold-var_0)))
92627                                       (values fold-var_1))))
92628                                (for-loop_0 fold-var_1 rest_0))))
92629                          fold-var_0))))))
92630                 (for-loop_0 null ids_0))))))
92631        (let ((syms_0
92632               (select-defined-syms-and-bind!.1
92633                #f
92634                frame-id_0
92635                #f
92636                requires+provides_0
92637                #f
92638                scoped-ids_0
92639                defined-syms_0
92640                self_0
92641                phase_0
92642                all-scopes-stx_0)))
92643          (let ((s_0
92644                 (add-scope
92645                  (datum->syntax$1
92646                   #f
92647                   (list
92648                    (datum->syntax$1
92649                     (syntax-shift-phase-level$1 core-stx phase_0)
92650                     'define-values)
92651                    scoped-ids_0
92652                    rhs_0))
92653                  inside-scope_0)))
92654            (values
92655             scoped-ids_0
92656             (semi-parsed-define-values2.1
92657              s_0
92658              syms_0
92659              scoped-ids_0
92660              rhs_0))))))))
92661(define add-post-expansion-scope
92662  (lambda (bodys_0 ctx_0)
92663    (let ((pe_0
92664           (begin-unsafe (root-expand-context/outer-post-expansion ctx_0))))
92665      (if pe_0
92666        (reverse$1
92667         (begin
92668           (letrec*
92669            ((for-loop_0
92670              (|#%name|
92671               for-loop
92672               (lambda (fold-var_0 lst_0)
92673                 (begin
92674                   (if (pair? lst_0)
92675                     (let ((body_0 (unsafe-car lst_0)))
92676                       (let ((rest_0 (unsafe-cdr lst_0)))
92677                         (let ((fold-var_1
92678                                (let ((fold-var_1
92679                                       (cons
92680                                        (apply-post-expansion pe_0 body_0)
92681                                        fold-var_0)))
92682                                  (values fold-var_1))))
92683                           (for-loop_0 fold-var_1 rest_0))))
92684                     fold-var_0))))))
92685            (for-loop_0 null bodys_0))))
92686        bodys_0))))
92687(define finish-expanding-body-expressions.1
92688  (|#%name|
92689   finish-expanding-body-expressions
92690   (lambda (compiled-submodules78_0
92691            ctx75_0
92692            declared-submodule-names77_0
92693            modules-being-compiled79_0
92694            mpis-to-reset80_0
92695            phase74_0
92696            self76_0
92697            partially-expanded-bodys88_0)
92698     (begin
92699       (letrec*
92700        ((loop_0
92701          (|#%name|
92702           loop
92703           (lambda (tail?_0 bodys_0)
92704             (begin
92705               (if (null? bodys_0)
92706                 (if (if tail?_0 (not (zero? phase74_0)) #f)
92707                   null
92708                   (if tail?_0
92709                     (let ((bodys_1
92710                            (let ((app_0
92711                                   (let ((to-module-lifts_0
92712                                          (begin-unsafe
92713                                           (expand-context/inner-to-module-lifts
92714                                            (root-expand-context/outer-inner
92715                                             ctx75_0)))))
92716                                     (begin-unsafe
92717                                      (box-clear!
92718                                       (to-module-lift-context-ends
92719                                        to-module-lifts_0))))))
92720                              (append
92721                               app_0
92722                               (let ((to-module-lifts_0
92723                                      (begin-unsafe
92724                                       (expand-context/inner-to-module-lifts
92725                                        (root-expand-context/outer-inner
92726                                         ctx75_0)))))
92727                                 (begin-unsafe
92728                                  (box-clear!
92729                                   (to-module-lift-context-provides
92730                                    to-module-lifts_0))))))))
92731                       (if (null? bodys_1)
92732                         null
92733                         (begin
92734                           (let ((obs_0
92735                                  (begin-unsafe
92736                                   (expand-context/inner-observer
92737                                    (root-expand-context/outer-inner
92738                                     ctx75_0)))))
92739                             (if obs_0
92740                               (call-expand-observe
92741                                obs_0
92742                                'module-end-lifts
92743                                bodys_1)
92744                               (void)))
92745                           (loop_0
92746                            #t
92747                            (add-post-expansion-scope bodys_1 ctx75_0)))))
92748                     null))
92749                 (begin
92750                   (let ((obs_0
92751                          (begin-unsafe
92752                           (expand-context/inner-observer
92753                            (root-expand-context/outer-inner ctx75_0)))))
92754                     (if obs_0 (call-expand-observe obs_0 'next) (void)))
92755                   (let ((body_0 (car bodys_0)))
92756                     (let ((rest-bodys_0 (cdr bodys_0)))
92757                       (let ((exp-body_0
92758                              (if (let ((or-part_0 (parsed? body_0)))
92759                                    (if or-part_0
92760                                      or-part_0
92761                                      (let ((or-part_1
92762                                             (expanded+parsed? body_0)))
92763                                        (if or-part_1
92764                                          or-part_1
92765                                          (semi-parsed-begin-for-syntax?
92766                                           body_0)))))
92767                                body_0
92768                                (if (semi-parsed-define-values? body_0)
92769                                  (let ((ids_0
92770                                         (semi-parsed-define-values-ids
92771                                          body_0)))
92772                                    (let ((rhs-ctx_0
92773                                           (as-named-context
92774                                            (as-expression-context ctx75_0)
92775                                            ids_0)))
92776                                      (let ((syms_0
92777                                             (semi-parsed-define-values-syms
92778                                              body_0)))
92779                                        (let ((s_0
92780                                               (semi-parsed-define-values-s
92781                                                body_0)))
92782                                          (call-with-values
92783                                           (lambda ()
92784                                             (if (if (not
92785                                                      (begin-unsafe
92786                                                       (expand-context/inner-to-parsed?
92787                                                        (root-expand-context/outer-inner
92788                                                         rhs-ctx_0))))
92789                                                   #t
92790                                                   #f)
92791                                               (call-with-values
92792                                                (lambda ()
92793                                                  (let ((s_1
92794                                                         (if (syntax?$1 s_0)
92795                                                           (syntax-e$1 s_0)
92796                                                           s_0)))
92797                                                    (if (pair? s_1)
92798                                                      (let ((define-values555_0
92799                                                             (let ((s_2
92800                                                                    (car s_1)))
92801                                                               s_2)))
92802                                                        (call-with-values
92803                                                         (lambda ()
92804                                                           (let ((s_2
92805                                                                  (cdr s_1)))
92806                                                             (let ((s_3
92807                                                                    (if (syntax?$1
92808                                                                         s_2)
92809                                                                      (syntax-e$1
92810                                                                       s_2)
92811                                                                      s_2)))
92812                                                               (if (pair? s_3)
92813                                                                 (let ((_0
92814                                                                        (let ((s_4
92815                                                                               (car
92816                                                                                s_3)))
92817                                                                          s_4)))
92818                                                                   (let ((_1
92819                                                                          (let ((s_4
92820                                                                                 (cdr
92821                                                                                  s_3)))
92822                                                                            (let ((s_5
92823                                                                                   (if (syntax?$1
92824                                                                                        s_4)
92825                                                                                     (syntax-e$1
92826                                                                                      s_4)
92827                                                                                     s_4)))
92828                                                                              (if (pair?
92829                                                                                   s_5)
92830                                                                                (let ((_1
92831                                                                                       (let ((s_6
92832                                                                                              (car
92833                                                                                               s_5)))
92834                                                                                         s_6)))
92835                                                                                  (call-with-values
92836                                                                                   (lambda ()
92837                                                                                     (let ((s_6
92838                                                                                            (cdr
92839                                                                                             s_5)))
92840                                                                                       (let ((s_7
92841                                                                                              (if (syntax?$1
92842                                                                                                   s_6)
92843                                                                                                (syntax-e$1
92844                                                                                                 s_6)
92845                                                                                                s_6)))
92846                                                                                         (if (null?
92847                                                                                              s_7)
92848                                                                                           (values)
92849                                                                                           (raise-syntax-error$1
92850                                                                                            #f
92851                                                                                            "bad syntax"
92852                                                                                            s_0)))))
92853                                                                                   (case-lambda
92854                                                                                    (()
92855                                                                                     (let ((_2
92856                                                                                            _1))
92857                                                                                       (values
92858                                                                                        _2)))
92859                                                                                    (args
92860                                                                                     (raise-binding-result-arity-error
92861                                                                                      0
92862                                                                                      args)))))
92863                                                                                (raise-syntax-error$1
92864                                                                                 #f
92865                                                                                 "bad syntax"
92866                                                                                 s_0))))))
92867                                                                     (let ((_2
92868                                                                            _0))
92869                                                                       (values
92870                                                                        _2
92871                                                                        _1))))
92872                                                                 (raise-syntax-error$1
92873                                                                  #f
92874                                                                  "bad syntax"
92875                                                                  s_0)))))
92876                                                         (case-lambda
92877                                                          ((_0 _1)
92878                                                           (let ((define-values555_1
92879                                                                  define-values555_0))
92880                                                             (values
92881                                                              define-values555_1
92882                                                              _0
92883                                                              _1)))
92884                                                          (args
92885                                                           (raise-binding-result-arity-error
92886                                                            2
92887                                                            args)))))
92888                                                      (raise-syntax-error$1
92889                                                       #f
92890                                                       "bad syntax"
92891                                                       s_0))))
92892                                                (case-lambda
92893                                                 ((define-values552_0 _0 _1)
92894                                                  (values
92895                                                   #t
92896                                                   define-values552_0
92897                                                   _0
92898                                                   _1))
92899                                                 (args
92900                                                  (raise-binding-result-arity-error
92901                                                   3
92902                                                   args))))
92903                                               (values #f #f #f #f)))
92904                                           (case-lambda
92905                                            ((ok?_0 define-values552_0 _0 _1)
92906                                             (let ((rebuild-s_0
92907                                                    (keep-as-needed.1
92908                                                     #f
92909                                                     #f
92910                                                     #t
92911                                                     rhs-ctx_0
92912                                                     s_0)))
92913                                               (begin
92914                                                 (let ((obs_0
92915                                                        (begin-unsafe
92916                                                         (expand-context/inner-observer
92917                                                          (root-expand-context/outer-inner
92918                                                           ctx75_0)))))
92919                                                   (if obs_0
92920                                                     (begin
92921                                                       (call-expand-observe
92922                                                        obs_0
92923                                                        'visit
92924                                                        #f)
92925                                                       (call-expand-observe
92926                                                        obs_0
92927                                                        'enter-prim
92928                                                        #f)
92929                                                       (call-expand-observe
92930                                                        obs_0
92931                                                        'prim-define-values
92932                                                        #f))
92933                                                     (void)))
92934                                                 (let ((exp-rhs_0
92935                                                        (begin
92936                                                          (if log-performance?
92937                                                            (start-performance-region
92938                                                             'expand
92939                                                             'form-in-module/2)
92940                                                            (void))
92941                                                          (begin0
92942                                                            (let ((temp564_0
92943                                                                   (semi-parsed-define-values-rhs
92944                                                                    body_0)))
92945                                                              (expand.1
92946                                                               #f
92947                                                               #f
92948                                                               temp564_0
92949                                                               rhs-ctx_0))
92950                                                            (if log-performance?
92951                                                              (end-performance-region)
92952                                                              (void))))))
92953                                                   (begin
92954                                                     (let ((obs_0
92955                                                            (begin-unsafe
92956                                                             (expand-context/inner-observer
92957                                                              (root-expand-context/outer-inner
92958                                                               ctx75_0)))))
92959                                                       (if obs_0
92960                                                         (call-expand-observe
92961                                                          obs_0
92962                                                          'exit-prim/return
92963                                                          #f)
92964                                                         (void)))
92965                                                     (let ((comp-form_0
92966                                                            (parsed-define-values19.1
92967                                                             rebuild-s_0
92968                                                             ids_0
92969                                                             syms_0
92970                                                             (if (begin-unsafe
92971                                                                  (expand-context/inner-to-parsed?
92972                                                                   (root-expand-context/outer-inner
92973                                                                    rhs-ctx_0)))
92974                                                               exp-rhs_0
92975                                                               (let ((temp567_0
92976                                                                      (as-to-parsed-context
92977                                                                       rhs-ctx_0)))
92978                                                                 (expand.1
92979                                                                  #f
92980                                                                  #f
92981                                                                  exp-rhs_0
92982                                                                  temp567_0))))))
92983                                                       (if (begin-unsafe
92984                                                            (expand-context/inner-to-parsed?
92985                                                             (root-expand-context/outer-inner
92986                                                              rhs-ctx_0)))
92987                                                         comp-form_0
92988                                                         (expanded+parsed1.1
92989                                                          (let ((temp569_0
92990                                                                 (list
92991                                                                  define-values552_0
92992                                                                  ids_0
92993                                                                  exp-rhs_0)))
92994                                                            (rebuild.1
92995                                                             #t
92996                                                             rebuild-s_0
92997                                                             temp569_0))
92998                                                          comp-form_0))))))))
92999                                            (args
93000                                             (raise-binding-result-arity-error
93001                                              4
93002                                              args))))))))
93003                                  (let ((tmp_0
93004                                         (core-form-sym body_0 phase74_0)))
93005                                    (if (if (eq? tmp_0 '|#%require|)
93006                                          #t
93007                                          (if (eq? tmp_0 '|#%provide|)
93008                                            #t
93009                                            (eq? tmp_0 'module*)))
93010                                      body_0
93011                                      (begin
93012                                        (if log-performance?
93013                                          (start-performance-region
93014                                           'expand
93015                                           'form-in-module/2)
93016                                          (void))
93017                                        (begin0
93018                                          (let ((exp-body_0
93019                                                 (let ((temp571_0
93020                                                        (as-expression-context
93021                                                         ctx75_0)))
93022                                                   (expand.1
93023                                                    #f
93024                                                    #f
93025                                                    body_0
93026                                                    temp571_0))))
93027                                            (if (begin-unsafe
93028                                                 (expand-context/inner-to-parsed?
93029                                                  (root-expand-context/outer-inner
93030                                                   ctx75_0)))
93031                                              exp-body_0
93032                                              (expanded+parsed1.1
93033                                               exp-body_0
93034                                               (let ((temp573_0
93035                                                      (as-to-parsed-context
93036                                                       ctx75_0)))
93037                                                 (expand.1
93038                                                  #f
93039                                                  #f
93040                                                  exp-body_0
93041                                                  temp573_0)))))
93042                                          (if log-performance?
93043                                            (end-performance-region)
93044                                            (void))))))))))
93045                         (let ((lifts_0
93046                                (begin-unsafe
93047                                 (expand-context/inner-lifts
93048                                  (root-expand-context/outer-inner ctx75_0)))))
93049                           (let ((lifted-defns_0
93050                                  (begin-unsafe
93051                                   (box-clear! (lift-context-lifts lifts_0)))))
93052                             (let ((require-lifts_0
93053                                    (begin-unsafe
93054                                     (expand-context/inner-require-lifts
93055                                      (root-expand-context/outer-inner
93056                                       ctx75_0)))))
93057                               (let ((lifted-requires_0
93058                                      (begin-unsafe
93059                                       (box-clear!
93060                                        (require-lift-context-requires
93061                                         require-lifts_0)))))
93062                                 (let ((module-lifts_0
93063                                        (begin-unsafe
93064                                         (expand-context/inner-module-lifts
93065                                          (root-expand-context/outer-inner
93066                                           ctx75_0)))))
93067                                   (let ((lifted-modules_0
93068                                          (begin-unsafe
93069                                           (box-clear!
93070                                            (module-lift-context-lifts
93071                                             module-lifts_0)))))
93072                                     (let ((no-lifts?_0
93073                                            (if (null? lifted-defns_0)
93074                                              (if (null? lifted-modules_0)
93075                                                (null? lifted-requires_0)
93076                                                #f)
93077                                              #f)))
93078                                       (begin
93079                                         (if no-lifts?_0
93080                                           (void)
93081                                           (let ((obs_0
93082                                                  (begin-unsafe
93083                                                   (expand-context/inner-observer
93084                                                    (root-expand-context/outer-inner
93085                                                     ctx75_0)))))
93086                                             (if obs_0
93087                                               (let ((app_0
93088                                                      (add-post-expansion-scope
93089                                                       lifted-modules_0
93090                                                       ctx75_0)))
93091                                                 (call-expand-observe
93092                                                  obs_0
93093                                                  'module-pass2-lifts
93094                                                  lifted-requires_0
93095                                                  app_0
93096                                                  (lifted-defns-extract-syntax
93097                                                   lifted-defns_0)))
93098                                               (void))))
93099                                         (let ((exp-lifted-modules_0
93100                                                (expand-non-module*-submodules.1
93101                                                 compiled-submodules78_0
93102                                                 declared-submodule-names77_0
93103                                                 modules-being-compiled79_0
93104                                                 mpis-to-reset80_0
93105                                                 lifted-modules_0
93106                                                 phase74_0
93107                                                 self76_0
93108                                                 ctx75_0)))
93109                                           (begin
93110                                             (if no-lifts?_0
93111                                               (void)
93112                                               (let ((obs_0
93113                                                      (begin-unsafe
93114                                                       (expand-context/inner-observer
93115                                                        (root-expand-context/outer-inner
93116                                                         ctx75_0)))))
93117                                                 (if obs_0
93118                                                   (call-expand-observe
93119                                                    obs_0
93120                                                    'next-group)
93121                                                   (void))))
93122                                             (let ((exp-lifted-defns_0
93123                                                    (loop_0
93124                                                     #f
93125                                                     lifted-defns_0)))
93126                                               (begin
93127                                                 (if no-lifts?_0
93128                                                   (void)
93129                                                   (let ((obs_0
93130                                                          (begin-unsafe
93131                                                           (expand-context/inner-observer
93132                                                            (root-expand-context/outer-inner
93133                                                             ctx75_0)))))
93134                                                     (if obs_0
93135                                                       (call-expand-observe
93136                                                        obs_0
93137                                                        'next-group)
93138                                                       (void))))
93139                                                 (append
93140                                                  lifted-requires_0
93141                                                  exp-lifted-modules_0
93142                                                  exp-lifted-defns_0
93143                                                  (cons
93144                                                   exp-body_0
93145                                                   (loop_0
93146                                                    tail?_0
93147                                                    rest-bodys_0)))))))))))))))))))))))))
93148        (loop_0 #t partially-expanded-bodys88_0))))))
93149(define check-defined-by-now
93150  (lambda (need-eventually-defined_0 self_0 ctx_0 requires+provides_0)
93151    (begin
93152      (begin
93153        (letrec*
93154         ((for-loop_0
93155           (|#%name|
93156            for-loop
93157            (lambda (i_0)
93158              (begin
93159                (if i_0
93160                  (call-with-values
93161                   (lambda ()
93162                     (hash-iterate-key+value need-eventually-defined_0 i_0))
93163                   (case-lambda
93164                    ((phase_0 l_0)
93165                     (begin
93166                       (begin
93167                         (let ((lst_0 (reverse$1 l_0)))
93168                           (begin
93169                             (letrec*
93170                              ((for-loop_1
93171                                (|#%name|
93172                                 for-loop
93173                                 (lambda (lst_1)
93174                                   (begin
93175                                     (if (pair? lst_1)
93176                                       (let ((id_0 (unsafe-car lst_1)))
93177                                         (let ((rest_0 (unsafe-cdr lst_1)))
93178                                           (begin
93179                                             (let ((b_0
93180                                                    (resolve+shift.1
93181                                                     #f
93182                                                     #f
93183                                                     null
93184                                                     unsafe-undefined
93185                                                     #f
93186                                                     id_0
93187                                                     phase_0)))
93188                                               (let ((bound-here?_0
93189                                                      (if b_0
93190                                                        (if (module-binding?
93191                                                             b_0)
93192                                                          (if (let ((app_0
93193                                                                     (module-binding-sym
93194                                                                      b_0)))
93195                                                                (eq?
93196                                                                 app_0
93197                                                                 (syntax-e$1
93198                                                                  id_0)))
93199                                                            (eq?
93200                                                             (module-binding-module
93201                                                              b_0)
93202                                                             self_0)
93203                                                            #f)
93204                                                          #f)
93205                                                        #f)))
93206                                                 (let ((bound-kind_0
93207                                                        (if bound-here?_0
93208                                                          (defined-sym-kind
93209                                                           requires+provides_0
93210                                                           (module-binding-sym
93211                                                            b_0)
93212                                                           phase_0)
93213                                                          #f)))
93214                                                   (if (eq?
93215                                                        bound-kind_0
93216                                                        'variable)
93217                                                     (void)
93218                                                     (let ((app_0
93219                                                            (let ((app_0
93220                                                                   (if (not
93221                                                                        b_0)
93222                                                                     "reference to an unbound identifier"
93223                                                                     (if (eq?
93224                                                                          bound-kind_0
93225                                                                          'transformer)
93226                                                                       "identifier treated as a variable, but later defined as syntax"
93227                                                                       "identifier treated as a variable, but later bound differently"))))
93228                                                              (string-append
93229                                                               app_0
93230                                                               (format
93231                                                                "\n  at phase: ~a"
93232                                                                (if (eq?
93233                                                                     phase_0
93234                                                                     1)
93235                                                                  "1; the transformer environment"
93236                                                                  phase_0))))))
93237                                                       (raise-syntax-error$1
93238                                                        #f
93239                                                        app_0
93240                                                        id_0
93241                                                        #f
93242                                                        null
93243                                                        (syntax-debug-info-string
93244                                                         id_0
93245                                                         ctx_0)))))))
93246                                             (for-loop_1 rest_0))))
93247                                       (values)))))))
93248                              (for-loop_1 lst_0))))
93249                         (void))
93250                       (for-loop_0
93251                        (hash-iterate-next need-eventually-defined_0 i_0))))
93252                    (args (raise-binding-result-arity-error 2 args))))
93253                  (values)))))))
93254         (for-loop_0 (hash-iterate-first need-eventually-defined_0))))
93255      (void))))
93256(define resolve-provides.1
93257  (|#%name|
93258   resolve-provides
93259   (lambda (ctx95_0
93260            declared-submodule-names91_0
93261            namespace92_0
93262            phase93_0
93263            requires-and-provides90_0
93264            self94_0
93265            expression-expanded-bodys102_0)
93266     (begin
93267       (begin
93268         (if log-performance?
93269           (start-performance-region 'expand 'provide)
93270           (void))
93271         (begin0
93272           (letrec*
93273            ((loop_0
93274              (|#%name|
93275               loop
93276               (lambda (bodys_0 phase_0)
93277                 (begin
93278                   (if (null? bodys_0)
93279                     null
93280                     (if (let ((or-part_0 (parsed? (car bodys_0))))
93281                           (if or-part_0
93282                             or-part_0
93283                             (expanded+parsed? (car bodys_0))))
93284                       (begin
93285                         (let ((obs_0
93286                                (begin-unsafe
93287                                 (expand-context/inner-observer
93288                                  (root-expand-context/outer-inner ctx95_0)))))
93289                           (if obs_0 (call-expand-observe obs_0 'next) (void)))
93290                         (let ((app_0 (car bodys_0)))
93291                           (cons app_0 (loop_0 (cdr bodys_0) phase_0))))
93292                       (if (semi-parsed-begin-for-syntax? (car bodys_0))
93293                         (begin
93294                           (let ((obs_0
93295                                  (begin-unsafe
93296                                   (expand-context/inner-observer
93297                                    (root-expand-context/outer-inner
93298                                     ctx95_0)))))
93299                             (if obs_0
93300                               (call-expand-observe
93301                                obs_0
93302                                'enter-begin-for-syntax)
93303                               (void)))
93304                           (let ((nested-bodys_0
93305                                  (let ((app_0
93306                                         (semi-parsed-begin-for-syntax-body
93307                                          (car bodys_0))))
93308                                    (loop_0 app_0 (add1 phase_0)))))
93309                             (begin
93310                               (let ((obs_0
93311                                      (begin-unsafe
93312                                       (expand-context/inner-observer
93313                                        (root-expand-context/outer-inner
93314                                         ctx95_0)))))
93315                                 (if obs_0
93316                                   (call-expand-observe
93317                                    obs_0
93318                                    'exit-begin-for-syntax)
93319                                   (void)))
93320                               (let ((app_0
93321                                      (let ((the-struct_0 (car bodys_0)))
93322                                        (if (semi-parsed-begin-for-syntax?
93323                                             the-struct_0)
93324                                          (semi-parsed-begin-for-syntax3.1
93325                                           (semi-parsed-begin-for-syntax-s
93326                                            the-struct_0)
93327                                           nested-bodys_0)
93328                                          (raise-argument-error
93329                                           'struct-copy
93330                                           "semi-parsed-begin-for-syntax?"
93331                                           the-struct_0)))))
93332                                 (cons
93333                                  app_0
93334                                  (loop_0 (cdr bodys_0) phase_0))))))
93335                         (let ((body_0 (car bodys_0)))
93336                           (let ((tmp_0 (core-form-sym body_0 phase_0)))
93337                             (if (eq? tmp_0 '|#%provide|)
93338                               (begin
93339                                 (let ((obs_0
93340                                        (begin-unsafe
93341                                         (expand-context/inner-observer
93342                                          (root-expand-context/outer-inner
93343                                           ctx95_0)))))
93344                                   (if obs_0
93345                                     (begin
93346                                       (call-expand-observe
93347                                        obs_0
93348                                        'enter-prim
93349                                        body_0)
93350                                       (call-expand-observe
93351                                        obs_0
93352                                        'prim-provide
93353                                        body_0))
93354                                     (void)))
93355                                 (call-with-values
93356                                  (lambda ()
93357                                    (call-with-values
93358                                     (lambda ()
93359                                       (let ((s_0
93360                                              (if (syntax?$1 body_0)
93361                                                (syntax-e$1 body_0)
93362                                                body_0)))
93363                                         (if (pair? s_0)
93364                                           (let ((|#%provide587_0|
93365                                                  (let ((s_1 (car s_0))) s_1)))
93366                                             (let ((spec588_0
93367                                                    (let ((s_1 (cdr s_0)))
93368                                                      (let ((s_2
93369                                                             (if (syntax?$1
93370                                                                  s_1)
93371                                                               (syntax-e$1 s_1)
93372                                                               s_1)))
93373                                                        (let ((flat-s_0
93374                                                               (to-syntax-list.1
93375                                                                s_2)))
93376                                                          (if (not flat-s_0)
93377                                                            (raise-syntax-error$1
93378                                                             #f
93379                                                             "bad syntax"
93380                                                             body_0)
93381                                                            flat-s_0))))))
93382                                               (let ((|#%provide587_1|
93383                                                      |#%provide587_0|))
93384                                                 (values
93385                                                  |#%provide587_1|
93386                                                  spec588_0))))
93387                                           (raise-syntax-error$1
93388                                            #f
93389                                            "bad syntax"
93390                                            body_0))))
93391                                     (case-lambda
93392                                      ((|#%provide585_0| spec586_0)
93393                                       (values #t |#%provide585_0| spec586_0))
93394                                      (args
93395                                       (raise-binding-result-arity-error
93396                                        2
93397                                        args)))))
93398                                  (case-lambda
93399                                   ((ok?_0 |#%provide585_0| spec586_0)
93400                                    (call-with-values
93401                                     (lambda ()
93402                                       (parse-and-expand-provides!
93403                                        spec586_0
93404                                        body_0
93405                                        requires-and-provides90_0
93406                                        self94_0
93407                                        phase_0
93408                                        (if (expand-context/outer? ctx95_0)
93409                                          (let ((the-struct_0
93410                                                 (root-expand-context/outer-inner
93411                                                  ctx95_0)))
93412                                            (let ((inner590_0
93413                                                   (if (expand-context/inner?
93414                                                        the-struct_0)
93415                                                     (let ((namespace592_0
93416                                                            (namespace->namespace-at-phase
93417                                                             namespace92_0
93418                                                             phase_0)))
93419                                                       (expand-context/inner2.1
93420                                                        (root-expand-context/inner-self-mpi
93421                                                         the-struct_0)
93422                                                        (root-expand-context/inner-module-scopes
93423                                                         the-struct_0)
93424                                                        (root-expand-context/inner-top-level-bind-scope
93425                                                         the-struct_0)
93426                                                        (root-expand-context/inner-all-scopes-stx
93427                                                         the-struct_0)
93428                                                        (root-expand-context/inner-defined-syms
93429                                                         the-struct_0)
93430                                                        (root-expand-context/inner-counter
93431                                                         the-struct_0)
93432                                                        (root-expand-context/inner-lift-key
93433                                                         the-struct_0)
93434                                                        (expand-context/inner-to-parsed?
93435                                                         the-struct_0)
93436                                                        phase_0
93437                                                        namespace592_0
93438                                                        (expand-context/inner-just-once?
93439                                                         the-struct_0)
93440                                                        (expand-context/inner-module-begin-k
93441                                                         the-struct_0)
93442                                                        (expand-context/inner-allow-unbound?
93443                                                         the-struct_0)
93444                                                        (expand-context/inner-in-local-expand?
93445                                                         the-struct_0)
93446                                                        (|expand-context/inner-keep-#%expression?|
93447                                                         the-struct_0)
93448                                                        (expand-context/inner-stops
93449                                                         the-struct_0)
93450                                                        declared-submodule-names91_0
93451                                                        (expand-context/inner-lifts
93452                                                         the-struct_0)
93453                                                        (expand-context/inner-lift-envs
93454                                                         the-struct_0)
93455                                                        (expand-context/inner-module-lifts
93456                                                         the-struct_0)
93457                                                        (expand-context/inner-require-lifts
93458                                                         the-struct_0)
93459                                                        (expand-context/inner-to-module-lifts
93460                                                         the-struct_0)
93461                                                        requires-and-provides90_0
93462                                                        (expand-context/inner-observer
93463                                                         the-struct_0)
93464                                                        (expand-context/inner-for-serializable?
93465                                                         the-struct_0)
93466                                                        (expand-context/inner-to-correlated-linklet?
93467                                                         the-struct_0)
93468                                                        (expand-context/inner-normalize-locals?
93469                                                         the-struct_0)
93470                                                        (expand-context/inner-parsing-expanded?
93471                                                         the-struct_0)
93472                                                        (expand-context/inner-skip-visit-available?
93473                                                         the-struct_0)))
93474                                                     (raise-argument-error
93475                                                      'struct-copy
93476                                                      "expand-context/inner?"
93477                                                      the-struct_0))))
93478                                              (expand-context/outer1.1
93479                                               inner590_0
93480                                               (root-expand-context/outer-post-expansion
93481                                                ctx95_0)
93482                                               (root-expand-context/outer-use-site-scopes
93483                                                ctx95_0)
93484                                               (root-expand-context/outer-frame-id
93485                                                ctx95_0)
93486                                               'top-level
93487                                               (expand-context/outer-env
93488                                                ctx95_0)
93489                                               (expand-context/outer-scopes
93490                                                ctx95_0)
93491                                               (expand-context/outer-def-ctx-scopes
93492                                                ctx95_0)
93493                                               (expand-context/outer-binding-layer
93494                                                ctx95_0)
93495                                               (expand-context/outer-reference-records
93496                                                ctx95_0)
93497                                               (expand-context/outer-only-immediate?
93498                                                ctx95_0)
93499                                               (expand-context/outer-need-eventually-defined
93500                                                ctx95_0)
93501                                               (expand-context/outer-current-introduction-scopes
93502                                                ctx95_0)
93503                                               (expand-context/outer-current-use-scopes
93504                                                ctx95_0)
93505                                               (expand-context/outer-name
93506                                                ctx95_0))))
93507                                          (raise-argument-error
93508                                           'struct-copy
93509                                           "expand-context/outer?"
93510                                           ctx95_0))))
93511                                     (case-lambda
93512                                      ((track-stxes_0 specs_0)
93513                                       (if (begin-unsafe
93514                                            (expand-context/inner-to-parsed?
93515                                             (root-expand-context/outer-inner
93516                                              ctx95_0)))
93517                                         (loop_0 (cdr bodys_0) phase_0)
93518                                         (let ((new-s_0
93519                                                (syntax-track-origin*
93520                                                 track-stxes_0
93521                                                 (let ((temp596_0
93522                                                        (list*
93523                                                         |#%provide585_0|
93524                                                         specs_0)))
93525                                                   (rebuild.1
93526                                                    #t
93527                                                    body_0
93528                                                    temp596_0)))))
93529                                           (begin
93530                                             (let ((obs_0
93531                                                    (begin-unsafe
93532                                                     (expand-context/inner-observer
93533                                                      (root-expand-context/outer-inner
93534                                                       ctx95_0)))))
93535                                               (if obs_0
93536                                                 (call-expand-observe
93537                                                  obs_0
93538                                                  'exit-prim
93539                                                  new-s_0)
93540                                                 (void)))
93541                                             (cons
93542                                              new-s_0
93543                                              (loop_0
93544                                               (cdr bodys_0)
93545                                               phase_0))))))
93546                                      (args
93547                                       (raise-binding-result-arity-error
93548                                        2
93549                                        args)))))
93550                                   (args
93551                                    (raise-binding-result-arity-error
93552                                     3
93553                                     args)))))
93554                               (begin
93555                                 (let ((obs_0
93556                                        (begin-unsafe
93557                                         (expand-context/inner-observer
93558                                          (root-expand-context/outer-inner
93559                                           ctx95_0)))))
93560                                   (if obs_0
93561                                     (call-expand-observe obs_0 'next)
93562                                     (void)))
93563                                 (cons
93564                                  body_0
93565                                  (loop_0 (cdr bodys_0) phase_0))))))))))))))
93566            (loop_0 expression-expanded-bodys102_0 phase93_0))
93567           (if log-performance? (end-performance-region) (void))))))))
93568(define declare-module-for-expansion.1
93569  (|#%name|
93570   declare-module-for-expansion
93571   (lambda (ctx111_0
93572            enclosing109_0
93573            fill113_0
93574            module-name-id104_0
93575            modules-being-compiled112_0
93576            namespace107_0
93577            rebuild-s105_0
93578            requires-and-provides106_0
93579            root-ctx110_0
93580            self108_0
93581            fully-expanded-bodys-except-post-submodules124_0)
93582     (begin
93583       (call-with-values
93584        (lambda ()
93585          (extract-requires-and-provides
93586           requires-and-provides106_0
93587           self108_0
93588           self108_0))
93589        (case-lambda
93590         ((requires_0 provides_0)
93591          (let ((parsed-mod_0
93592                 (let ((app_0
93593                        (requires+provides-all-bindings-simple?
93594                         requires-and-provides106_0)))
93595                   (let ((app_1
93596                          (root-expand-context-encode-for-module
93597                           root-ctx110_0
93598                           self108_0
93599                           self108_0)))
93600                     (let ((app_2
93601                            (parsed-only
93602                             fully-expanded-bodys-except-post-submodules124_0)))
93603                       (parsed-module25.1
93604                        rebuild-s105_0
93605                        #f
93606                        module-name-id104_0
93607                        self108_0
93608                        requires_0
93609                        provides_0
93610                        app_0
93611                        app_1
93612                        app_2
93613                        #f
93614                        (hasheq)))))))
93615            (let ((module-name_0
93616                   (1/module-path-index-resolve
93617                    (if enclosing109_0 enclosing109_0 self108_0))))
93618              (let ((compiled-module_0
93619                     (let ((temp598_0
93620                            (let ((temp605_0
93621                                   (if enclosing109_0
93622                                     (1/resolved-module-path-name
93623                                      module-name_0)
93624                                     #f)))
93625                              (make-compile-context.1
93626                               temp605_0
93627                               unsafe-undefined
93628                               enclosing109_0
93629                               namespace107_0
93630                               unsafe-undefined
93631                               unsafe-undefined))))
93632                       (let ((temp599_0
93633                              (begin-unsafe
93634                               (expand-context/inner-for-serializable?
93635                                (root-expand-context/outer-inner ctx111_0)))))
93636                         (let ((temp600_0
93637                                (begin-unsafe
93638                                 (expand-context/inner-to-correlated-linklet?
93639                                  (root-expand-context/outer-inner
93640                                   ctx111_0)))))
93641                           (let ((temp599_1 temp599_0) (temp598_1 temp598_0))
93642                             (compile-module.1
93643                              #f
93644                              modules-being-compiled112_0
93645                              #f
93646                              temp599_1
93647                              temp600_0
93648                              parsed-mod_0
93649                              temp598_1)))))))
93650                (begin
93651                  (set-box! fill113_0 compiled-module_0)
93652                  (let ((root-module-name_0
93653                         (resolved-module-path-root-name module-name_0)))
93654                    (with-continuation-mark*
93655                     authentic
93656                     parameterization-key
93657                     (let ((app_0
93658                            (continuation-mark-set-first
93659                             #f
93660                             parameterization-key)))
93661                       (extend-parameterization
93662                        app_0
93663                        1/current-namespace
93664                        namespace107_0
93665                        1/current-module-declare-name
93666                        (1/make-resolved-module-path root-module-name_0)))
93667                     (eval-module.1
93668                      unsafe-undefined
93669                      #f
93670                      #f
93671                      compiled-module_0))))))))
93672         (args (raise-binding-result-arity-error 2 args))))))))
93673(define attach-root-expand-context-properties
93674  (lambda (s_0 root-ctx_0 orig-self_0 new-self_0)
93675    (let ((s_1
93676           (syntax-property$1
93677            s_0
93678            'module-body-context
93679            (begin-unsafe
93680             (root-expand-context/inner-all-scopes-stx
93681              (root-expand-context/outer-inner root-ctx_0))))))
93682      (let ((s_2
93683             (syntax-property$1
93684              s_1
93685              'module-body-inside-context
93686              (apply-post-expansion
93687               (begin-unsafe
93688                (root-expand-context/outer-post-expansion root-ctx_0))
93689               empty-syntax))))
93690        s_2))))
93691(define expand-post-submodules.1
93692  (|#%name|
93693   expand-post-submodules
93694   (lambda (all-scopes-s131_0
93695            compiled-submodules134_0
93696            ctx136_0
93697            declare-enclosing126_0
93698            declared-submodule-names133_0
93699            enclosing-is-cross-phase-persistent?130_0
93700            modules-being-compiled135_0
93701            mpis-to-reset132_0
93702            phase127_0
93703            requires-and-provides129_0
93704            self128_0
93705            fully-expanded-bodys-except-post-submodules148_0)
93706     (begin
93707       (letrec*
93708        ((loop_0
93709          (|#%name|
93710           loop
93711           (lambda (bodys_0 phase_0)
93712             (begin
93713               (if (null? bodys_0)
93714                 null
93715                 (let ((body_0 (car bodys_0)))
93716                   (let ((rest-bodys_0 (cdr bodys_0)))
93717                     (if (semi-parsed-begin-for-syntax? body_0)
93718                       (let ((body-s_0
93719                              (semi-parsed-begin-for-syntax-s body_0)))
93720                         (begin
93721                           (let ((obs_0
93722                                  (begin-unsafe
93723                                   (expand-context/inner-observer
93724                                    (root-expand-context/outer-inner
93725                                     ctx136_0)))))
93726                             (if obs_0
93727                               (call-expand-observe
93728                                obs_0
93729                                'enter-begin-for-syntax)
93730                               (void)))
93731                           (call-with-values
93732                            (lambda ()
93733                              (call-with-values
93734                               (lambda ()
93735                                 (let ((s_0
93736                                        (if (syntax?$1 body-s_0)
93737                                          (syntax-e$1 body-s_0)
93738                                          body-s_0)))
93739                                   (if (pair? s_0)
93740                                     (let ((begin-for-syntax610_0
93741                                            (let ((s_1 (car s_0))) s_1)))
93742                                       (let ((_0
93743                                              (let ((s_1 (cdr s_0)))
93744                                                (let ((s_2
93745                                                       (if (syntax?$1 s_1)
93746                                                         (syntax-e$1 s_1)
93747                                                         s_1)))
93748                                                  (let ((flat-s_0
93749                                                         (to-syntax-list.1
93750                                                          s_2)))
93751                                                    (if (not flat-s_0)
93752                                                      (raise-syntax-error$1
93753                                                       #f
93754                                                       "bad syntax"
93755                                                       body-s_0)
93756                                                      flat-s_0))))))
93757                                         (let ((begin-for-syntax610_1
93758                                                begin-for-syntax610_0))
93759                                           (values begin-for-syntax610_1 _0))))
93760                                     (raise-syntax-error$1
93761                                      #f
93762                                      "bad syntax"
93763                                      body-s_0))))
93764                               (case-lambda
93765                                ((begin-for-syntax608_0 _0)
93766                                 (values #t begin-for-syntax608_0 _0))
93767                                (args
93768                                 (raise-binding-result-arity-error 2 args)))))
93769                            (case-lambda
93770                             ((ok?_0 begin-for-syntax608_0 _0)
93771                              (let ((rebuild-body-s_0
93772                                     (keep-as-needed.1
93773                                      #f
93774                                      #f
93775                                      #f
93776                                      ctx136_0
93777                                      body-s_0)))
93778                                (let ((nested-bodys_0
93779                                       (loop_0
93780                                        (semi-parsed-begin-for-syntax-body
93781                                         body_0)
93782                                        (add1 phase_0))))
93783                                  (let ((parsed-bfs_0
93784                                         (parsed-begin-for-syntax21.1
93785                                          rebuild-body-s_0
93786                                          (parsed-only nested-bodys_0))))
93787                                    (begin
93788                                      (let ((obs_0
93789                                             (begin-unsafe
93790                                              (expand-context/inner-observer
93791                                               (root-expand-context/outer-inner
93792                                                ctx136_0)))))
93793                                        (if obs_0
93794                                          (call-expand-observe
93795                                           obs_0
93796                                           'exit-begin-for-syntax)
93797                                          (void)))
93798                                      (let ((app_0
93799                                             (if (begin-unsafe
93800                                                  (expand-context/inner-to-parsed?
93801                                                   (root-expand-context/outer-inner
93802                                                    ctx136_0)))
93803                                               parsed-bfs_0
93804                                               (expanded+parsed1.1
93805                                                (let ((temp615_0
93806                                                       (list*
93807                                                        begin-for-syntax608_0
93808                                                        (syntax-only
93809                                                         nested-bodys_0))))
93810                                                  (rebuild.1
93811                                                   #t
93812                                                   rebuild-body-s_0
93813                                                   temp615_0))
93814                                                parsed-bfs_0))))
93815                                        (cons
93816                                         app_0
93817                                         (loop_0 rest-bodys_0 phase_0))))))))
93818                             (args
93819                              (raise-binding-result-arity-error 3 args))))))
93820                       (if (let ((or-part_0 (parsed? body_0)))
93821                             (if or-part_0
93822                               or-part_0
93823                               (expanded+parsed? body_0)))
93824                         (begin
93825                           (let ((obs_0
93826                                  (begin-unsafe
93827                                   (expand-context/inner-observer
93828                                    (root-expand-context/outer-inner
93829                                     ctx136_0)))))
93830                             (if obs_0
93831                               (call-expand-observe obs_0 'next)
93832                               (void)))
93833                           (cons body_0 (loop_0 rest-bodys_0 phase_0)))
93834                         (let ((tmp_0 (core-form-sym body_0 phase_0)))
93835                           (if (eq? tmp_0 'module*)
93836                             (begin
93837                               (force declare-enclosing126_0)
93838                               (let ((ready-body_0
93839                                      (remove-use-site-scopes
93840                                       body_0
93841                                       ctx136_0)))
93842                                 (call-with-values
93843                                  (lambda ()
93844                                    (if (let ((s_0
93845                                               (if (syntax?$1 body_0)
93846                                                 (syntax-e$1 body_0)
93847                                                 body_0)))
93848                                          (if (pair? s_0)
93849                                            (if (let ((s_1 (car s_0))) #t)
93850                                              (let ((s_1 (cdr s_0)))
93851                                                (let ((s_2
93852                                                       (if (syntax?$1 s_1)
93853                                                         (syntax-e$1 s_1)
93854                                                         s_1)))
93855                                                  (if (pair? s_2)
93856                                                    (if (let ((s_3 (car s_2)))
93857                                                          #t)
93858                                                      (let ((s_3 (cdr s_2)))
93859                                                        (let ((s_4
93860                                                               (if (syntax?$1
93861                                                                    s_3)
93862                                                                 (syntax-e$1
93863                                                                  s_3)
93864                                                                 s_3)))
93865                                                          (if (pair? s_4)
93866                                                            (if (let ((s_5
93867                                                                       (car
93868                                                                        s_4)))
93869                                                                  (let ((s_6
93870                                                                         (if (syntax?$1
93871                                                                              s_5)
93872                                                                           (syntax-e$1
93873                                                                            s_5)
93874                                                                           s_5)))
93875                                                                    (eq?
93876                                                                     #f
93877                                                                     s_6)))
93878                                                              (let ((s_5
93879                                                                     (cdr
93880                                                                      s_4)))
93881                                                                #t)
93882                                                              #f)
93883                                                            #f)))
93884                                                      #f)
93885                                                    #f)))
93886                                              #f)
93887                                            #f))
93888                                      (call-with-values
93889                                       (lambda ()
93890                                         (let ((s_0
93891                                                (if (syntax?$1 body_0)
93892                                                  (syntax-e$1 body_0)
93893                                                  body_0)))
93894                                           (let ((module*619_0
93895                                                  (let ((s_1 (car s_0))) s_1)))
93896                                             (call-with-values
93897                                              (lambda ()
93898                                                (let ((s_1 (cdr s_0)))
93899                                                  (let ((s_2
93900                                                         (if (syntax?$1 s_1)
93901                                                           (syntax-e$1 s_1)
93902                                                           s_1)))
93903                                                    (let ((name622_0
93904                                                           (let ((s_3
93905                                                                  (car s_2)))
93906                                                             s_3)))
93907                                                      (let ((_0
93908                                                             (let ((s_3
93909                                                                    (cdr s_2)))
93910                                                               (let ((s_4
93911                                                                      (if (syntax?$1
93912                                                                           s_3)
93913                                                                        (syntax-e$1
93914                                                                         s_3)
93915                                                                        s_3)))
93916                                                                 (call-with-values
93917                                                                  (lambda ()
93918                                                                    (let ((s_5
93919                                                                           (car
93920                                                                            s_4)))
93921                                                                      (let ((s_6
93922                                                                             (if (syntax?$1
93923                                                                                  s_5)
93924                                                                               (syntax-e$1
93925                                                                                s_5)
93926                                                                               s_5)))
93927                                                                        (values))))
93928                                                                  (case-lambda
93929                                                                   (()
93930                                                                    (let ((_0
93931                                                                           (let ((s_5
93932                                                                                  (cdr
93933                                                                                   s_4)))
93934                                                                             s_5)))
93935                                                                      (let ()
93936                                                                        (values
93937                                                                         _0))))
93938                                                                   (args
93939                                                                    (raise-binding-result-arity-error
93940                                                                     0
93941                                                                     args))))))))
93942                                                        (let ((name622_1
93943                                                               name622_0))
93944                                                          (values
93945                                                           name622_1
93946                                                           _0)))))))
93947                                              (case-lambda
93948                                               ((name620_0 _0)
93949                                                (let ((module*619_1
93950                                                       module*619_0))
93951                                                  (values
93952                                                   module*619_1
93953                                                   name620_0
93954                                                   _0)))
93955                                               (args
93956                                                (raise-binding-result-arity-error
93957                                                 2
93958                                                 args)))))))
93959                                       (case-lambda
93960                                        ((module*616_0 name617_0 _0)
93961                                         (values #t module*616_0 name617_0 _0))
93962                                        (args
93963                                         (raise-binding-result-arity-error
93964                                          3
93965                                          args))))
93966                                      (values #f #f #f #f)))
93967                                  (case-lambda
93968                                   ((ok?_0 module*616_0 name617_0 _0)
93969                                    (let ((submod_0
93970                                           (if ok?_0
93971                                             (let ((neg-phase_0
93972                                                    (phase- 0 phase_0)))
93973                                               (let ((shifted-s_0
93974                                                      (syntax-shift-phase-level$1
93975                                                       ready-body_0
93976                                                       neg-phase_0)))
93977                                                 (let ((submod_0
93978                                                        (expand-submodule.1
93979                                                         compiled-submodules134_0
93980                                                         declared-submodule-names133_0
93981                                                         enclosing-is-cross-phase-persistent?130_0
93982                                                         requires-and-provides129_0
93983                                                         #t
93984                                                         neg-phase_0
93985                                                         modules-being-compiled135_0
93986                                                         mpis-to-reset132_0
93987                                                         shifted-s_0
93988                                                         self128_0
93989                                                         ctx136_0)))
93990                                                   (if (parsed? submod_0)
93991                                                     submod_0
93992                                                     (if (expanded+parsed?
93993                                                          submod_0)
93994                                                       (if (expanded+parsed?
93995                                                            submod_0)
93996                                                         (let ((s636_0
93997                                                                (syntax-shift-phase-level$1
93998                                                                 (expanded+parsed-s
93999                                                                  submod_0)
94000                                                                 phase_0)))
94001                                                           (expanded+parsed1.1
94002                                                            s636_0
94003                                                            (expanded+parsed-parsed
94004                                                             submod_0)))
94005                                                         (raise-argument-error
94006                                                          'struct-copy
94007                                                          "expanded+parsed?"
94008                                                          submod_0))
94009                                                       (syntax-shift-phase-level$1
94010                                                        submod_0
94011                                                        phase_0))))))
94012                                             (expand-submodule.1
94013                                              compiled-submodules134_0
94014                                              declared-submodule-names133_0
94015                                              #f
94016                                              #f
94017                                              #t
94018                                              #f
94019                                              modules-being-compiled135_0
94020                                              mpis-to-reset132_0
94021                                              ready-body_0
94022                                              self128_0
94023                                              ctx136_0))))
94024                                      (cons
94025                                       submod_0
94026                                       (loop_0 rest-bodys_0 phase_0))))
94027                                   (args
94028                                    (raise-binding-result-arity-error
94029                                     4
94030                                     args))))))
94031                             (begin
94032                               (let ((obs_0
94033                                      (begin-unsafe
94034                                       (expand-context/inner-observer
94035                                        (root-expand-context/outer-inner
94036                                         ctx136_0)))))
94037                                 (if obs_0
94038                                   (call-expand-observe obs_0 'next)
94039                                   (void)))
94040                               (cons
94041                                body_0
94042                                (loop_0 rest-bodys_0 phase_0)))))))))))))))
94043        (loop_0
94044         fully-expanded-bodys-except-post-submodules148_0
94045         phase127_0))))))
94046(define stop-at-module*?
94047  (lambda (ctx_0)
94048    (free-id-set-member?
94049     (begin-unsafe
94050      (expand-context/inner-stops (root-expand-context/outer-inner ctx_0)))
94051     (begin-unsafe
94052      (expand-context/inner-phase (root-expand-context/outer-inner ctx_0)))
94053     (syntax-shift-phase-level$1
94054      (datum->syntax$1 core-stx 'module*)
94055      (begin-unsafe
94056       (expand-context/inner-phase
94057        (root-expand-context/outer-inner ctx_0)))))))
94058(define check-ids-unbound.1
94059  (|#%name|
94060   check-ids-unbound
94061   (lambda (in150_0 ids152_0 phase153_0 requires+provides154_0)
94062     (begin
94063       (begin
94064         (begin
94065           (letrec*
94066            ((for-loop_0
94067              (|#%name|
94068               for-loop
94069               (lambda (lst_0)
94070                 (begin
94071                   (if (pair? lst_0)
94072                     (let ((id_0 (unsafe-car lst_0)))
94073                       (let ((rest_0 (unsafe-cdr lst_0)))
94074                         (begin
94075                           (check-not-defined.1
94076                            #f
94077                            #f
94078                            #f
94079                            in150_0
94080                            #f
94081                            #f
94082                            'module
94083                            requires+provides154_0
94084                            id_0
94085                            phase153_0
94086                            #f)
94087                           (for-loop_0 rest_0))))
94088                     (values)))))))
94089            (for-loop_0 ids152_0)))
94090         (void))))))
94091(define eval-nested-bodys
94092  (lambda (bodys_0 phase_0 m-ns_0 self_0 ctx_0)
94093    (begin
94094      (begin
94095        (letrec*
94096         ((for-loop_0
94097           (|#%name|
94098            for-loop
94099            (lambda (lst_0)
94100              (begin
94101                (if (pair? lst_0)
94102                  (let ((body_0 (unsafe-car lst_0)))
94103                    (let ((rest_0 (unsafe-cdr lst_0)))
94104                      (begin
94105                        (let ((p_0
94106                               (if (expanded+parsed? body_0)
94107                                 (expanded+parsed-parsed body_0)
94108                                 body_0)))
94109                          (if (parsed-define-values? p_0)
94110                            (let ((syms_0 (parsed-define-values-syms p_0)))
94111                              (let ((ids_0 (parsed-define-values-ids p_0)))
94112                                (begin
94113                                  (let ((temp653_0
94114                                         (parsed-define-values-rhs p_0)))
94115                                    (let ((temp657_0
94116                                           (lambda (go_0)
94117                                             (call-with-module-prompt/value-list
94118                                              'define
94119                                              go_0
94120                                              ids_0
94121                                              (lambda (vals_0)
94122                                                (begin
94123                                                  (begin
94124                                                    (letrec*
94125                                                     ((for-loop_1
94126                                                       (|#%name|
94127                                                        for-loop
94128                                                        (lambda (lst_1 lst_2)
94129                                                          (begin
94130                                                            (if (if (pair?
94131                                                                     lst_1)
94132                                                                  (pair? lst_2)
94133                                                                  #f)
94134                                                              (let ((sym_0
94135                                                                     (unsafe-car
94136                                                                      lst_1)))
94137                                                                (let ((rest_1
94138                                                                       (unsafe-cdr
94139                                                                        lst_1)))
94140                                                                  (let ((val_0
94141                                                                         (unsafe-car
94142                                                                          lst_2)))
94143                                                                    (let ((rest_2
94144                                                                           (unsafe-cdr
94145                                                                            lst_2)))
94146                                                                      (begin
94147                                                                        (namespace-set-variable!
94148                                                                         m-ns_0
94149                                                                         phase_0
94150                                                                         sym_0
94151                                                                         val_0)
94152                                                                        (for-loop_1
94153                                                                         rest_1
94154                                                                         rest_2))))))
94155                                                              (values)))))))
94156                                                     (for-loop_1
94157                                                      syms_0
94158                                                      vals_0)))
94159                                                  (void)))))))
94160                                      (eval-for-bindings.1
94161                                       temp657_0
94162                                       'define-values
94163                                       ids_0
94164                                       temp653_0
94165                                       phase_0
94166                                       m-ns_0
94167                                       ctx_0)))
94168                                  (begin
94169                                    (letrec*
94170                                     ((for-loop_1
94171                                       (|#%name|
94172                                        for-loop
94173                                        (lambda (lst_1)
94174                                          (begin
94175                                            (if (pair? lst_1)
94176                                              (let ((sym_0 (unsafe-car lst_1)))
94177                                                (let ((rest_1
94178                                                       (unsafe-cdr lst_1)))
94179                                                  (begin
94180                                                    (namespace-get-variable
94181                                                     m-ns_0
94182                                                     phase_0
94183                                                     sym_0
94184                                                     (lambda ()
94185                                                       (raise
94186                                                        (let ((app_0
94187                                                               (string-append
94188                                                                "define-values: skipped variable definition during expansion\n"
94189                                                                "  variable: "
94190                                                                (symbol->string
94191                                                                 sym_0))))
94192                                                          (|#%app|
94193                                                           exn:fail:contract:variable
94194                                                           app_0
94195                                                           (current-continuation-marks)
94196                                                           sym_0)))))
94197                                                    (for-loop_1 rest_1))))
94198                                              (values)))))))
94199                                     (for-loop_1 syms_0)))
94200                                  (void))))
94201                            (if (let ((or-part_0
94202                                       (parsed-define-syntaxes? p_0)))
94203                                  (if or-part_0
94204                                    or-part_0
94205                                    (semi-parsed-begin-for-syntax? p_0)))
94206                              (void)
94207                              (if (let ((or-part_0 (|parsed-#%declare?| p_0)))
94208                                    (if or-part_0 or-part_0 (syntax?$1 p_0)))
94209                                (void)
94210                                (with-continuation-mark*
94211                                 push-authentic
94212                                 parameterization-key
94213                                 (extend-parameterization
94214                                  (continuation-mark-set-first
94215                                   #f
94216                                   parameterization-key)
94217                                  1/current-namespace
94218                                  m-ns_0)
94219                                 (with-continuation-mark*
94220                                  authentic
94221                                  current-expand-context
94222                                  ctx_0
94223                                  (let ((c_0
94224                                         (compile-single
94225                                          p_0
94226                                          (make-compile-context.1
94227                                           #f
94228                                           unsafe-undefined
94229                                           #f
94230                                           m-ns_0
94231                                           phase_0
94232                                           unsafe-undefined))))
94233                                    (1/call-with-module-prompt
94234                                     (lambda ()
94235                                       (eval-single-top c_0 m-ns_0))))))))))
94236                        (for-loop_0 rest_0))))
94237                  (values)))))))
94238         (for-loop_0 bodys_0)))
94239      (void))))
94240(define expand-submodule.1
94241  (|#%name|
94242   expand-submodule
94243   (lambda (compiled-submodules162_0
94244            declared-submodule-names161_0
94245            enclosing-is-cross-phase-persistent?159_0
94246            enclosing-requires+provides158_0
94247            is-star?156_0
94248            keep-enclosing-scope-at-phase157_0
94249            modules-being-compiled163_0
94250            mpis-to-reset160_0
94251            s172_0
94252            self173_0
94253            ctx174_0)
94254     (begin
94255       (begin
94256         (let ((obs_0
94257                (begin-unsafe
94258                 (expand-context/inner-observer
94259                  (root-expand-context/outer-inner ctx174_0)))))
94260           (if obs_0
94261             (begin
94262               (call-expand-observe obs_0 'enter-prim s172_0)
94263               (call-expand-observe
94264                obs_0
94265                (if is-star?156_0 'prim-submodule* 'prim-submodule)
94266                #f))
94267             (void)))
94268         (call-with-values
94269          (lambda ()
94270            (call-with-values
94271             (lambda ()
94272               (let ((s_0 (if (syntax?$1 s172_0) (syntax-e$1 s172_0) s172_0)))
94273                 (if (pair? s_0)
94274                   (let ((module663_0 (let ((s_1 (car s_0))) s_1)))
94275                     (call-with-values
94276                      (lambda ()
94277                        (let ((s_1 (cdr s_0)))
94278                          (let ((s_2
94279                                 (if (syntax?$1 s_1) (syntax-e$1 s_1) s_1)))
94280                            (if (pair? s_2)
94281                              (let ((name666_0 (let ((s_3 (car s_2))) s_3)))
94282                                (let ((_0 (let ((s_3 (cdr s_2))) s_3)))
94283                                  (let ((name666_1 name666_0))
94284                                    (values name666_1 _0))))
94285                              (raise-syntax-error$1 #f "bad syntax" s172_0)))))
94286                      (case-lambda
94287                       ((name664_0 _0)
94288                        (let ((module663_1 module663_0))
94289                          (values module663_1 name664_0 _0)))
94290                       (args (raise-binding-result-arity-error 2 args)))))
94291                   (raise-syntax-error$1 #f "bad syntax" s172_0))))
94292             (case-lambda
94293              ((module660_0 name661_0 _0) (values #t module660_0 name661_0 _0))
94294              (args (raise-binding-result-arity-error 3 args)))))
94295          (case-lambda
94296           ((ok?_0 module660_0 name661_0 _0)
94297            (let ((name_0 (syntax-e$1 name661_0)))
94298              (begin
94299                (if (hash-ref declared-submodule-names161_0 name_0 #f)
94300                  (raise-syntax-error$1
94301                   #f
94302                   "submodule already declared with the same name"
94303                   s172_0
94304                   name_0)
94305                  (void))
94306                (begin
94307                  (hash-set!
94308                   declared-submodule-names161_0
94309                   name_0
94310                   (syntax-e$1 module660_0))
94311                  (begin
94312                    (let ((obs_0
94313                           (begin-unsafe
94314                            (expand-context/inner-observer
94315                             (root-expand-context/outer-inner ctx174_0)))))
94316                      (if obs_0
94317                        (call-expand-observe obs_0 'enter-prim s172_0)
94318                        (void)))
94319                    (let ((submod_0
94320                           (let ((temp669_0
94321                                  (if (expand-context/outer? ctx174_0)
94322                                    (let ((the-struct_0
94323                                           (root-expand-context/outer-inner
94324                                            ctx174_0)))
94325                                      (let ((inner679_0
94326                                             (if (expand-context/inner?
94327                                                  the-struct_0)
94328                                               (expand-context/inner2.1
94329                                                (root-expand-context/inner-self-mpi
94330                                                 the-struct_0)
94331                                                (root-expand-context/inner-module-scopes
94332                                                 the-struct_0)
94333                                                (root-expand-context/inner-top-level-bind-scope
94334                                                 the-struct_0)
94335                                                (root-expand-context/inner-all-scopes-stx
94336                                                 the-struct_0)
94337                                                (root-expand-context/inner-defined-syms
94338                                                 the-struct_0)
94339                                                (root-expand-context/inner-counter
94340                                                 the-struct_0)
94341                                                (root-expand-context/inner-lift-key
94342                                                 the-struct_0)
94343                                                (expand-context/inner-to-parsed?
94344                                                 the-struct_0)
94345                                                (expand-context/inner-phase
94346                                                 the-struct_0)
94347                                                (expand-context/inner-namespace
94348                                                 the-struct_0)
94349                                                (expand-context/inner-just-once?
94350                                                 the-struct_0)
94351                                                (expand-context/inner-module-begin-k
94352                                                 the-struct_0)
94353                                                (expand-context/inner-allow-unbound?
94354                                                 the-struct_0)
94355                                                (expand-context/inner-in-local-expand?
94356                                                 the-struct_0)
94357                                                (|expand-context/inner-keep-#%expression?|
94358                                                 the-struct_0)
94359                                                empty-free-id-set
94360                                                (expand-context/inner-declared-submodule-names
94361                                                 the-struct_0)
94362                                                (expand-context/inner-lifts
94363                                                 the-struct_0)
94364                                                (expand-context/inner-lift-envs
94365                                                 the-struct_0)
94366                                                (expand-context/inner-module-lifts
94367                                                 the-struct_0)
94368                                                (expand-context/inner-require-lifts
94369                                                 the-struct_0)
94370                                                (expand-context/inner-to-module-lifts
94371                                                 the-struct_0)
94372                                                (expand-context/inner-requires+provides
94373                                                 the-struct_0)
94374                                                (expand-context/inner-observer
94375                                                 the-struct_0)
94376                                                (expand-context/inner-for-serializable?
94377                                                 the-struct_0)
94378                                                (expand-context/inner-to-correlated-linklet?
94379                                                 the-struct_0)
94380                                                (expand-context/inner-normalize-locals?
94381                                                 the-struct_0)
94382                                                (expand-context/inner-parsing-expanded?
94383                                                 the-struct_0)
94384                                                (expand-context/inner-skip-visit-available?
94385                                                 the-struct_0))
94386                                               (raise-argument-error
94387                                                'struct-copy
94388                                                "expand-context/inner?"
94389                                                the-struct_0))))
94390                                        (expand-context/outer1.1
94391                                         inner679_0
94392                                         #f
94393                                         (root-expand-context/outer-use-site-scopes
94394                                          ctx174_0)
94395                                         (root-expand-context/outer-frame-id
94396                                          ctx174_0)
94397                                         'module
94398                                         (expand-context/outer-env ctx174_0)
94399                                         (expand-context/outer-scopes ctx174_0)
94400                                         (expand-context/outer-def-ctx-scopes
94401                                          ctx174_0)
94402                                         (expand-context/outer-binding-layer
94403                                          ctx174_0)
94404                                         (expand-context/outer-reference-records
94405                                          ctx174_0)
94406                                         (expand-context/outer-only-immediate?
94407                                          ctx174_0)
94408                                         (expand-context/outer-need-eventually-defined
94409                                          ctx174_0)
94410                                         (expand-context/outer-current-introduction-scopes
94411                                          ctx174_0)
94412                                         (expand-context/outer-current-use-scopes
94413                                          ctx174_0)
94414                                         (expand-context/outer-name
94415                                          ctx174_0))))
94416                                    (raise-argument-error
94417                                     'struct-copy
94418                                     "expand-context/outer?"
94419                                     ctx174_0))))
94420                             (expand-module.1
94421                              #t
94422                              enclosing-is-cross-phase-persistent?159_0
94423                              enclosing-requires+provides158_0
94424                              keep-enclosing-scope-at-phase157_0
94425                              modules-being-compiled163_0
94426                              mpis-to-reset160_0
94427                              s172_0
94428                              temp669_0
94429                              self173_0))))
94430                      (begin
94431                        (let ((obs_0
94432                               (begin-unsafe
94433                                (expand-context/inner-observer
94434                                 (root-expand-context/outer-inner ctx174_0)))))
94435                          (if obs_0
94436                            (call-expand-observe
94437                             obs_0
94438                             'exit-prim
94439                             (extract-syntax submod_0))
94440                            (void)))
94441                        (let ((ns_0
94442                               (begin-unsafe
94443                                (expand-context/inner-namespace
94444                                 (root-expand-context/outer-inner ctx174_0)))))
94445                          (let ((module-name_0
94446                                 (1/module-path-index-resolve self173_0)))
94447                            (let ((root-module-name_0
94448                                   (resolved-module-path-root-name
94449                                    module-name_0)))
94450                              (let ((compiled-submodule_0
94451                                     (let ((temp681_0
94452                                            (if (expanded+parsed? submod_0)
94453                                              (expanded+parsed-parsed submod_0)
94454                                              submod_0)))
94455                                       (let ((temp682_0
94456                                              (let ((temp690_0
94457                                                     (1/resolved-module-path-name
94458                                                      module-name_0)))
94459                                                (make-compile-context.1
94460                                                 temp690_0
94461                                                 unsafe-undefined
94462                                                 self173_0
94463                                                 ns_0
94464                                                 unsafe-undefined
94465                                                 unsafe-undefined))))
94466                                         (let ((temp684_0
94467                                                (begin-unsafe
94468                                                 (expand-context/inner-for-serializable?
94469                                                  (root-expand-context/outer-inner
94470                                                   ctx174_0)))))
94471                                           (let ((temp685_0
94472                                                  (begin-unsafe
94473                                                   (expand-context/inner-to-correlated-linklet?
94474                                                    (root-expand-context/outer-inner
94475                                                     ctx174_0)))))
94476                                             (let ((temp684_1 temp684_0)
94477                                                   (temp682_1 temp682_0)
94478                                                   (temp681_1 temp681_0))
94479                                               (compile-module.1
94480                                                #t
94481                                                modules-being-compiled163_0
94482                                                #f
94483                                                temp684_1
94484                                                temp685_0
94485                                                temp681_1
94486                                                temp682_1))))))))
94487                                (begin
94488                                  (hash-set!
94489                                   compiled-submodules162_0
94490                                   name_0
94491                                   (cons is-star?156_0 compiled-submodule_0))
94492                                  (with-continuation-mark*
94493                                   push-authentic
94494                                   parameterization-key
94495                                   (let ((app_0
94496                                          (continuation-mark-set-first
94497                                           #f
94498                                           parameterization-key)))
94499                                     (extend-parameterization
94500                                      app_0
94501                                      1/current-namespace
94502                                      ns_0
94503                                      1/current-module-declare-name
94504                                      (1/make-resolved-module-path
94505                                       root-module-name_0)))
94506                                   (eval-module.1
94507                                    unsafe-undefined
94508                                    #f
94509                                    #f
94510                                    compiled-submodule_0))
94511                                  (if (not is-star?156_0)
94512                                    submod_0
94513                                    (if (expanded+parsed? submod_0)
94514                                      (if (expanded+parsed? submod_0)
94515                                        (let ((the-struct_0
94516                                               (expanded+parsed-parsed
94517                                                submod_0)))
94518                                          (let ((parsed693_0
94519                                                 (if (parsed-module?
94520                                                      the-struct_0)
94521                                                   (parsed-module25.1
94522                                                    (parsed-s the-struct_0)
94523                                                    #t
94524                                                    (parsed-module-name-id
94525                                                     the-struct_0)
94526                                                    (parsed-module-self
94527                                                     the-struct_0)
94528                                                    (parsed-module-requires
94529                                                     the-struct_0)
94530                                                    (parsed-module-provides
94531                                                     the-struct_0)
94532                                                    (parsed-module-root-ctx-simple?
94533                                                     the-struct_0)
94534                                                    (parsed-module-encoded-root-ctx
94535                                                     the-struct_0)
94536                                                    (parsed-module-body
94537                                                     the-struct_0)
94538                                                    (parsed-module-compiled-module
94539                                                     the-struct_0)
94540                                                    (parsed-module-compiled-submodules
94541                                                     the-struct_0))
94542                                                   (raise-argument-error
94543                                                    'struct-copy
94544                                                    "parsed-module?"
94545                                                    the-struct_0))))
94546                                            (expanded+parsed1.1
94547                                             (expanded+parsed-s submod_0)
94548                                             parsed693_0)))
94549                                        (raise-argument-error
94550                                         'struct-copy
94551                                         "expanded+parsed?"
94552                                         submod_0))
94553                                      (if (parsed-module? submod_0)
94554                                        (parsed-module25.1
94555                                         (parsed-s submod_0)
94556                                         #t
94557                                         (parsed-module-name-id submod_0)
94558                                         (parsed-module-self submod_0)
94559                                         (parsed-module-requires submod_0)
94560                                         (parsed-module-provides submod_0)
94561                                         (parsed-module-root-ctx-simple?
94562                                          submod_0)
94563                                         (parsed-module-encoded-root-ctx
94564                                          submod_0)
94565                                         (parsed-module-body submod_0)
94566                                         (parsed-module-compiled-module
94567                                          submod_0)
94568                                         (parsed-module-compiled-submodules
94569                                          submod_0))
94570                                        (raise-argument-error
94571                                         'struct-copy
94572                                         "parsed-module?"
94573                                         submod_0))))))))))))))))
94574           (args (raise-binding-result-arity-error 4 args)))))))))
94575(define expand-non-module*-submodules.1
94576  (|#%name|
94577   expand-non-module*-submodules
94578   (lambda (compiled-submodules178_0
94579            declared-submodule-names177_0
94580            modules-being-compiled179_0
94581            mpis-to-reset176_0
94582            bodys184_0
94583            phase185_0
94584            self186_0
94585            ctx187_0)
94586     (begin
94587       (reverse$1
94588        (begin
94589          (letrec*
94590           ((for-loop_0
94591             (|#%name|
94592              for-loop
94593              (lambda (fold-var_0 lst_0)
94594                (begin
94595                  (if (pair? lst_0)
94596                    (let ((body_0 (unsafe-car lst_0)))
94597                      (let ((rest_0 (unsafe-cdr lst_0)))
94598                        (let ((fold-var_1
94599                               (let ((fold-var_1
94600                                      (cons
94601                                       (begin
94602                                         (let ((obs_0
94603                                                (begin-unsafe
94604                                                 (expand-context/inner-observer
94605                                                  (root-expand-context/outer-inner
94606                                                   ctx187_0)))))
94607                                           (if obs_0
94608                                             (call-expand-observe obs_0 'next)
94609                                             (void)))
94610                                         (let ((tmp_0
94611                                                (core-form-sym
94612                                                 body_0
94613                                                 phase185_0)))
94614                                           (if (eq? tmp_0 'module)
94615                                             (expand-submodule.1
94616                                              compiled-submodules178_0
94617                                              declared-submodule-names177_0
94618                                              #f
94619                                              #f
94620                                              #f
94621                                              #f
94622                                              modules-being-compiled179_0
94623                                              mpis-to-reset176_0
94624                                              body_0
94625                                              self186_0
94626                                              ctx187_0)
94627                                             body_0)))
94628                                       fold-var_0)))
94629                                 (values fold-var_1))))
94630                          (for-loop_0 fold-var_1 rest_0))))
94631                    fold-var_0))))))
94632           (for-loop_0 null bodys184_0))))))))
94633(define make-parse-lifted-require.1
94634  (|#%name|
94635   make-parse-lifted-require
94636   (lambda (declared-submodule-names189_0
94637            m-ns191_0
94638            self192_0
94639            requires+provides193_0)
94640     (begin
94641       (lambda (s_0 phase_0)
94642         (call-with-values
94643          (lambda ()
94644            (call-with-values
94645             (lambda ()
94646               (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
94647                 (if (pair? s_1)
94648                   (let ((|#%require706_0| (let ((s_2 (car s_1))) s_2)))
94649                     (let ((req707_0
94650                            (let ((s_2 (cdr s_1)))
94651                              (let ((s_3
94652                                     (if (syntax?$1 s_2)
94653                                       (syntax-e$1 s_2)
94654                                       s_2)))
94655                                (if (pair? s_3)
94656                                  (let ((req708_0 (let ((s_4 (car s_3))) s_4)))
94657                                    (call-with-values
94658                                     (lambda ()
94659                                       (let ((s_4 (cdr s_3)))
94660                                         (let ((s_5
94661                                                (if (syntax?$1 s_4)
94662                                                  (syntax-e$1 s_4)
94663                                                  s_4)))
94664                                           (if (null? s_5)
94665                                             (values)
94666                                             (raise-syntax-error$1
94667                                              #f
94668                                              "bad syntax"
94669                                              s_0)))))
94670                                     (case-lambda
94671                                      (()
94672                                       (let ((req708_1 req708_0))
94673                                         (values req708_1)))
94674                                      (args
94675                                       (raise-binding-result-arity-error
94676                                        0
94677                                        args)))))
94678                                  (raise-syntax-error$1
94679                                   #f
94680                                   "bad syntax"
94681                                   s_0))))))
94682                       (let ((|#%require706_1| |#%require706_0|))
94683                         (values |#%require706_1| req707_0))))
94684                   (raise-syntax-error$1 #f "bad syntax" s_0))))
94685             (case-lambda
94686              ((|#%require704_0| req705_0)
94687               (values #t |#%require704_0| req705_0))
94688              (args (raise-binding-result-arity-error 2 args)))))
94689          (case-lambda
94690           ((ok?_0 |#%require704_0| req705_0)
94691            (let ((temp709_0 (list req705_0)))
94692              (parse-and-perform-requires!.1
94693               #f
94694               #f
94695               declared-submodule-names189_0
94696               #f
94697               phase_0
94698               #f
94699               self192_0
94700               #f
94701               #t
94702               'require
94703               temp709_0
94704               s_0
94705               m-ns191_0
94706               phase_0
94707               requires+provides193_0)))
94708           (args (raise-binding-result-arity-error 3 args)))))))))
94709(define defn-extract-syntax
94710  (lambda (defn_0)
94711    (datum->syntax$1
94712     #f
94713     (list
94714      'define-values
94715      (semi-parsed-define-values-ids defn_0)
94716      (semi-parsed-define-values-rhs defn_0))
94717     (semi-parsed-define-values-s defn_0))))
94718(define lifted-defns-extract-syntax
94719  (lambda (lifted-defns_0)
94720    (reverse$1
94721     (begin
94722       (letrec*
94723        ((for-loop_0
94724          (|#%name|
94725           for-loop
94726           (lambda (fold-var_0 lst_0)
94727             (begin
94728               (if (pair? lst_0)
94729                 (let ((lifted-defn_0 (unsafe-car lst_0)))
94730                   (let ((rest_0 (unsafe-cdr lst_0)))
94731                     (let ((fold-var_1
94732                            (let ((fold-var_1
94733                                   (cons
94734                                    (defn-extract-syntax lifted-defn_0)
94735                                    fold-var_0)))
94736                              (values fold-var_1))))
94737                       (for-loop_0 fold-var_1 rest_0))))
94738                 fold-var_0))))))
94739        (for-loop_0 null lifted-defns_0))))))
94740(define as-expand-time-top-level-bindings
94741  (lambda (ids_0 s_0 ctx_0)
94742    (let ((top-level-bind-scope_0
94743           (begin-unsafe
94744            (root-expand-context/inner-top-level-bind-scope
94745             (root-expand-context/outer-inner ctx_0)))))
94746      (let ((tl-ids_0
94747             (reverse$1
94748              (begin
94749                (letrec*
94750                 ((for-loop_0
94751                   (|#%name|
94752                    for-loop
94753                    (lambda (fold-var_0 lst_0)
94754                      (begin
94755                        (if (pair? lst_0)
94756                          (let ((id_0 (unsafe-car lst_0)))
94757                            (let ((rest_0 (unsafe-cdr lst_0)))
94758                              (let ((fold-var_1
94759                                     (let ((fold-var_1
94760                                            (cons
94761                                             (remove-use-site-scopes
94762                                              id_0
94763                                              ctx_0)
94764                                             fold-var_0)))
94765                                       (values fold-var_1))))
94766                                (for-loop_0 fold-var_1 rest_0))))
94767                          fold-var_0))))))
94768                 (for-loop_0 null ids_0))))))
94769        (begin
94770          (let ((temp2_0
94771                 (begin-unsafe
94772                  (expand-context/inner-phase
94773                   (root-expand-context/outer-inner ctx_0)))))
94774            (check-no-duplicate-ids.1
94775             unsafe-undefined
94776             tl-ids_0
94777             temp2_0
94778             s_0
94779             unsafe-undefined))
94780          (let ((tmp-bind-ids_0
94781                 (reverse$1
94782                  (begin
94783                    (letrec*
94784                     ((for-loop_0
94785                       (|#%name|
94786                        for-loop
94787                        (lambda (fold-var_0 lst_0)
94788                          (begin
94789                            (if (pair? lst_0)
94790                              (let ((id_0 (unsafe-car lst_0)))
94791                                (let ((rest_0 (unsafe-cdr lst_0)))
94792                                  (let ((fold-var_1
94793                                         (let ((fold-var_1
94794                                                (cons
94795                                                 (add-scope
94796                                                  id_0
94797                                                  top-level-bind-scope_0)
94798                                                 fold-var_0)))
94799                                           (values fold-var_1))))
94800                                    (for-loop_0 fold-var_1 rest_0))))
94801                              fold-var_0))))))
94802                     (for-loop_0 null tl-ids_0))))))
94803            (values
94804             tl-ids_0
94805             (select-defined-syms-and-bind!/ctx tmp-bind-ids_0 ctx_0))))))))
94806(define effect_3024
94807  (begin
94808    (void
94809     (add-core-form!*
94810      'define-values
94811      (lambda (s_0 ctx_0)
94812        (begin
94813          (let ((obs_0
94814                 (begin-unsafe
94815                  (expand-context/inner-observer
94816                   (root-expand-context/outer-inner ctx_0)))))
94817            (if obs_0
94818              (call-expand-observe obs_0 'prim-define-values s_0)
94819              (void)))
94820          (begin
94821            (if (eq?
94822                 (begin-unsafe (expand-context/outer-context ctx_0))
94823                 'top-level)
94824              (void)
94825              (raise-syntax-error$1
94826               #f
94827               "not allowed in an expression position"
94828               s_0))
94829            (call-with-values
94830             (lambda ()
94831               (call-with-values
94832                (lambda ()
94833                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
94834                    (if (pair? s_1)
94835                      (let ((define-values4_0 (let ((s_2 (car s_1))) s_2)))
94836                        (call-with-values
94837                         (lambda ()
94838                           (let ((s_2 (cdr s_1)))
94839                             (let ((s_3
94840                                    (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
94841                               (if (pair? s_3)
94842                                 (let ((id7_0
94843                                        (let ((s_4 (car s_3)))
94844                                          (let ((s_5
94845                                                 (if (syntax?$1 s_4)
94846                                                   (syntax-e$1 s_4)
94847                                                   s_4)))
94848                                            (let ((flat-s_0
94849                                                   (to-syntax-list.1 s_5)))
94850                                              (if (not flat-s_0)
94851                                                (raise-syntax-error$1
94852                                                 #f
94853                                                 "bad syntax"
94854                                                 s_0)
94855                                                (let ((id_0
94856                                                       (begin
94857                                                         (letrec*
94858                                                          ((for-loop_0
94859                                                            (|#%name|
94860                                                             for-loop
94861                                                             (lambda (id_0
94862                                                                      lst_0)
94863                                                               (begin
94864                                                                 (if (pair?
94865                                                                      lst_0)
94866                                                                   (let ((s_6
94867                                                                          (unsafe-car
94868                                                                           lst_0)))
94869                                                                     (let ((rest_0
94870                                                                            (unsafe-cdr
94871                                                                             lst_0)))
94872                                                                       (let ((id_1
94873                                                                              (let ((id_1
94874                                                                                     (let ((id10_0
94875                                                                                            (if (let ((or-part_0
94876                                                                                                       (if (syntax?$1
94877                                                                                                            s_6)
94878                                                                                                         (symbol?
94879                                                                                                          (syntax-e$1
94880                                                                                                           s_6))
94881                                                                                                         #f)))
94882                                                                                                  (if or-part_0
94883                                                                                                    or-part_0
94884                                                                                                    (symbol?
94885                                                                                                     s_6)))
94886                                                                                              s_6
94887                                                                                              (raise-syntax-error$1
94888                                                                                               #f
94889                                                                                               "not an identifier"
94890                                                                                               s_0
94891                                                                                               s_6))))
94892                                                                                       (cons
94893                                                                                        id10_0
94894                                                                                        id_0))))
94895                                                                                (values
94896                                                                                 id_1))))
94897                                                                         (for-loop_0
94898                                                                          id_1
94899                                                                          rest_0))))
94900                                                                   id_0))))))
94901                                                          (for-loop_0
94902                                                           null
94903                                                           flat-s_0)))))
94904                                                  (reverse$1 id_0))))))))
94905                                   (let ((rhs8_0
94906                                          (let ((s_4 (cdr s_3)))
94907                                            (let ((s_5
94908                                                   (if (syntax?$1 s_4)
94909                                                     (syntax-e$1 s_4)
94910                                                     s_4)))
94911                                              (if (pair? s_5)
94912                                                (let ((rhs9_0
94913                                                       (let ((s_6 (car s_5)))
94914                                                         s_6)))
94915                                                  (call-with-values
94916                                                   (lambda ()
94917                                                     (let ((s_6 (cdr s_5)))
94918                                                       (let ((s_7
94919                                                              (if (syntax?$1
94920                                                                   s_6)
94921                                                                (syntax-e$1
94922                                                                 s_6)
94923                                                                s_6)))
94924                                                         (if (null? s_7)
94925                                                           (values)
94926                                                           (raise-syntax-error$1
94927                                                            #f
94928                                                            "bad syntax"
94929                                                            s_0)))))
94930                                                   (case-lambda
94931                                                    (()
94932                                                     (let ((rhs9_1 rhs9_0))
94933                                                       (values rhs9_1)))
94934                                                    (args
94935                                                     (raise-binding-result-arity-error
94936                                                      0
94937                                                      args)))))
94938                                                (raise-syntax-error$1
94939                                                 #f
94940                                                 "bad syntax"
94941                                                 s_0))))))
94942                                     (let ((id7_1 id7_0))
94943                                       (values id7_1 rhs8_0))))
94944                                 (raise-syntax-error$1 #f "bad syntax" s_0)))))
94945                         (case-lambda
94946                          ((id5_0 rhs6_0)
94947                           (let ((define-values4_1 define-values4_0))
94948                             (values define-values4_1 id5_0 rhs6_0)))
94949                          (args (raise-binding-result-arity-error 2 args)))))
94950                      (raise-syntax-error$1 #f "bad syntax" s_0))))
94951                (case-lambda
94952                 ((define-values1_0 id2_0 rhs3_0)
94953                  (values #t define-values1_0 id2_0 rhs3_0))
94954                 (args (raise-binding-result-arity-error 3 args)))))
94955             (case-lambda
94956              ((ok?_0 define-values1_0 id2_0 rhs3_0)
94957               (call-with-values
94958                (lambda () (as-expand-time-top-level-bindings id2_0 s_0 ctx_0))
94959                (case-lambda
94960                 ((ids_0 syms_0)
94961                  (let ((exp-rhs_0
94962                         (let ((temp12_0
94963                                (as-named-context
94964                                 (as-expression-context ctx_0)
94965                                 ids_0)))
94966                           (expand.1 #f #f rhs3_0 temp12_0))))
94967                    (if (begin-unsafe
94968                         (expand-context/inner-to-parsed?
94969                          (root-expand-context/outer-inner ctx_0)))
94970                      (parsed-define-values19.1 s_0 ids_0 syms_0 exp-rhs_0)
94971                      (let ((temp14_0 (list define-values1_0 ids_0 exp-rhs_0)))
94972                        (rebuild.1 #t s_0 temp14_0)))))
94973                 (args (raise-binding-result-arity-error 2 args)))))
94974              (args (raise-binding-result-arity-error 4 args)))))))))
94975    (void)))
94976(define effect_2886
94977  (begin
94978    (void
94979     (add-core-form!*
94980      'define-syntaxes
94981      (lambda (s_0 ctx_0)
94982        (begin
94983          (let ((obs_0
94984                 (begin-unsafe
94985                  (expand-context/inner-observer
94986                   (root-expand-context/outer-inner ctx_0)))))
94987            (if obs_0
94988              (call-expand-observe obs_0 'prim-define-syntaxes s_0)
94989              (void)))
94990          (begin
94991            (if (eq?
94992                 (begin-unsafe (expand-context/outer-context ctx_0))
94993                 'top-level)
94994              (void)
94995              (raise-syntax-error$1 #f "not in a definition context" s_0))
94996            (call-with-values
94997             (lambda ()
94998               (call-with-values
94999                (lambda ()
95000                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
95001                    (if (pair? s_1)
95002                      (let ((define-syntaxes18_0 (let ((s_2 (car s_1))) s_2)))
95003                        (call-with-values
95004                         (lambda ()
95005                           (let ((s_2 (cdr s_1)))
95006                             (let ((s_3
95007                                    (if (syntax?$1 s_2) (syntax-e$1 s_2) s_2)))
95008                               (if (pair? s_3)
95009                                 (let ((id21_0
95010                                        (let ((s_4 (car s_3)))
95011                                          (let ((s_5
95012                                                 (if (syntax?$1 s_4)
95013                                                   (syntax-e$1 s_4)
95014                                                   s_4)))
95015                                            (let ((flat-s_0
95016                                                   (to-syntax-list.1 s_5)))
95017                                              (if (not flat-s_0)
95018                                                (raise-syntax-error$1
95019                                                 #f
95020                                                 "bad syntax"
95021                                                 s_0)
95022                                                (let ((id_0
95023                                                       (begin
95024                                                         (letrec*
95025                                                          ((for-loop_0
95026                                                            (|#%name|
95027                                                             for-loop
95028                                                             (lambda (id_0
95029                                                                      lst_0)
95030                                                               (begin
95031                                                                 (if (pair?
95032                                                                      lst_0)
95033                                                                   (let ((s_6
95034                                                                          (unsafe-car
95035                                                                           lst_0)))
95036                                                                     (let ((rest_0
95037                                                                            (unsafe-cdr
95038                                                                             lst_0)))
95039                                                                       (let ((id_1
95040                                                                              (let ((id_1
95041                                                                                     (let ((id24_0
95042                                                                                            (if (let ((or-part_0
95043                                                                                                       (if (syntax?$1
95044                                                                                                            s_6)
95045                                                                                                         (symbol?
95046                                                                                                          (syntax-e$1
95047                                                                                                           s_6))
95048                                                                                                         #f)))
95049                                                                                                  (if or-part_0
95050                                                                                                    or-part_0
95051                                                                                                    (symbol?
95052                                                                                                     s_6)))
95053                                                                                              s_6
95054                                                                                              (raise-syntax-error$1
95055                                                                                               #f
95056                                                                                               "not an identifier"
95057                                                                                               s_0
95058                                                                                               s_6))))
95059                                                                                       (cons
95060                                                                                        id24_0
95061                                                                                        id_0))))
95062                                                                                (values
95063                                                                                 id_1))))
95064                                                                         (for-loop_0
95065                                                                          id_1
95066                                                                          rest_0))))
95067                                                                   id_0))))))
95068                                                          (for-loop_0
95069                                                           null
95070                                                           flat-s_0)))))
95071                                                  (reverse$1 id_0))))))))
95072                                   (let ((rhs22_0
95073                                          (let ((s_4 (cdr s_3)))
95074                                            (let ((s_5
95075                                                   (if (syntax?$1 s_4)
95076                                                     (syntax-e$1 s_4)
95077                                                     s_4)))
95078                                              (if (pair? s_5)
95079                                                (let ((rhs23_0
95080                                                       (let ((s_6 (car s_5)))
95081                                                         s_6)))
95082                                                  (call-with-values
95083                                                   (lambda ()
95084                                                     (let ((s_6 (cdr s_5)))
95085                                                       (let ((s_7
95086                                                              (if (syntax?$1
95087                                                                   s_6)
95088                                                                (syntax-e$1
95089                                                                 s_6)
95090                                                                s_6)))
95091                                                         (if (null? s_7)
95092                                                           (values)
95093                                                           (raise-syntax-error$1
95094                                                            #f
95095                                                            "bad syntax"
95096                                                            s_0)))))
95097                                                   (case-lambda
95098                                                    (()
95099                                                     (let ((rhs23_1 rhs23_0))
95100                                                       (values rhs23_1)))
95101                                                    (args
95102                                                     (raise-binding-result-arity-error
95103                                                      0
95104                                                      args)))))
95105                                                (raise-syntax-error$1
95106                                                 #f
95107                                                 "bad syntax"
95108                                                 s_0))))))
95109                                     (let ((id21_1 id21_0))
95110                                       (values id21_1 rhs22_0))))
95111                                 (raise-syntax-error$1 #f "bad syntax" s_0)))))
95112                         (case-lambda
95113                          ((id19_0 rhs20_0)
95114                           (let ((define-syntaxes18_1 define-syntaxes18_0))
95115                             (values define-syntaxes18_1 id19_0 rhs20_0)))
95116                          (args (raise-binding-result-arity-error 2 args)))))
95117                      (raise-syntax-error$1 #f "bad syntax" s_0))))
95118                (case-lambda
95119                 ((define-syntaxes15_0 id16_0 rhs17_0)
95120                  (values #t define-syntaxes15_0 id16_0 rhs17_0))
95121                 (args (raise-binding-result-arity-error 3 args)))))
95122             (case-lambda
95123              ((ok?_0 define-syntaxes15_0 id16_0 rhs17_0)
95124               (call-with-values
95125                (lambda ()
95126                  (as-expand-time-top-level-bindings id16_0 s_0 ctx_0))
95127                (case-lambda
95128                 ((ids_0 syms_0)
95129                  (begin
95130                    (let ((obs_0
95131                           (begin-unsafe
95132                            (expand-context/inner-observer
95133                             (root-expand-context/outer-inner ctx_0)))))
95134                      (if obs_0
95135                        (call-expand-observe obs_0 'prepare-env)
95136                        (void)))
95137                    (let ((exp-rhs_0
95138                           (let ((temp26_0 (as-named-context ctx_0 ids_0)))
95139                             (expand-transformer.1
95140                              #f
95141                              #f
95142                              'expression
95143                              #t
95144                              #f
95145                              unsafe-undefined
95146                              rhs17_0
95147                              temp26_0))))
95148                      (if (begin-unsafe
95149                           (expand-context/inner-to-parsed?
95150                            (root-expand-context/outer-inner ctx_0)))
95151                        (parsed-define-syntaxes20.1 s_0 ids_0 syms_0 exp-rhs_0)
95152                        (let ((temp28_0
95153                               (list define-syntaxes15_0 ids_0 exp-rhs_0)))
95154                          (rebuild.1 #t s_0 temp28_0))))))
95155                 (args (raise-binding-result-arity-error 2 args)))))
95156              (args (raise-binding-result-arity-error 4 args)))))))))
95157    (void)))
95158(define effect_2511
95159  (begin
95160    (void
95161     (add-core-form!*
95162      'begin-for-syntax
95163      (lambda (s_0 ctx_0)
95164        (begin
95165          (let ((obs_0
95166                 (begin-unsafe
95167                  (expand-context/inner-observer
95168                   (root-expand-context/outer-inner ctx_0)))))
95169            (if obs_0
95170              (call-expand-observe obs_0 'prim-begin-for-syntax #f)
95171              (void)))
95172          (begin
95173            (if (eq?
95174                 (begin-unsafe (expand-context/outer-context ctx_0))
95175                 'top-level)
95176              (void)
95177              (raise-syntax-error$1 #f "not in a definition context" s_0))
95178            (call-with-values
95179             (lambda ()
95180               (call-with-values
95181                (lambda ()
95182                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
95183                    (if (pair? s_1)
95184                      (let ((begin-for-syntax31_0 (let ((s_2 (car s_1))) s_2)))
95185                        (let ((form32_0
95186                               (let ((s_2 (cdr s_1)))
95187                                 (let ((s_3
95188                                        (if (syntax?$1 s_2)
95189                                          (syntax-e$1 s_2)
95190                                          s_2)))
95191                                   (let ((flat-s_0 (to-syntax-list.1 s_3)))
95192                                     (if (not flat-s_0)
95193                                       (raise-syntax-error$1
95194                                        #f
95195                                        "bad syntax"
95196                                        s_0)
95197                                       flat-s_0))))))
95198                          (let ((begin-for-syntax31_1 begin-for-syntax31_0))
95199                            (values begin-for-syntax31_1 form32_0))))
95200                      (raise-syntax-error$1 #f "bad syntax" s_0))))
95201                (case-lambda
95202                 ((begin-for-syntax29_0 form30_0)
95203                  (values #t begin-for-syntax29_0 form30_0))
95204                 (args (raise-binding-result-arity-error 2 args)))))
95205             (case-lambda
95206              ((ok?_0 begin-for-syntax29_0 form30_0)
95207               (begin
95208                 (let ((obs_0
95209                        (begin-unsafe
95210                         (expand-context/inner-observer
95211                          (root-expand-context/outer-inner ctx_0)))))
95212                   (if obs_0 (call-expand-observe obs_0 'prepare-env) (void)))
95213                 (let ((trans-ctx_0
95214                        (context->transformer-context.1 #t ctx_0 'top-level)))
95215                   (let ((lift-ctx_0
95216                          (let ((temp36_0 (make-top-level-lift trans-ctx_0)))
95217                            (make-lift-context.1 #f temp36_0))))
95218                     (let ((capture-ctx_0
95219                            (if (expand-context/outer? trans-ctx_0)
95220                              (let ((the-struct_0
95221                                     (root-expand-context/outer-inner
95222                                      trans-ctx_0)))
95223                                (let ((inner37_0
95224                                       (if (expand-context/inner? the-struct_0)
95225                                         (let ((lift-key38_0
95226                                                (generate-lift-key)))
95227                                           (expand-context/inner2.1
95228                                            (root-expand-context/inner-self-mpi
95229                                             the-struct_0)
95230                                            (root-expand-context/inner-module-scopes
95231                                             the-struct_0)
95232                                            (root-expand-context/inner-top-level-bind-scope
95233                                             the-struct_0)
95234                                            (root-expand-context/inner-all-scopes-stx
95235                                             the-struct_0)
95236                                            (root-expand-context/inner-defined-syms
95237                                             the-struct_0)
95238                                            (root-expand-context/inner-counter
95239                                             the-struct_0)
95240                                            lift-key38_0
95241                                            (expand-context/inner-to-parsed?
95242                                             the-struct_0)
95243                                            (expand-context/inner-phase
95244                                             the-struct_0)
95245                                            (expand-context/inner-namespace
95246                                             the-struct_0)
95247                                            (expand-context/inner-just-once?
95248                                             the-struct_0)
95249                                            (expand-context/inner-module-begin-k
95250                                             the-struct_0)
95251                                            (expand-context/inner-allow-unbound?
95252                                             the-struct_0)
95253                                            (expand-context/inner-in-local-expand?
95254                                             the-struct_0)
95255                                            (|expand-context/inner-keep-#%expression?|
95256                                             the-struct_0)
95257                                            (expand-context/inner-stops
95258                                             the-struct_0)
95259                                            (expand-context/inner-declared-submodule-names
95260                                             the-struct_0)
95261                                            lift-ctx_0
95262                                            (expand-context/inner-lift-envs
95263                                             the-struct_0)
95264                                            (expand-context/inner-module-lifts
95265                                             the-struct_0)
95266                                            (expand-context/inner-require-lifts
95267                                             the-struct_0)
95268                                            (expand-context/inner-to-module-lifts
95269                                             the-struct_0)
95270                                            (expand-context/inner-requires+provides
95271                                             the-struct_0)
95272                                            (expand-context/inner-observer
95273                                             the-struct_0)
95274                                            (expand-context/inner-for-serializable?
95275                                             the-struct_0)
95276                                            (expand-context/inner-to-correlated-linklet?
95277                                             the-struct_0)
95278                                            (expand-context/inner-normalize-locals?
95279                                             the-struct_0)
95280                                            (expand-context/inner-parsing-expanded?
95281                                             the-struct_0)
95282                                            (expand-context/inner-skip-visit-available?
95283                                             the-struct_0)))
95284                                         (raise-argument-error
95285                                          'struct-copy
95286                                          "expand-context/inner?"
95287                                          the-struct_0))))
95288                                  (expand-context/outer1.1
95289                                   inner37_0
95290                                   (root-expand-context/outer-post-expansion
95291                                    trans-ctx_0)
95292                                   (root-expand-context/outer-use-site-scopes
95293                                    trans-ctx_0)
95294                                   (root-expand-context/outer-frame-id
95295                                    trans-ctx_0)
95296                                   (expand-context/outer-context trans-ctx_0)
95297                                   (expand-context/outer-env trans-ctx_0)
95298                                   (expand-context/outer-scopes trans-ctx_0)
95299                                   (expand-context/outer-def-ctx-scopes
95300                                    trans-ctx_0)
95301                                   (expand-context/outer-binding-layer
95302                                    trans-ctx_0)
95303                                   (expand-context/outer-reference-records
95304                                    trans-ctx_0)
95305                                   (expand-context/outer-only-immediate?
95306                                    trans-ctx_0)
95307                                   (expand-context/outer-need-eventually-defined
95308                                    trans-ctx_0)
95309                                   (expand-context/outer-current-introduction-scopes
95310                                    trans-ctx_0)
95311                                   (expand-context/outer-current-use-scopes
95312                                    trans-ctx_0)
95313                                   (expand-context/outer-name trans-ctx_0))))
95314                              (raise-argument-error
95315                               'struct-copy
95316                               "expand-context/outer?"
95317                               trans-ctx_0))))
95318                       (let ((all-exp-forms_0
95319                              (letrec*
95320                               ((loop_0
95321                                 (|#%name|
95322                                  loop
95323                                  (lambda (forms_0)
95324                                    (begin
95325                                      (begin
95326                                        (let ((obs_0
95327                                               (begin-unsafe
95328                                                (expand-context/inner-observer
95329                                                 (root-expand-context/outer-inner
95330                                                  ctx_0)))))
95331                                          (if obs_0
95332                                            (call-expand-observe
95333                                             obs_0
95334                                             'enter-list
95335                                             form30_0)
95336                                            (void)))
95337                                        (let ((exp-forms_0
95338                                               (letrec*
95339                                                ((loop_1
95340                                                  (|#%name|
95341                                                   loop
95342                                                   (lambda (forms_1 accum_0)
95343                                                     (begin
95344                                                       (if (null? forms_1)
95345                                                         (let ((forms_2
95346                                                                (reverse$1
95347                                                                 accum_0)))
95348                                                           (begin
95349                                                             (let ((obs_0
95350                                                                    (begin-unsafe
95351                                                                     (expand-context/inner-observer
95352                                                                      (root-expand-context/outer-inner
95353                                                                       ctx_0)))))
95354                                                               (if obs_0
95355                                                                 (call-expand-observe
95356                                                                  obs_0
95357                                                                  'exit-list
95358                                                                  forms_2)
95359                                                                 (void)))
95360                                                             forms_2))
95361                                                         (begin
95362                                                           (let ((obs_0
95363                                                                  (begin-unsafe
95364                                                                   (expand-context/inner-observer
95365                                                                    (root-expand-context/outer-inner
95366                                                                     ctx_0)))))
95367                                                             (if obs_0
95368                                                               (call-expand-observe
95369                                                                obs_0
95370                                                                'next)
95371                                                               (void)))
95372                                                           (let ((exp-form_0
95373                                                                  (let ((temp40_0
95374                                                                         (car
95375                                                                          forms_1)))
95376                                                                    (expand.1
95377                                                                     #f
95378                                                                     #f
95379                                                                     temp40_0
95380                                                                     capture-ctx_0))))
95381                                                             (let ((app_0
95382                                                                    (cdr
95383                                                                     forms_1)))
95384                                                               (loop_1
95385                                                                app_0
95386                                                                (cons
95387                                                                 exp-form_0
95388                                                                 accum_0)))))))))))
95389                                                (loop_1 forms_0 null))))
95390                                          (let ((lifts_0
95391                                                 (begin-unsafe
95392                                                  (box-clear!
95393                                                   (lift-context-lifts
95394                                                    lift-ctx_0)))))
95395                                            (if (null? lifts_0)
95396                                              exp-forms_0
95397                                              (begin
95398                                                (let ((obs_0
95399                                                       (begin-unsafe
95400                                                        (expand-context/inner-observer
95401                                                         (root-expand-context/outer-inner
95402                                                          ctx_0)))))
95403                                                  (if obs_0
95404                                                    (call-expand-observe
95405                                                     obs_0
95406                                                     'module-lift-loop
95407                                                     lifts_0)
95408                                                    (void)))
95409                                                (let ((temp44_0
95410                                                       (begin-unsafe
95411                                                        (expand-context/inner-phase
95412                                                         (root-expand-context/outer-inner
95413                                                          trans-ctx_0)))))
95414                                                  (let ((beg_0
95415                                                         (wrap-lifts-as-begin.1
95416                                                          unsafe-undefined
95417                                                          unsafe-undefined
95418                                                          lifts_0
95419                                                          #f
95420                                                          temp44_0)))
95421                                                    (let ((exprs_0
95422                                                           (reverse$1
95423                                                            (cdr
95424                                                             (reverse$1
95425                                                              (cdr
95426                                                               (syntax-e$1
95427                                                                beg_0)))))))
95428                                                      (append
95429                                                       (loop_0 exprs_0)
95430                                                       exp-forms_0))))))))))))))
95431                               (loop_0 form30_0))))
95432                         (if (begin-unsafe
95433                              (expand-context/inner-to-parsed?
95434                               (root-expand-context/outer-inner ctx_0)))
95435                           (parsed-begin-for-syntax21.1 s_0 all-exp-forms_0)
95436                           (let ((temp46_0
95437                                  (cons begin-for-syntax29_0 all-exp-forms_0)))
95438                             (rebuild.1 #t s_0 temp46_0)))))))))
95439              (args (raise-binding-result-arity-error 3 args)))))))))
95440    (void)))
95441(define effect_2987
95442  (begin
95443    (void
95444     (add-core-form!*
95445      '|#%require|
95446      (lambda (s_0 ctx_0)
95447        (begin
95448          (let ((obs_0
95449                 (begin-unsafe
95450                  (expand-context/inner-observer
95451                   (root-expand-context/outer-inner ctx_0)))))
95452            (if obs_0 (call-expand-observe obs_0 'prim-require s_0) (void)))
95453          (begin
95454            (if (eq?
95455                 (begin-unsafe (expand-context/outer-context ctx_0))
95456                 'top-level)
95457              (void)
95458              (raise-syntax-error$1
95459               #f
95460               "allowed only in a module or the top level"
95461               s_0))
95462            (call-with-values
95463             (lambda ()
95464               (call-with-values
95465                (lambda ()
95466                  (let ((s_1 (if (syntax?$1 s_0) (syntax-e$1 s_0) s_0)))
95467                    (if (pair? s_1)
95468                      (let ((|#%require49_0| (let ((s_2 (car s_1))) s_2)))
95469                        (let ((req50_0
95470                               (let ((s_2 (cdr s_1)))
95471                                 (let ((s_3
95472                                        (if (syntax?$1 s_2)
95473                                          (syntax-e$1 s_2)
95474                                          s_2)))
95475                                   (let ((flat-s_0 (to-syntax-list.1 s_3)))
95476                                     (if (not flat-s_0)
95477                                       (raise-syntax-error$1
95478                                        #f
95479                                        "bad syntax"
95480                                        s_0)
95481                                       flat-s_0))))))
95482                          (let ((|#%require49_1| |#%require49_0|))
95483                            (values |#%require49_1| req50_0))))
95484                      (raise-syntax-error$1 #f "bad syntax" s_0))))
95485                (case-lambda
95486                 ((|#%require47_0| req48_0)
95487                  (values #t |#%require47_0| req48_0))
95488                 (args (raise-binding-result-arity-error 2 args)))))
95489             (case-lambda
95490              ((ok?_0 |#%require47_0| req48_0)
95491               (let ((sc_0 (new-scope 'macro)))
95492                 (let ((ns_0
95493                        (begin-unsafe
95494                         (expand-context/inner-namespace
95495                          (root-expand-context/outer-inner ctx_0)))))
95496                   (begin
95497                     (let ((temp51_0
95498                            (reverse$1
95499                             (begin
95500                               (letrec*
95501                                ((for-loop_0
95502                                  (|#%name|
95503                                   for-loop
95504                                   (lambda (fold-var_0 lst_0)
95505                                     (begin
95506                                       (if (pair? lst_0)
95507                                         (let ((req_0 (unsafe-car lst_0)))
95508                                           (let ((rest_0 (unsafe-cdr lst_0)))
95509                                             (let ((fold-var_1
95510                                                    (let ((fold-var_1
95511                                                           (cons
95512                                                            (add-scope
95513                                                             req_0
95514                                                             sc_0)
95515                                                            fold-var_0)))
95516                                                      (values fold-var_1))))
95517                                               (for-loop_0
95518                                                fold-var_1
95519                                                rest_0))))
95520                                         fold-var_0))))))
95521                                (for-loop_0 null req48_0))))))
95522                       (let ((temp53_0 (namespace-self-mpi/no-top-level ns_0)))
95523                         (let ((temp56_0
95524                                (begin-unsafe
95525                                 (expand-context/inner-phase
95526                                  (root-expand-context/outer-inner ctx_0)))))
95527                           (let ((temp57_0 (make-requires+provides.1 #f #f)))
95528                             (let ((temp56_1 temp56_0)
95529                                   (temp53_1 temp53_0)
95530                                   (temp51_1 temp51_0))
95531                               (parse-and-perform-requires!.1
95532                                #f
95533                                #f
95534                                hash2610
95535                                #t
95536                                unsafe-undefined
95537                                #f
95538                                temp53_1
95539                                #f
95540                                #f
95541                                'require
95542                                temp51_1
95543                                s_0
95544                                ns_0
95545                                temp56_1
95546                                temp57_0))))))
95547                     (if (begin-unsafe
95548                          (expand-context/inner-to-parsed?
95549                           (root-expand-context/outer-inner ctx_0)))
95550                       (parsed-require23.1 s_0)
95551                       s_0)))))
95552              (args (raise-binding-result-arity-error 3 args)))))))))
95553    (void)))
95554(define effect_2881
95555  (begin
95556    (void
95557     (add-core-form!*
95558      '|#%provide|
95559      (lambda (s_0 ctx_0)
95560        (begin
95561          (let ((obs_0
95562                 (begin-unsafe
95563                  (expand-context/inner-observer
95564                   (root-expand-context/outer-inner ctx_0)))))
95565            (if obs_0 (call-expand-observe obs_0 'prim-provide #f) (void)))
95566          (raise-syntax-error$1
95567           #f
95568           "not allowed outside of a module body"
95569           s_0)))))
95570    (void)))
95571(define namespace-init!
95572  (lambda ()
95573    (let ((ns_0 (make-namespace)))
95574      (void
95575       (begin
95576         (declare-core-module! ns_0)
95577         (declare-hash-based-module!.1
95578          ns_0
95579          #f
95580          null
95581          #f
95582          #f
95583          '|#%read|
95584          read-primitives)
95585         (let ((temp7_0 '(current-compile)))
95586           (declare-hash-based-module!.1
95587            ns_0
95588            #f
95589            temp7_0
95590            #f
95591            #f
95592            '|#%main|
95593            main-primitives))
95594         (declare-hash-based-module!.1
95595          ns_0
95596          #f
95597          null
95598          #f
95599          #f
95600          '|#%utils|
95601          utils-primitives)
95602         (let ((temp14_0 '(dynamic-place)))
95603           (declare-hash-based-module!.1
95604            ns_0
95605            #f
95606            temp14_0
95607            #f
95608            #f
95609            '|#%place-struct|
95610            place-struct-primitives))
95611         (declare-hash-based-module!.1
95612          ns_0
95613          #f
95614          null
95615          #f
95616          #f
95617          '|#%boot|
95618          boot-primitives)
95619         (let ((linklet-primitives_0
95620                (hash-remove
95621                 (hash-remove linklet-primitives 'variable-reference?)
95622                 'variable-reference-constant?)))
95623           (begin
95624             (declare-hash-based-module!.1
95625              ns_0
95626              #t
95627              null
95628              #t
95629              #t
95630              '|#%linklet-primitive|
95631              linklet-primitives_0)
95632             (declare-hash-based-module!.1
95633              ns_0
95634              #f
95635              null
95636              #t
95637              #t
95638              '|#%linklet-expander|
95639              linklet-expander-primitives)
95640             (let ((temp30_0
95641                    (list '|#%linklet-primitive| '|#%linklet-expander|)))
95642               (declare-reexporting-module!.1 ns_0 #t '|#%linklet| temp30_0))))
95643         (declare-hash-based-module!.1
95644          ns_0
95645          #f
95646          null
95647          #t
95648          #f
95649          '|#%expobs|
95650          expobs-primitives)
95651         (let ((temp37_0
95652                (begin
95653                  (letrec*
95654                   ((for-loop_0
95655                     (|#%name|
95656                      for-loop
95657                      (lambda (table_0 i_0)
95658                        (begin
95659                          (if i_0
95660                            (let ((name_0
95661                                   (hash-iterate-key main-primitives i_0)))
95662                              (let ((table_1
95663                                     (let ((table_1
95664                                            (call-with-values
95665                                             (lambda () (values name_0 #t))
95666                                             (case-lambda
95667                                              ((key_0 val_0)
95668                                               (hash-set table_0 key_0 val_0))
95669                                              (args
95670                                               (raise-binding-result-arity-error
95671                                                2
95672                                                args))))))
95673                                       (values table_1))))
95674                                (for-loop_0
95675                                 table_1
95676                                 (hash-iterate-next main-primitives i_0))))
95677                            table_0))))))
95678                   (for-loop_0
95679                    hash2725
95680                    (hash-iterate-first main-primitives))))))
95681           (let ((temp38_0
95682                  (begin
95683                    (letrec*
95684                     ((for-loop_0
95685                       (|#%name|
95686                        for-loop
95687                        (lambda (table_0 i_0)
95688                          (begin
95689                            (if i_0
95690                              (let ((name_0
95691                                     (hash-iterate-key read-primitives i_0)))
95692                                (let ((table_1
95693                                       (let ((table_1
95694                                              (call-with-values
95695                                               (lambda () (values name_0 #t))
95696                                               (case-lambda
95697                                                ((key_0 val_0)
95698                                                 (hash-set
95699                                                  table_0
95700                                                  key_0
95701                                                  val_0))
95702                                                (args
95703                                                 (raise-binding-result-arity-error
95704                                                  2
95705                                                  args))))))
95706                                         (values table_1))))
95707                                  (for-loop_0
95708                                   table_1
95709                                   (hash-iterate-next read-primitives i_0))))
95710                              table_0))))))
95711                     (for-loop_0
95712                      hash2725
95713                      (hash-iterate-first read-primitives))))))
95714             (let ((temp37_1 temp37_0))
95715               (declare-kernel-module!.1 temp37_1 temp38_0 ns_0))))
95716         (begin
95717           (begin
95718             (letrec*
95719              ((for-loop_0
95720                (|#%name|
95721                 for-loop
95722                 (lambda (lst_0)
95723                   (begin
95724                     (if (pair? lst_0)
95725                       (let ((name_0 (unsafe-car lst_0)))
95726                         (let ((rest_0 (unsafe-cdr lst_0)))
95727                           (call-with-values
95728                            (lambda ()
95729                              (if (eq? name_0 '|#%kernel|)
95730                                (values)
95731                                (begin
95732                                  (let ((or-part_0 (eq? name_0 '|#%foreign|)))
95733                                    (let ((temp41_0
95734                                           (if or-part_0
95735                                             or-part_0
95736                                             (let ((or-part_1
95737                                                    (eq? name_0 '|#%futures|)))
95738                                               (if or-part_1
95739                                                 or-part_1
95740                                                 (eq? name_0 '|#%unsafe|))))))
95741                                      (copy-runtime-module!.1
95742                                       hash2610
95743                                       hash2610
95744                                       ns_0
95745                                       #t
95746                                       temp41_0
95747                                       unsafe-undefined
95748                                       unsafe-undefined
95749                                       name_0)))
95750                                  (values))))
95751                            (case-lambda
95752                             (() (for-loop_0 rest_0))
95753                             (args
95754                              (raise-binding-result-arity-error 0 args))))))
95755                       (values)))))))
95756              (for-loop_0 runtime-instances)))
95757           (void))
95758         (let ((temp43_0
95759                (list*
95760                 '|#%place-struct|
95761                 '|#%utils|
95762                 '|#%boot|
95763                 '|#%expobs|
95764                 '|#%linklet|
95765                 runtime-instances)))
95766           (declare-reexporting-module!.1 ns_0 #f '|#%builtin| temp43_0))
95767         (1/current-namespace ns_0)
95768         (1/dynamic-require ''|#%kernel| 0))))))
95769(define effect_2375
95770  (begin
95771    (|#%call-with-values| (lambda () (namespace-init!)) print-values)
95772    (void)))
95773(define effect_2254
95774  (begin
95775    (|#%call-with-values|
95776     (lambda () (install-error-syntax->string-handler!))
95777     print-values)
95778    (void)))
95779(define datum->kernel-syntax (lambda (s_0) (1/datum->syntax core-stx s_0)))
95780(define expander-place-init!
95781  (lambda ()
95782    (begin
95783      (syntax-place-init!)
95784      (scope-place-init!)
95785      (cache-place-init!)
95786      (core-place-init!)
95787      (phase+space-place-init!)
95788      (module-path-place-init!)
95789      (module-cache-place-init!)
95790      (shadow-directory-place-init!)
95791      (collection-place-init!)
95792      (performance-place-init!)
95793      (namespace-init!)
95794      (install-error-syntax->string-handler!))))
95795